static string dump_dir(OPERAND op) { switch ((OP_SIZE)op.size) { case OP_SIZE.OPERAND_SIZE_32: return op.value.far_addr.far_addr32.seg.ToString("X") + ":" + op.value.far_addr.far_addr32.offset.ToString("X"); case OP_SIZE.OPERAND_SIZE_48: return op.value.far_addr.far_addr48.seg.ToString("X") + ":" + op.value.far_addr.far_addr48.offset.ToString("X"); default: return "internal error"; } }
static string dump_imm(OPERAND op) { return "0x"+op.value.imm.imm64.ToString("X"); }
static string dump_addr(INSTRUCTION instr, OPERAND op) { string res = "["; if ((op.value.addr.mod & ADDR_MOD_BASE)!=0) { res += dump_reg_gen(op.value.addr.bas, instr.addrsize); } if ((op.value.addr.mod & ADDR_MOD_IDX)!=0) { if ((op.value.addr.mod & ADDR_MOD_BASE)!=0) { res += "+"; } res += dump_reg_gen(op.value.addr.index, instr.addrsize); if (op.value.addr.scale != 0x1) { res += '*' + op.value.addr.scale.ToString("X"); } } if ((op.value.addr.mod & ADDR_MOD_DISP)!=0) { if ((op.value.addr.mod & ~ADDR_MOD_DISP)!=0) { res += '+'; } res += "0x"+instr.disp.value.d64.ToString("X"); } res += ']'; return res; }