Add encoding field to cs_x86 in python bindings for consistency (#1834)

This commit is contained in:
David Pfeiffer 2022-01-27 21:21:39 -05:00 committed by GitHub
parent a6bde52312
commit 443cae28a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 12 deletions

View File

@ -679,7 +679,7 @@ class CsInsn(object):
self.modrm, self.sib, self.disp, \
self.sib_index, self.sib_scale, self.sib_base, self.xop_cc, self.sse_cc, \
self.avx_cc, self.avx_sae, self.avx_rm, self.eflags, \
self.modrm_offset, self.disp_offset, self.disp_size, self.imm_offset, self.imm_size, \
self.encoding, self.modrm_offset, self.disp_offset, self.disp_size, self.imm_offset, self.imm_size, \
self.operands) = x86.get_arch_info(self._raw.detail.contents.arch.x86)
elif arch == CS_ARCH_M68K:
(self.operands, self.op_size) = m68k.get_arch_info(self._raw.detail.contents.arch.m68k)

View File

@ -80,6 +80,6 @@ def get_arch_info(a):
return (a.prefix[:], a.opcode[:], a.rex, a.addr_size, \
a.modrm, a.sib, a.disp, a.sib_index, a.sib_scale, \
a.sib_base, a.xop_cc, a.sse_cc, a.avx_cc, a.avx_sae, a.avx_rm, a.eflags, \
a.encoding.modrm_offset, a.encoding.disp_offset, a.encoding.disp_size, a.encoding.imm_offset, a.encoding.imm_size, \
a.encoding, a.encoding.modrm_offset, a.encoding.disp_offset, a.encoding.disp_size, a.encoding.imm_offset, a.encoding.imm_size, \
copy_ctypes_list(a.operands[:a.op_count]))

View File

@ -146,19 +146,19 @@ def print_insn_detail(mode, insn):
print("\tmodrm: 0x%x" % (insn.modrm))
# print modRM offset
if insn.modrm_offset != 0:
print("\tmodrm_offset: 0x%x" % (insn.modrm_offset))
if insn.encoding.modrm_offset != 0:
print("\tmodrm_offset: 0x%x" % (insn.encoding.modrm_offset))
# print displacement value
print("\tdisp: 0x%s" % to_x_32(insn.disp))
# print displacement offset (offset into instruction bytes)
if insn.disp_offset != 0:
print("\tdisp_offset: 0x%x" % (insn.disp_offset))
if insn.encoding.disp_offset != 0:
print("\tdisp_offset: 0x%x" % (insn.encoding.disp_offset))
# print displacement size
if insn.disp_size != 0:
print("\tdisp_size: 0x%x" % (insn.disp_size))
if insn.encoding.disp_size != 0:
print("\tdisp_size: 0x%x" % (insn.encoding.disp_size))
# SIB is not available in 16-bit mode
if (mode & CS_MODE_16 == 0):
@ -198,10 +198,10 @@ def print_insn_detail(mode, insn):
for i in range(count):
op = insn.op_find(X86_OP_IMM, i + 1)
print("\t\timms[%u]: 0x%s" % (i + 1, to_x(op.imm)))
if insn.imm_offset != 0:
print("\timm_offset: 0x%x" % (insn.imm_offset))
if insn.imm_size != 0:
print("\timm_size: 0x%x" % (insn.imm_size))
if insn.encoding.imm_offset != 0:
print("\timm_offset: 0x%x" % (insn.encoding.imm_offset))
if insn.encoding.imm_size != 0:
print("\timm_size: 0x%x" % (insn.encoding.imm_size))
if len(insn.operands) > 0:
print("\top_count: %u" % len(insn.operands))