PrintDebug("Number of operands: %d\n", instr->num_operands);
+ PrintDebug("INSTR length: %d\n", instr->instr_length);
// set first operand
if (instr->num_operands >= 1) {
}
instr->first_operand.type = REG_OPERAND;
- PrintDebug("xed_reg=0x%x, cr0=0x%x\n", instr->first_operand.operand, &(info->ctrl_regs.cr0));
+ PrintDebug("First Operand: xed_reg=0x%x\n", instr->first_operand.operand);
} else {
PrintError("Unhandled first operand type %s\n", xed_operand_type_enum_t2str(op_type));
}
instr->second_operand.type = REG_OPERAND;
- PrintDebug("xed_reg=0x%x, eax=0x%x\n", instr->second_operand.operand, &(info->vm_regs.rax));
-
+
+ PrintDebug("Second Operand: xed_reg=0x%x\n", instr->second_operand.operand);
} else {
PrintError("Unhandled second operand type %s\n", xed_operand_type_enum_t2str(op_type));
return -1;
return -1;
}
instr->third_operand.type = REG_OPERAND;
+
+ PrintDebug("Third Operand: xed_reg=0x%x\n", instr->third_operand.operand);
} else {
PrintError("Unhandled third operand type %s\n", xed_operand_type_enum_t2str(op_type));
return -1;
*opcode = (addr_t)&V3_OPCODE_MOV2CR;
break;
+
+ case XED_IFORM_LMSW_GPR16:
+ *opcode = (addr_t)&V3_OPCODE_LMSW;
+ break;
+
+ case XED_IFORM_CLTS:
+ *opcode = (addr_t)&V3_OPCODE_CLTS;
+ break;
+
default:
*opcode = 0;
return -1;