}
- /*
- Segments should be ignored
- // get appropriate segment
- if (instr->prefixes.cs_override) {
- seg = &(core->segments.cs);
- } else if (instr->prefixes.es_override) {
- seg = &(core->segments.es);
- } else if (instr->prefixes.ss_override) {
- seg = &(core->segments.ss);
- } else if (instr->prefixes.fs_override) {
- seg = &(core->segments.fs);
- } else if (instr->prefixes.gs_override) {
- seg = &(core->segments.gs);
- } else {
- seg = &(core->segments.ds);
- }
- */
+
+ //Segments should be ignored
+ // get appropriate segment
+
+ if (instr->prefixes.cs_override) {
+ seg = &(core->segments.cs);
+ } else if (instr->prefixes.es_override) {
+ seg = &(core->segments.es);
+ } else if (instr->prefixes.ss_override) {
+ seg = &(core->segments.ss);
+ } else if (instr->prefixes.fs_override) {
+ seg = &(core->segments.fs);
+ } else if (instr->prefixes.gs_override) {
+ seg = &(core->segments.gs);
+ } else {
+ seg = &(core->segments.ds);
+ }
+
operand->operand = ADDR_MASK(get_addr_linear(core, base_addr, seg),
get_addr_width(core, instr));
case REAL:
return decode_rm_operand16(core, instr_ptr, instr, operand, reg_code);
case LONG:
- if (instr->prefixes.rex_op_size) {
+ if (instr->prefixes.rex) {
return decode_rm_operand64(core, instr_ptr, instr, operand, reg_code);
}
case PROTECTED: