v3_op = &(instr->dst_operand);
- V3_Print("Operand 0 mode: %s\n", xed_operand_action_enum_t2str(op->_rw));
-
-
- if ((op->_rw == XED_OPERAND_ACTION_RW) ||
- (op->_rw == XED_OPERAND_ACTION_R)||
- (op->_rw == XED_OPERAND_ACTION_RCW)) {
- v3_op->read = 1;
- }
-
- if ((op->_rw == XED_OPERAND_ACTION_RW) ||
- (op->_rw == XED_OPERAND_ACTION_W) ||
- (op->_rw == XED_OPERAND_ACTION_CRW)) {
- v3_op->write = 1;
- }
-
if (xed_operand_is_register(op_enum)) {
xed_reg_enum_t xed_reg = xed_decoded_inst_get_reg(&xed_instr, op_enum);
int v3_reg_type = xed_reg_to_v3_reg(info,
return -1;
}
}
+
+ V3_Print("Operand 0 mode: %s\n", xed_operand_action_enum_t2str(xed_operand_rw(op)));
+
+
+ if (xed_operand_read(op)) {
+ v3_op->read = 1;
+ }
+
+ if (xed_operand_written(op)) {
+ v3_op->write = 1;
+ }
+
}
// set second operand
*/
v3_op = &(instr->src_operand);
- V3_Print("Operand 1 mode: %s\n", xed_operand_action_enum_t2str(op->_rw));
-
- if ((op->_rw == XED_OPERAND_ACTION_RW) ||
- (op->_rw == XED_OPERAND_ACTION_R)||
- (op->_rw == XED_OPERAND_ACTION_RCW)) {
- v3_op->read = 1;
- }
-
- if ((op->_rw == XED_OPERAND_ACTION_RW) ||
- (op->_rw == XED_OPERAND_ACTION_W) ||
- (op->_rw == XED_OPERAND_ACTION_CRW)) {
- v3_op->write = 1;
- }
if (xed_operand_is_register(op_enum)) {
xed_reg_enum_t xed_reg = xed_decoded_inst_get_reg(&xed_instr, op_enum);
return -1;
}
}
+
+ V3_Print("Operand 1 mode: %s\n", xed_operand_action_enum_t2str(xed_operand_rw(op)));
+
+ if (xed_operand_read(op)) {
+ v3_op->read = 1;
+ }
+
+ if (xed_operand_written(op)) {
+ v3_op->write = 1;
+ }
+
}
// set third operand
xed_operand_type_enum_t op_type = xed_operand_type(op);
xed_operand_enum_t op_enum = xed_operand_name(op);
- V3_Print("Operand 3 mode: %s\n", xed_operand_action_enum_t2str(op->_rw));
- if ((op->_rw == XED_OPERAND_ACTION_RW) ||
- (op->_rw == XED_OPERAND_ACTION_R)||
- (op->_rw == XED_OPERAND_ACTION_RCW)) {
- instr->third_operand.read = 1;
- }
-
- if ((op->_rw == XED_OPERAND_ACTION_RW) ||
- (op->_rw == XED_OPERAND_ACTION_W) ||
- (op->_rw == XED_OPERAND_ACTION_CRW)) {
- instr->third_operand.write = 1;
- }
-
if (xed_operand_is_register(op_enum)) {
xed_reg_enum_t xed_reg = xed_decoded_inst_get_reg(&xed_instr, op_enum);
int v3_reg_type = xed_reg_to_v3_reg(info,
instr->third_operand.type = REG_OPERAND;
+ PrintDebug("Operand 3 mode: %s\n", xed_operand_action_enum_t2str(xed_operand_rw(op)));
+
+
+ if (xed_operand_read(op)) {
+ instr->third_operand.read = 1;
+ }
+
+ if (xed_operand_written(op)) {
+ instr->third_operand.write = 1;
+ }
+
} else {
PrintError("Unhandled third operand type %s\n", xed_operand_type_enum_t2str(op_type));
instr->num_operands = 2;