6755 lines
234 KiB
YAML
6755 lines
234 KiB
YAML
test_cases:
|
|
-
|
|
input:
|
|
bytes: [0x8d, 0x4c, 0x32, 0x08, 0x01, 0xd8, 0x81, 0xc6, 0x34, 0x12, 0x00, 0x00, 0x05, 0x23, 0x01, 0x00, 0x00, 0x36, 0x8b, 0x84, 0x91, 0x23, 0x01, 0x00, 0x00, 0x41, 0x8d, 0x84, 0x39, 0x89, 0x67, 0x00, 0x00, 0x8d, 0x87, 0x89, 0x67, 0x00, 0x00, 0xb4, 0xc6, 0x66, 0xe9, 0xb8, 0x00, 0x00, 0x00, 0x67, 0xff, 0xa0, 0x23, 0x01, 0x00, 0x00, 0x66, 0xe8, 0xcb, 0x00, 0x00, 0x00, 0x74, 0xfc, ]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
address: 0x1000
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "lea cx, [si + 0x32]"
|
|
size: 3
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8d, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x4c
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x32
|
|
enc_disp_offset: 0x2
|
|
enc_disp_size: 0x1
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: cx
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: si
|
|
mem_disp: 0x32
|
|
size: 2
|
|
access: CS_AC_READ
|
|
regs_read: [ si ]
|
|
regs_write: [ cx ]
|
|
-
|
|
asm_text: "or byte ptr [bx + di], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x08, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x1
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: di
|
|
size: 1
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_REG
|
|
reg: al
|
|
size: 1
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_RESET_OF, X86_EFLAGS_RESET_CF, X86_EFLAGS_UNDEFINED_AF ]
|
|
regs_read: [ bx, di, al ]
|
|
regs_write: [ flags ]
|
|
-
|
|
asm_text: "fadd dword ptr [bx + di + 0x34c6]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd8, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x81
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x34c6
|
|
enc_disp_offset: 0x2
|
|
enc_disp_size: 0x2
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: di
|
|
mem_disp: 0x34c6
|
|
size: 4
|
|
access: CS_AC_READ
|
|
fpu_flags: [ X86_FPU_FLAGS_MODIFY_C1, X86_FPU_FLAGS_UNDEFINED_C0, X86_FPU_FLAGS_UNDEFINED_C2, X86_FPU_FLAGS_UNDEFINED_C3]
|
|
regs_read: [ bx, di ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "adc al, byte ptr [bx + si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x12, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: al
|
|
size: 1
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: si
|
|
size: 1
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ flags, al, bx, si ]
|
|
regs_write: [ flags, al ]
|
|
-
|
|
asm_text: "add byte ptr [di], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x00, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x5
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: di
|
|
size: 1
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_REG
|
|
reg: al
|
|
size: 1
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ di, al ]
|
|
regs_write: [ flags ]
|
|
-
|
|
asm_text: "and ax, word ptr [bx + di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x23, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x1
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ax
|
|
size: 2
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: di
|
|
size: 2
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_RESET_OF, X86_EFLAGS_RESET_CF, X86_EFLAGS_UNDEFINED_AF ]
|
|
regs_read: [ ax, bx, di ]
|
|
regs_write: [ flags, ax ]
|
|
-
|
|
asm_text: "add byte ptr [bx + si], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x00, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: si
|
|
size: 1
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_REG
|
|
reg: al
|
|
size: 1
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ bx, si, al ]
|
|
regs_write: [ flags ]
|
|
-
|
|
asm_text: "mov ax, word ptr ss:[si + 0x2391]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_SS, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8b, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x84
|
|
enc_modrm_offset: 0x2
|
|
disp: 0x2391
|
|
enc_disp_offset: 0x3
|
|
enc_disp_size: 0x2
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ax
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_segment: ss
|
|
mem_base: si
|
|
mem_disp: 0x2391
|
|
size: 2
|
|
access: CS_AC_READ
|
|
regs_read: [ ss, si ]
|
|
regs_write: [ ax ]
|
|
-
|
|
asm_text: "add word ptr [bx + si], ax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x01, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: si
|
|
size: 2
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ax
|
|
size: 2
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ bx, si, ax ]
|
|
regs_write: [ flags ]
|
|
-
|
|
asm_text: "add byte ptr [bx + di - 0x73], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x00, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x41
|
|
enc_modrm_offset: 0x1
|
|
disp: -0x73
|
|
enc_disp_offset: 0x2
|
|
enc_disp_size: 0x1
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: di
|
|
mem_disp: -0x73
|
|
size: 1
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_REG
|
|
reg: al
|
|
size: 1
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ bx, di, al ]
|
|
regs_write: [ flags ]
|
|
-
|
|
asm_text: "test byte ptr [bx + di], bh"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x84, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x39
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: di
|
|
size: 1
|
|
-
|
|
type: X86_OP_REG
|
|
reg: bh
|
|
size: 1
|
|
regs_read: [ bx, di ]
|
|
-
|
|
asm_text: "mov word ptr [bx], sp"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x89, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x67
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
enc_disp_offset: 0x2
|
|
enc_disp_size: 0x1
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
-
|
|
type: X86_OP_REG
|
|
reg: sp
|
|
size: 2
|
|
access: CS_AC_READ
|
|
regs_read: [ bx, sp ]
|
|
-
|
|
asm_text: "add byte ptr [di - 0x7679], cl"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x00, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x8d
|
|
enc_modrm_offset: 0x1
|
|
disp: -0x7679
|
|
enc_disp_offset: 0x2
|
|
enc_disp_size: 0x2
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: di
|
|
mem_disp: -0x7679
|
|
size: 1
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_REG
|
|
reg: cl
|
|
size: 1
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ di, cl ]
|
|
regs_write: [ flags ]
|
|
-
|
|
asm_text: "add byte ptr [eax], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_ADDRSIZE ]
|
|
opcode: [ 0x00, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
enc_modrm_offset: 0x2
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: eax
|
|
size: 1
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_REG
|
|
reg: al
|
|
size: 1
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ eax, al ]
|
|
regs_write: [ flags ]
|
|
-
|
|
asm_text: "mov ah, 0xc6"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xb4, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ah
|
|
size: 1
|
|
access: CS_AC_WRITE
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0xc6
|
|
size: 1
|
|
regs_write: [ ah ]
|
|
-
|
|
asm_text: "jmp 0x10e7"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
|
|
opcode: [ 0xe9, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x10e7
|
|
size: 4
|
|
-
|
|
asm_text: "jmp word ptr [eax + 0x123]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_ADDRSIZE ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0xa0
|
|
enc_modrm_offset: 0x2
|
|
disp: 0x123
|
|
enc_disp_offset: 0x3
|
|
enc_disp_size: 0x4
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: eax
|
|
mem_disp: 0x123
|
|
size: 2
|
|
access: CS_AC_READ
|
|
regs_read: [ eax ]
|
|
-
|
|
asm_text: "call 0x1107"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1107
|
|
size: 4
|
|
regs_read: [ esp, eip ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "je 0x103a"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x74, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x103a
|
|
size: 2
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
input:
|
|
bytes: [0x8d, 0x4c, 0x32, 0x08, 0x01, 0xd8, 0x81, 0xc6, 0x34, 0x12, 0x00, 0x00, 0x05, 0x23, 0x01, 0x00, 0x00, 0x36, 0x8b, 0x84, 0x91, 0x23, 0x01, 0x00, 0x00, 0x41, 0x8d, 0x84, 0x39, 0x89, 0x67, 0x00, 0x00, 0x8d, 0x87, 0x89, 0x67, 0x00, 0x00, 0xb4, 0xc6, 0xe9, 0xea, 0xbe, 0xad, 0xde, 0xff, 0xa0, 0x23, 0x01, 0x00, 0x00, 0xe8, 0xdf, 0xbe, 0xad, 0xde, 0x74, 0xff, ]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32, CS_OPT_SYNTAX_ATT ]
|
|
address: 0x1000
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "leal 8(%edx, %esi), %ecx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8d, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x4c
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x8
|
|
enc_disp_offset: 0x3
|
|
enc_disp_size: 0x1
|
|
sib: 0x32
|
|
sib_base: edx
|
|
sib_index: esi
|
|
sib_scale: 1
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: edx
|
|
mem_index: esi
|
|
mem_disp: 0x8
|
|
size: 4
|
|
access: CS_AC_READ
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ecx
|
|
size: 4
|
|
access: CS_AC_WRITE
|
|
regs_read: [ edx, esi ]
|
|
regs_write: [ ecx ]
|
|
-
|
|
asm_text: "addl %ebx, %eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x01, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0xd8
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ebx
|
|
size: 4
|
|
access: CS_AC_READ
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_READ_WRITE
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ ebx, eax ]
|
|
regs_write: [ eflags, eax ]
|
|
-
|
|
asm_text: "addl $0x1234, %esi"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x81, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0xc6
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
size: 4
|
|
-
|
|
type: X86_OP_REG
|
|
reg: esi
|
|
size: 4
|
|
access: CS_AC_READ_WRITE
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ esi ]
|
|
regs_write: [ eflags, esi ]
|
|
-
|
|
asm_text: "addl $0x123, %eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x05, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x123
|
|
size: 4
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_READ_WRITE
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ eax ]
|
|
regs_write: [ eflags, eax ]
|
|
-
|
|
asm_text: "movl %ss:0x123(%ecx, %edx, 4), %eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_SS, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8b, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x84
|
|
enc_modrm_offset: 0x2
|
|
disp: 0x123
|
|
enc_disp_offset: 0x4
|
|
enc_disp_size: 0x4
|
|
sib: 0x91
|
|
sib_base: ecx
|
|
sib_index: edx
|
|
sib_scale: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_segment: ss
|
|
mem_base: ecx
|
|
mem_index: edx
|
|
mem_scale: 4
|
|
mem_disp: 0x123
|
|
size: 4
|
|
access: CS_AC_READ
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_WRITE
|
|
regs_read: [ ss, ecx, edx ]
|
|
regs_write: [ eax ]
|
|
-
|
|
asm_text: "incl %ecx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x41, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ecx
|
|
size: 4
|
|
access: CS_AC_READ_WRITE
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ ecx ]
|
|
regs_write: [ eflags, ecx ]
|
|
-
|
|
asm_text: "leal 0x6789(%ecx, %edi), %eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8d, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x84
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x6789
|
|
enc_disp_offset: 0x3
|
|
enc_disp_size: 0x4
|
|
sib: 0x39
|
|
sib_base: ecx
|
|
sib_index: edi
|
|
sib_scale: 1
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: ecx
|
|
mem_index: edi
|
|
mem_disp: 0x6789
|
|
size: 4
|
|
access: CS_AC_READ
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_WRITE
|
|
regs_read: [ ecx, edi ]
|
|
regs_write: [ eax ]
|
|
-
|
|
asm_text: "leal 0x6789(%edi), %eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8d, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x87
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x6789
|
|
enc_disp_offset: 0x2
|
|
enc_disp_size: 0x4
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: edi
|
|
mem_disp: 0x6789
|
|
size: 4
|
|
access: CS_AC_READ
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_WRITE
|
|
regs_read: [ edi ]
|
|
regs_write: [ eax ]
|
|
-
|
|
asm_text: "movb $0xc6, %ah"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xb4, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0xc6
|
|
size: 1
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ah
|
|
size: 1
|
|
access: CS_AC_WRITE
|
|
regs_write: [ ah ]
|
|
-
|
|
asm_text: "jmp 0xdeadcf18"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe9, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0xdeadcf18
|
|
size: 4
|
|
-
|
|
asm_text: "jmpl *0x123(%eax)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0xa0
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x123
|
|
enc_disp_offset: 0x2
|
|
enc_disp_size: 0x4
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: eax
|
|
mem_disp: 0x123
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ eax ]
|
|
-
|
|
asm_text: "calll 0xdeadcf18"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0xdeadcf18
|
|
size: 4
|
|
regs_read: [ esp, eip ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "je 0x103a"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x74, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x103a
|
|
size: 4
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
input:
|
|
bytes: [0x8d, 0x4c, 0x32, 0x08, 0x01, 0xd8, 0x81, 0xc6, 0x34, 0x12, 0x00, 0x00, 0x05, 0x23, 0x01, 0x00, 0x00, 0x36, 0x8b, 0x84, 0x91, 0x23, 0x01, 0x00, 0x00, 0x41, 0x8d, 0x84, 0x39, 0x89, 0x67, 0x00, 0x00, 0x8d, 0x87, 0x89, 0x67, 0x00, 0x00, 0xb4, 0xc6, 0xe9, 0xea, 0xbe, 0xad, 0xde, 0xff, 0xa0, 0x23, 0x01, 0x00, 0x00, 0xe8, 0xdf, 0xbe, 0xad, 0xde, 0x74, 0xff, ]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
address: 0x1000
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "lea ecx, [edx + esi + 8]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8d, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x4c
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x8
|
|
enc_disp_offset: 0x3
|
|
enc_disp_size: 0x1
|
|
sib: 0x32
|
|
sib_base: edx
|
|
sib_index: esi
|
|
sib_scale: 1
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ecx
|
|
size: 4
|
|
access: CS_AC_WRITE
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: edx
|
|
mem_index: esi
|
|
mem_disp: 0x8
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ edx, esi ]
|
|
regs_write: [ ecx ]
|
|
-
|
|
asm_text: "add eax, ebx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x01, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0xd8
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ebx
|
|
size: 4
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ eax, ebx ]
|
|
regs_write: [ eflags, eax ]
|
|
-
|
|
asm_text: "add esi, 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x81, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0xc6
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: esi
|
|
size: 4
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
size: 4
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ esi ]
|
|
regs_write: [ eflags, esi ]
|
|
-
|
|
asm_text: "add eax, 0x123"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x05, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_READ_WRITE
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x123
|
|
size: 4
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ eax ]
|
|
regs_write: [ eflags, eax ]
|
|
-
|
|
asm_text: "mov eax, dword ptr ss:[ecx + edx*4 + 0x123]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_SS, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8b, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x84
|
|
enc_modrm_offset: 0x2
|
|
disp: 0x123
|
|
enc_disp_offset: 0x4
|
|
enc_disp_size: 0x4
|
|
sib: 0x91
|
|
sib_base: ecx
|
|
sib_index: edx
|
|
sib_scale: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_WRITE
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_segment: ss
|
|
mem_base: ecx
|
|
mem_index: edx
|
|
mem_scale: 4
|
|
mem_disp: 0x123
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ ss, ecx, edx ]
|
|
regs_write: [ eax ]
|
|
-
|
|
asm_text: "inc ecx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x41, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ecx
|
|
size: 4
|
|
access: CS_AC_READ_WRITE
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
|
|
regs_read: [ ecx ]
|
|
regs_write: [ eflags, ecx ]
|
|
-
|
|
asm_text: "lea eax, [ecx + edi + 0x6789]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8d, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x84
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x6789
|
|
enc_disp_offset: 0x3
|
|
enc_disp_size: 0x4
|
|
sib: 0x39
|
|
sib_base: ecx
|
|
sib_index: edi
|
|
sib_scale: 1
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_WRITE
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: ecx
|
|
mem_index: edi
|
|
mem_disp: 0x6789
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ ecx, edi ]
|
|
regs_write: [ eax ]
|
|
-
|
|
asm_text: "lea eax, [edi + 0x6789]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8d, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x87
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x6789
|
|
enc_disp_offset: 0x2
|
|
enc_disp_size: 0x4
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_WRITE
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: edi
|
|
mem_disp: 0x6789
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ edi ]
|
|
regs_write: [ eax ]
|
|
-
|
|
asm_text: "mov ah, 0xc6"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xb4, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ah
|
|
size: 1
|
|
access: CS_AC_WRITE
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0xc6
|
|
size: 1
|
|
regs_write: [ ah ]
|
|
-
|
|
asm_text: "jmp 0xdeadcf18"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe9, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0xdeadcf18
|
|
size: 4
|
|
-
|
|
asm_text: "jmp dword ptr [eax + 0x123]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0xa0
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x123
|
|
enc_disp_offset: 0x2
|
|
enc_disp_size: 0x4
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: eax
|
|
mem_disp: 0x123
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ eax ]
|
|
-
|
|
asm_text: "call 0xdeadcf18"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0xdeadcf18
|
|
size: 4
|
|
regs_read: [ esp, eip ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "je 0x103a"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x74, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x103a
|
|
size: 4
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
input:
|
|
bytes: [0x55, 0x48, 0x8b, 0x05, 0xb8, 0x13, 0x00, 0x00, 0xe9, 0xea, 0xbe, 0xad, 0xde, 0xff, 0x25, 0x23, 0x01, 0x00, 0x00, 0xe8, 0xdf, 0xbe, 0xad, 0xde, 0x74, 0xff, ]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
address: 0x1000
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "push rbp"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x55, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 8
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: rbp
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ rsp, rbp ]
|
|
regs_write: [ rsp ]
|
|
-
|
|
asm_text: "mov rax, qword ptr [rip + 0x13b8]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x8b, 0x00, 0x00, 0x00 ]
|
|
rex: 0x48
|
|
addr_size: 8
|
|
modrm: 0x5
|
|
enc_modrm_offset: 0x2
|
|
disp: 0x13b8
|
|
enc_disp_offset: 0x3
|
|
enc_disp_size: 0x4
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: rax
|
|
size: 8
|
|
access: CS_AC_WRITE
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rip
|
|
mem_disp: 0x13b8
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ rip ]
|
|
regs_write: [ rax ]
|
|
-
|
|
asm_text: "jmp 0xffffffffdeadcef7"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe9, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 8
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: -0x21523109
|
|
size: 8
|
|
-
|
|
asm_text: "jmp qword ptr [rip + 0x123]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 8
|
|
modrm: 0x25
|
|
enc_modrm_offset: 0x1
|
|
disp: 0x123
|
|
enc_disp_offset: 0x2
|
|
enc_disp_size: 0x4
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rip
|
|
mem_disp: 0x123
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ rip ]
|
|
-
|
|
asm_text: "call 0xffffffffdeadcef7"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 8
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: -0x21523109
|
|
size: 8
|
|
regs_read: [ rsp, rip ]
|
|
regs_write: [ rsp, rip ]
|
|
-
|
|
asm_text: "je 0x1019"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x74, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 8
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1019
|
|
size: 8
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
input:
|
|
bytes: [ 0x66, 0x45, 0x0f, 0x2f, 0x38 ]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "comisd xmm15, qword ptr [r8]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x2f, 0x00, 0x00 ]
|
|
rex: 0x45
|
|
addr_size: 8
|
|
modrm: 0x38
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: xmm15
|
|
size: 16
|
|
access: CS_AC_READ
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: r8
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ xmm15, r8 ]
|
|
regs_write: [ rflags ]
|
|
-
|
|
input:
|
|
bytes: [0x58, 0x1f, 0x07, 0x0f, 0xa1, 0x0f, 0xa9, 0x17]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "pop ax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x58, 0x0, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ax
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ sp ]
|
|
regs_write: [ sp, ax ]
|
|
-
|
|
asm_text: "pop ds"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x1f, 0x0, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ds
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ sp ]
|
|
regs_write: [ sp, ds ]
|
|
-
|
|
asm_text: "pop es"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x07, 0x0, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: es
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ sp ]
|
|
regs_write: [ sp, es ]
|
|
-
|
|
asm_text: "pop fs"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xa1, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: fs
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ sp ]
|
|
regs_write: [ sp, fs ]
|
|
-
|
|
asm_text: "pop gs"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xa9, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: gs
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ sp ]
|
|
regs_write: [ sp, gs ]
|
|
-
|
|
asm_text: "pop ss"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x17, 0x0, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 2
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ss
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ sp ]
|
|
regs_write: [ sp, ss ]
|
|
-
|
|
input:
|
|
bytes: [0x66, 0x58, 0x58, 0x1f, 0x07, 0x0f, 0xa1, 0x0f, 0xa9, 0x17]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "pop ax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
|
|
opcode: [ 0x58, 0x00, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ax
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ sp ]
|
|
regs_write: [ sp, ax ]
|
|
-
|
|
asm_text: "pop eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x58, 0x0, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_WRITE
|
|
regs_read: [ esp ]
|
|
regs_write: [ esp, eax ]
|
|
-
|
|
asm_text: "pop ds"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x1f, 0x0, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ds
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ esp ]
|
|
regs_write: [ esp, ds ]
|
|
-
|
|
asm_text: "pop es"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x07, 0x0, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: es
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ esp ]
|
|
regs_write: [ esp, es ]
|
|
-
|
|
asm_text: "pop fs"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xa1, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: fs
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ esp ]
|
|
regs_write: [ esp, fs ]
|
|
-
|
|
asm_text: "pop gs"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xa9, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: gs
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ esp ]
|
|
regs_write: [ esp, gs ]
|
|
-
|
|
asm_text: "pop ss"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x17, 0x0, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 4
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ss
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ esp ]
|
|
regs_write: [ esp, ss ]
|
|
-
|
|
input:
|
|
bytes: [0x58, 0x0f, 0xa1, 0x0f, 0xa9]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "pop rax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x58, 0x0, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 8
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: rax
|
|
size: 8
|
|
access: CS_AC_WRITE
|
|
regs_read: [ rsp ]
|
|
regs_write: [ rsp, rax ]
|
|
-
|
|
asm_text: "pop fs"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xa1, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 8
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: fs
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ rsp ]
|
|
regs_write: [ rsp, fs ]
|
|
-
|
|
asm_text: "pop gs"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xa9, 0x00, 0x00 ]
|
|
rex: 0x0
|
|
addr_size: 8
|
|
modrm: 0x0
|
|
disp: 0x0
|
|
sib: 0x0
|
|
sib_scale: 0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: gs
|
|
size: 2
|
|
access: CS_AC_WRITE
|
|
regs_read: [ rsp ]
|
|
regs_write: [ rsp, gs ]
|
|
-
|
|
input:
|
|
bytes: [
|
|
0xe8, 0x31, 0x12, # call 0x1234
|
|
0x66, 0xe8, 0x2b, 0x12, 0x00, 0x00, # call 0x1234 w/ size override
|
|
0xff, 0xd0, # call ax
|
|
0xff, 0x10, # call word ptr [bx + si]
|
|
0xff, 0x50, 0x12, # call word ptr [bx + si + 0x12]
|
|
0xff, 0x90, 0x34, 0x12, # call word ptr [bx + si + 0x1234]
|
|
0x9a, 0x34, 0x12, 0x78, 0x56, # lcall 0x5678, 0x1234
|
|
0xff, 0x18, # lcall [bx+si]
|
|
0xff, 0x58, 0x12, # lcall [bx+si + 0x12]
|
|
0xff, 0x98, 0x34, 0x12, # lcall [bx+si + 0x1234]
|
|
0x65, 0x66, 0xff, 0x1e, 0x10, 0x00 # call ptr gs:[0x10]
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "call 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
size: 2
|
|
regs_read: [ esp, eip ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
size: 4
|
|
regs_read: [ esp, eip ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call ax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
modrm: 0xd0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: ax
|
|
size: 2
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, ax ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call word ptr [bx + si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
modrm: 0x10
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: si
|
|
mem_disp: 0x0
|
|
size: 2
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, bx, si ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call word ptr [bx + si + 0x12]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
modrm: 0x50
|
|
disp: 0x12
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: si
|
|
mem_disp: 0x12
|
|
size: 2
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, bx, si ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call word ptr [bx + si + 0x1234]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
modrm: 0x90
|
|
disp: 0x1234
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: si
|
|
mem_disp: 0x1234
|
|
size: 2
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, bx, si ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "lcall 0x5678, 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x9a, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x5678
|
|
size: 2
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
size: 4
|
|
regs_read: [ esp, eip ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "lcall [bx + si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
modrm: 0x18
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: si
|
|
mem_scale: 0x1
|
|
mem_disp: 0x0
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, bx, si ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "lcall [bx + si + 0x12]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
modrm: 0x58
|
|
disp: 0x12
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: si
|
|
mem_scale: 0x1
|
|
mem_disp: 0x12
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, bx, si ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "lcall [bx + si + 0x1234]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
modrm: 0x98
|
|
disp: 0x1234
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bx
|
|
mem_index: si
|
|
mem_scale: 0x1
|
|
mem_disp: 0x1234
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, bx, si ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call ptr gs:[0x10]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_GS, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 2
|
|
modrm: 0x1e
|
|
disp: 0x10
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_segment: gs
|
|
mem_disp: 0x10
|
|
size: 2
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, gs ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
input:
|
|
bytes: [
|
|
0xe8, 0x73, 0x56, 0x34, 0x12, # call 0x12345678
|
|
0x66, 0xe8, 0x2b, 0x12, # call 0x1234 w/ size override
|
|
0xff, 0xd0, # call eax
|
|
0xff, 0x10, # call dword ptr [eax]
|
|
0xff, 0x50, 0x12, # call dword ptr [eax + 0x12]
|
|
0xff, 0x90, 0x78, 0x56, 0x34, 0x12, # call dword ptr [eax + 0x12345678]
|
|
0x9a, 0x78, 0x56, 0x34, 0x12, 0xbc, 0x9a, # lcall 0x9abc, 0x12345678
|
|
0xff, 0x18, # call ptr [eax]
|
|
0xff, 0x58, 0x12, # call ptr [eax + 0x12]
|
|
0xff, 0x98, 0x78, 0x56, 0x34, 0x12, # call ptr [eax + 0x12345678]
|
|
0x65, 0x66, 0xff, 0x1d, 0x10, 0x00, 0x00, 0x00, 0x00 # lcall gs:[0x10]
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "call 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
size: 4
|
|
regs_read: [ esp, eip ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
size: 2
|
|
regs_read: [ esp, eip ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0xd0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: eax
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, eax ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call dword ptr [eax]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x10
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: eax
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, eax ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call dword ptr [eax + 0x12]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x50
|
|
disp: 0x12
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: eax
|
|
mem_disp: 0x12
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, eax ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call dword ptr [eax + 0x12345678]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x90
|
|
disp: 0x12345678
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: eax
|
|
mem_disp: 0x12345678
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, eax ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "lcall 0x9abc, 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x9a, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x9abc
|
|
size: 2
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
size: 4
|
|
regs_read: [ esp, eip ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call ptr [eax]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x18
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: eax
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, eax ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call ptr [eax + 0x12]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x58
|
|
disp: 0x12
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: eax
|
|
mem_disp: 0x12
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, eax ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call ptr [eax + 0x12345678]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x98
|
|
disp: 0x12345678
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: eax
|
|
mem_disp: 0x12345678
|
|
size: 4
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, eax ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "lcall gs:[0x10]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_GS, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x1d
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_segment: gs
|
|
mem_disp: 0x10
|
|
size: 6
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, gs ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
input:
|
|
bytes: [
|
|
0xe8, 0x73, 0x56, 0x34, 0x12, # call 0x12345678
|
|
0x66, 0xe8, 0x6d, 0x56, 0x34, 0x12, # call 0x1234 w/ size override
|
|
0xe8, 0xe7, 0xce, 0xad, 0xde, # call 0xffffffffdeadcef7
|
|
0xff, 0xd0, # call rax
|
|
0xff, 0x10, # call qword ptr [rax]
|
|
0xff, 0x50, 0x12, # call qword ptr [rax + 0x12]
|
|
0xff, 0x90, 0x78, 0x56, 0x34, 0x12, # call qword ptr [rax + 0x12345678]
|
|
0xff, 0x18, # call ptr [rax]
|
|
0xff, 0x58, 0x12, # call ptr [rax + 0x12]
|
|
0xff, 0x98, 0x78, 0x56, 0x34, 0x12, # call ptr [rax + 0x12345678]
|
|
0x40, 0xff, 0x98, 0x78, 0x56, 0x34, 0xf2, # rex call ptr [rax - 0xdcba988]
|
|
0x65, 0x66, 0xff, 0x1d, 0x10, 0x00, 0x00, 0x00, 0x00 # lcall gs:[rip + 0x10]
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "call 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
size: 8
|
|
regs_read: [ rsp, rip ]
|
|
regs_write: [ rsp, rip ]
|
|
-
|
|
asm_text: "call 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
size: 4
|
|
regs_read: [ rsp, rip ]
|
|
regs_write: [ rsp, rip ]
|
|
-
|
|
asm_text: "call 0xffffffffdeadcef7"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: -0x21523109
|
|
size: 8
|
|
regs_read: [ rsp, rip ]
|
|
regs_write: [ rsp, rip ]
|
|
-
|
|
asm_text: "call rax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0xd0
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: rax
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ rsp, rip, rax ]
|
|
regs_write: [ rsp, rip ]
|
|
-
|
|
asm_text: "call qword ptr [rax]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x10
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rax
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ rsp, rip, rax ]
|
|
regs_write: [ rsp, rip ]
|
|
-
|
|
asm_text: "call qword ptr [rax + 0x12]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x50
|
|
disp: 0x12
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rax
|
|
mem_disp: 0x12
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ rsp, rip, rax ]
|
|
regs_write: [ rsp, rip ]
|
|
-
|
|
asm_text: "call qword ptr [rax + 0x12345678]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x90
|
|
disp: 0x12345678
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rax
|
|
mem_disp: 0x12345678
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ rsp, rip, rax ]
|
|
regs_write: [ rsp, rip ]
|
|
-
|
|
asm_text: "call ptr [rax]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x18
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rax
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, rax ] # These should be rsp and rip (https://github.com/capstone-engine/capstone/issues/2691)
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call ptr [rax + 0x12]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x58
|
|
disp: 0x12
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rax
|
|
mem_disp: 0x12
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, rax ] # These should be rsp and rip (https://github.com/capstone-engine/capstone/issues/2691)
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call ptr [rax + 0x12345678]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x98
|
|
disp: 0x12345678
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rax
|
|
mem_disp: 0x12345678
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, rax ] # These should be rsp and rip (https://github.com/capstone-engine/capstone/issues/2691)
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "call ptr [rax - 0xdcba988]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
rex: 0x40
|
|
addr_size: 8
|
|
modrm: 0x98
|
|
disp: -0xdcba988
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rax
|
|
mem_disp: -0xdcba988
|
|
size: 8
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, rax ] # These should be rsp and rip (https://github.com/capstone-engine/capstone/issues/2691)
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "lcall gs:[rip + 0x10]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_GS, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x1d
|
|
disp: 0x10
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_segment: gs
|
|
mem_disp: 0x10
|
|
size: 10
|
|
access: CS_AC_READ
|
|
regs_read: [ esp, eip, gs, rip]
|
|
regs_write: [ esp, eip ]
|
|
|
|
-
|
|
input:
|
|
name: "Interrupt instructions, 16-bit decode mode"
|
|
bytes: [
|
|
0xcc, # int3
|
|
0xcd, 0x80, # int 0x80
|
|
0xce, # into
|
|
0xf1, # int1
|
|
0xcf # iret
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "int3"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcc, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_RESET_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_RESET_RF ]
|
|
regs_read: [ flags, esp ]
|
|
regs_write: [ flags, eip, esp ]
|
|
-
|
|
asm_text: "int 0x80"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcd, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_RESET_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_RESET_RF ]
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x80
|
|
size: 1
|
|
regs_read: [ flags, esp ]
|
|
regs_write: [ flags, eip, esp ]
|
|
-
|
|
asm_text: "into"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xce, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_RESET_RF, X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ flags, esp ]
|
|
regs_write: [ flags, eip, esp ]
|
|
-
|
|
asm_text: "int1"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xf1, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ esp ]
|
|
regs_write: [ eip, esp ]
|
|
-
|
|
asm_text: "iret"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_DF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_RF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ sp, ss, flags ]
|
|
regs_write: [ ip, sp, flags ]
|
|
|
|
-
|
|
input:
|
|
name: "Interrupt instructions, 32-bit decode mode"
|
|
bytes: [
|
|
0xcc, # int3
|
|
0xcd, 0x80, # int 0x80
|
|
0xce, # into
|
|
0xf1, # int1
|
|
0xcf # iret
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "int3"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcc, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_RESET_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_RESET_RF ]
|
|
regs_read: [ eflags, esp ]
|
|
regs_write: [ eflags, eip, esp ]
|
|
-
|
|
asm_text: "int 0x80"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcd, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_RESET_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_RESET_RF ]
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x80
|
|
size: 1
|
|
regs_read: [ eflags, esp ]
|
|
regs_write: [ eflags, eip, esp ]
|
|
-
|
|
asm_text: "into"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xce, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_RESET_RF, X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ eflags, esp ]
|
|
regs_write: [ eflags, eip, esp ]
|
|
-
|
|
asm_text: "int1"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xf1, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ esp ]
|
|
regs_write: [ eip, esp ]
|
|
-
|
|
asm_text: "iretd"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_DF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_RF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ esp, ss, eflags ]
|
|
regs_write: [ eip, esp, eflags ]
|
|
|
|
-
|
|
input:
|
|
name: "Interrupt instructions, 64-bit decode mode"
|
|
bytes: [
|
|
0xcc, # int3
|
|
0xcd, 0x80, # int 0x80
|
|
0xf1, # int1
|
|
0xcf, # iret
|
|
0x48, 0xcf, # REX.W iretq
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "int3"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcc, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_RESET_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_RESET_RF ]
|
|
regs_read: [ rflags, esp ]
|
|
regs_write: [ rflags, eip, esp ]
|
|
-
|
|
asm_text: "int 0x80"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcd, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_RESET_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_RESET_RF ]
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x80
|
|
size: 1
|
|
regs_read: [ rflags, esp ]
|
|
regs_write: [ rflags, eip, esp ]
|
|
-
|
|
asm_text: "int1"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xf1, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ esp ]
|
|
regs_write: [ eip, esp ]
|
|
-
|
|
asm_text: "iretd"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_DF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_RF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ esp, ss, rflags ]
|
|
regs_write: [ eip, esp, rflags ]
|
|
-
|
|
asm_text: "iretq"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_DF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_RF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ rsp, ss, rflags ]
|
|
regs_write: [ rip, rsp, rflags ]
|
|
|
|
-
|
|
input:
|
|
name: "x87 comparison instructions, 32-bit decode mode"
|
|
bytes: [
|
|
0xd8, 0x13, # fcom dword ptr [ebx]
|
|
0xdc, 0x13, # fcom qword ptr [ebx]
|
|
0xd8, 0xd1, # fcom st(1)
|
|
0xd8, 0x5d, 0x00, # fcomp dword ptr [ebp]
|
|
0xdc, 0x5d, 0x00, # fcomp qword ptr [ebp]
|
|
0xd8, 0xd9, # fcomp st(1)
|
|
0xde, 0xd9, # fcompp
|
|
0xdb, 0xf0, # fcomi st(0)
|
|
0xdf, 0xf1, # fcompi st(1)
|
|
0xdb, 0xe9, # fucomi st(1)
|
|
0xdf, 0xe9, # fucompi st(1)
|
|
0xdd, 0xe1, # fucom st(1)
|
|
0xdd, 0xe9, # fucomp st(1)
|
|
0xda, 0xe9, # fucompp
|
|
0xde, 0x14, 0x25, 0x34, 0x12, 0x00, 0x00, # ficom word ptr [0x1234]
|
|
0xda, 0x13, # ficom dword ptr [ebx]
|
|
0xde, 0x1c, 0x25, 0x34, 0x12, 0x00, 0x00, # ficomp word ptr [0x1234]
|
|
0xda, 0x1b, # ficomp dword ptr [ebx]
|
|
0xd9, 0xe4, # ftest
|
|
0xd9, 0xe5 # fxam
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "fcom dword ptr [ebx]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x13
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: ebx
|
|
size: 4
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ss, ebx ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcom qword ptr [ebx]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdc, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x13
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: ebx
|
|
size: 8
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ss, ebx ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcom st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd8, 0x00, 0x00, 0x00 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: st(1)
|
|
size: 10
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcomp dword ptr [ebp]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x5d
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: ebp
|
|
size: 4
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ss, ebp ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcomp qword ptr [ebp]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdc, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x5d
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: ebp
|
|
size: 8
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ss, ebp ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcomp st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd8, 0x00, 0x00, 0x00 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: st(1)
|
|
size: 10
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcompp"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xde, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcomi st(0)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdb, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_MODIFY_C1 ]
|
|
# eflags: [ X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ] see https://github.com/capstone-engine/capstone/pull/2680
|
|
regs_read: [ st(0) ]
|
|
regs_write: [ fpsw, eflags ]
|
|
-
|
|
asm_text: "fcompi st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdf, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1 ]
|
|
# eflags: [ X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ] see https://github.com/capstone-engine/capstone/pull/2680
|
|
regs_read: [ st(0), st(1)]
|
|
regs_write: [ fpsw, eflags ]
|
|
-
|
|
asm_text: "fucomi st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdb, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [ X86_FPU_FLAGS_MODIFY_C1 ]
|
|
# eflags: [ X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ] see https://github.com/capstone-engine/capstone/pull/2680
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw, eflags]
|
|
-
|
|
asm_text: "fucompi st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdf, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [ X86_FPU_FLAGS_MODIFY_C1 ]
|
|
# eflags: [ X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ] see https://github.com/capstone-engine/capstone/pull/2680
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw, eflags ]
|
|
-
|
|
asm_text: "fucom st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdd, 0x00, 0x00, 0x00 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: st(1)
|
|
size: 10
|
|
access: CS_AC_READ
|
|
fpu_flags: [ X86_FPU_FLAGS_MODIFY_C1 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fucomp st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdd, 0x00, 0x00, 0x00 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: st(1)
|
|
size: 10
|
|
access: CS_AC_READ
|
|
fpu_flags: [ X86_FPU_FLAGS_MODIFY_C1 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fucompp"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xda, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_MODIFY_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "ficom word ptr [0x1234]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xde, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x14
|
|
disp: 0x1234
|
|
sib: 0x25
|
|
sib_scale: 1
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_disp: 0x1234
|
|
size: 2
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ds ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "ficom dword ptr [ebx]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xda, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x13
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: ebx
|
|
size: 4
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ds, ebx ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "ficomp word ptr [0x1234]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xde, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x1c
|
|
disp: 0x1234
|
|
sib: 0x25
|
|
sib_scale: 1
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_disp: 0x1234
|
|
size: 2
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ds ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "ficomp dword ptr [ebx]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xda, 0x00, 0x00, 0x00 ]
|
|
addr_size: 4
|
|
modrm: 0x1b
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: ebx
|
|
size: 4
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ds, ebx ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "ftst"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd9, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fxam"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd9, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C1, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0) ]
|
|
regs_write: [ st(0), fpsw ]
|
|
-
|
|
input:
|
|
name: "x87 comparison instructions, 64-bit decode mode"
|
|
bytes: [
|
|
0xd8, 0x13, # fcom dword ptr [rbx]
|
|
0xdc, 0x13, # fcom qword ptr [rbx]
|
|
0xd8, 0xd1, # fcom st(1)
|
|
0xd8, 0x5d, 0x00, # fcomp dword ptr [ebp]
|
|
0xdc, 0x5d, 0x00, # fcomp qword ptr [ebp]
|
|
0xd8, 0xd9, # fcomp st(1)
|
|
0xde, 0xd9, # fcompp
|
|
0xdb, 0xf0, # fcomi st(0)
|
|
0xdf, 0xf1, # fcompi st(1)
|
|
0xdb, 0xe9, # fucomi st(1)
|
|
0xdf, 0xe9, # fucompi st(1)
|
|
0xdd, 0xe1, # fucom st(1)
|
|
0xdd, 0xe9, # fucomp st(1)
|
|
0xda, 0xe9, # fucom
|
|
0xde, 0x14, 0x25, 0x34, 0x12, 0x00, 0x00, # ficom word ptr [0x1234]
|
|
0xda, 0x13, # ficom dword ptr [rbx]
|
|
0xde, 0x1c, 0x25, 0x34, 0x12, 0x00, 0x00, # ficomp word ptr [0x1234]
|
|
0xda, 0x1b, # ficomp dword ptr [rbx]
|
|
0xd9, 0xe4, # ftest
|
|
0xd9, 0xe5 # fxam
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "fcom dword ptr [rbx]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x13
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rbx
|
|
size: 4
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ss, rbx ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcom qword ptr [rbx]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdc, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x13
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rbx
|
|
size: 8
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ss, rbx ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcom st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd8, 0x00, 0x00, 0x00 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: st(1)
|
|
size: 10
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcomp dword ptr [rbp]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd8, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x5d
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rbp
|
|
size: 4
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ss, rbp ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcomp qword ptr [rbp]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdc, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x5d
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rbp
|
|
size: 8
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ss, rbp ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcomp st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd8, 0x00, 0x00, 0x00 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: st(1)
|
|
size: 10
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcompp"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xde, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fcomi st(0)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdb, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_MODIFY_C1 ]
|
|
# eflags: [ X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ] see https://github.com/capstone-engine/capstone/pull/2680
|
|
regs_read: [ st(0) ]
|
|
regs_write: [ fpsw, rflags ]
|
|
-
|
|
asm_text: "fcompi st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdf, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1 ]
|
|
# eflags: [ X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ] see https://github.com/capstone-engine/capstone/pull/2680
|
|
regs_read: [ st(0), st(1)]
|
|
regs_write: [ fpsw, rflags ]
|
|
-
|
|
asm_text: "fucomi st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdb, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [ X86_FPU_FLAGS_MODIFY_C1 ]
|
|
# eflags: [ X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ] see https://github.com/capstone-engine/capstone/pull/2680
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw, rflags]
|
|
-
|
|
asm_text: "fucompi st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdf, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [ X86_FPU_FLAGS_MODIFY_C1 ]
|
|
# eflags: [ X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ] see https://github.com/capstone-engine/capstone/pull/2680
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw, rflags ]
|
|
-
|
|
asm_text: "fucom st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdd, 0x00, 0x00, 0x00 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: st(1)
|
|
size: 10
|
|
access: CS_AC_READ
|
|
fpu_flags: [ X86_FPU_FLAGS_MODIFY_C1 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fucomp st(1)"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xdd, 0x00, 0x00, 0x00 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: st(1)
|
|
size: 10
|
|
access: CS_AC_READ
|
|
fpu_flags: [ X86_FPU_FLAGS_MODIFY_C1 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fucompp"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xda, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_MODIFY_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), st(1) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "ficom word ptr [0x1234]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xde, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x14
|
|
disp: 0x1234
|
|
sib: 0x25
|
|
sib_scale: 1
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_disp: 0x1234
|
|
size: 2
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ds ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "ficom dword ptr [rbx]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xda, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x13
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rbx
|
|
size: 4
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ds, rbx ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "ficomp word ptr [0x1234]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xde, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x1c
|
|
disp: 0x1234
|
|
sib: 0x25
|
|
sib_scale: 1
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_disp: 0x1234
|
|
size: 2
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ds ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "ficomp dword ptr [rbx]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xda, 0x00, 0x00, 0x00 ]
|
|
addr_size: 8
|
|
modrm: 0x1b
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rbx
|
|
size: 4
|
|
access: CS_AC_READ
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0), ds, rbx ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "ftst"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd9, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0) ]
|
|
regs_write: [ fpsw ]
|
|
-
|
|
asm_text: "fxam"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xd9, 0x00, 0x00, 0x00 ]
|
|
fpu_flags: [X86_FPU_FLAGS_MODIFY_C0, X86_FPU_FLAGS_MODIFY_C1, X86_FPU_FLAGS_MODIFY_C2, X86_FPU_FLAGS_MODIFY_C3 ]
|
|
regs_read: [ st(0) ]
|
|
regs_write: [ st(0), fpsw ]
|
|
|
|
-
|
|
input:
|
|
name: "Enter/leave instructions, 16-bit decode mode"
|
|
bytes: [
|
|
0xc8, 0x34, 0x12, 0x05, # enter 0x1234, 0x5 (Create a stack frame of size 0x1234 with a nesting level of 0x5)
|
|
0xc9 # leave
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "enter 0x1234, 0x5"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc8, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ bp, sp ]
|
|
regs_write: [ bp, sp ]
|
|
-
|
|
asm_text: "leave"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc9, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ bp, sp ]
|
|
regs_write: [ bp, sp ]
|
|
|
|
-
|
|
input:
|
|
name: "Enter/leave instructions, 32-bit decode mode"
|
|
bytes: [
|
|
0xc8, 0x34, 0x12, 0x05, # enter 0x1234, 0x5 (Create a stack frame of size 0x1234 with a nesting level of 0x5)
|
|
0xc9 # leave
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "enter 0x1234, 0x5"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc8, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ ebp, esp ]
|
|
regs_write: [ ebp, esp ]
|
|
-
|
|
asm_text: "leave"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc9, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ ebp, esp ]
|
|
regs_write: [ ebp, esp ]
|
|
|
|
-
|
|
input:
|
|
name: "Enter/leave instructions, 64-bit decode mode"
|
|
bytes: [
|
|
0xc8, 0x34, 0x12, 0x05, # enter 0x1234, 0x5 (Create a stack frame of size 0x1234 with a nesting level of 0x5)
|
|
0xc9 # leave
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "enter 0x1234, 0x5"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc8, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rbp, rsp ]
|
|
regs_write: [ rbp, rsp ]
|
|
-
|
|
asm_text: "leave"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc9, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rbp, rsp ]
|
|
regs_write: [ rbp, rsp ]
|
|
|
|
-
|
|
input:
|
|
name: "Return from procedure, 16-bit decode mode"
|
|
bytes: [
|
|
0xc3, # ret (near)
|
|
0xcb, # retf (far)
|
|
0xc2, 0x34, 0x12, # ret 0x1234 (near)
|
|
0xca, 0x34, 0x12, # retf 0x1234 (far)
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "ret"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc3, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ sp, ss ]
|
|
regs_write: [ sp, ip ]
|
|
-
|
|
asm_text: "retf"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcb, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ sp, ss ]
|
|
regs_write: [ sp, ip, cs ]
|
|
-
|
|
asm_text: "ret 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc2, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ sp, ss ]
|
|
regs_write: [ sp, ip ]
|
|
-
|
|
asm_text: "retf 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xca, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ sp, ss ]
|
|
regs_write: [ sp, ip, cs ]
|
|
-
|
|
input:
|
|
name: "Return from procedure, 32-bit decode mode"
|
|
bytes: [
|
|
0xc3, # ret (near)
|
|
0xcb, # retf (far)
|
|
0xc2, 0x34, 0x12, # ret 0x1234 (near)
|
|
0xca, 0x34, 0x12, # retf 0x1234 (far)
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "ret"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc3, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ esp, ss ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "retf"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcb, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ esp, ss ]
|
|
regs_write: [ esp, eip, cs ]
|
|
-
|
|
asm_text: "ret 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc2, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ esp, ss ]
|
|
regs_write: [ esp, eip ]
|
|
-
|
|
asm_text: "retf 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xca, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ esp, ss ]
|
|
regs_write: [ esp, eip, cs ]
|
|
-
|
|
input:
|
|
name: "Return from procedure, 64-bit decode mode"
|
|
bytes: [
|
|
0xc3, # ret (near)
|
|
0xcb, # retf (far)
|
|
0xc2, 0x34, 0x12, # ret 0x1234 (near)
|
|
0xca, 0x34, 0x12, # retf 0x1234 (far)
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "ret"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc3, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rsp, ss ]
|
|
regs_write: [ rsp, rip ]
|
|
-
|
|
asm_text: "retf"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xcb, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ esp, ss ]
|
|
regs_write: [ esp, eip, cs ] # BUG: decoded as X86_LRETL instead of X86_LRETQ
|
|
-
|
|
asm_text: "ret 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xc2, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rsp, ss ]
|
|
regs_write: [ rsp, rip ]
|
|
-
|
|
asm_text: "retf 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xca, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ esp, ss ]
|
|
regs_write: [ esp, eip, cs ] # BUG: decoded as X86_LRETIL instead of X86_LRETIQ
|
|
|
|
-
|
|
input:
|
|
name: "String instructions, 16-bit decode mode"
|
|
bytes: [
|
|
0xaa, # stosb byte ptr es:[di], al
|
|
0xf3,0xaa, # rep stosb byte ptr es:[di], al
|
|
0xab, # stosw word ptr es:[di], ax
|
|
0xf3,0xab, # rep stosw word ptr es:[di], ax
|
|
0xac, # lodsb al, byte ptr ds:[si]
|
|
0xf3,0xac, # rep lodsb al, byte ptr ds:[si]
|
|
0xad, # lodsw ax, word ptr ds:[si]
|
|
0xf3,0xad, # rep lodsw ax, word ptr ds:[si]
|
|
0xae, # scasb al, byte ptr es:[di]
|
|
0xf3, 0xae, # repe scasb al, byte ptr es:[di]
|
|
0xf2, 0xae, # repne scasb al, byte ptr es:[di]
|
|
0xaf, # scasd ax, word ptr es:[edi]
|
|
0xf3, 0xaf, # repe scasd ax, word ptr es:[edi]
|
|
0xf2, 0xaf, # repne scasd ax, word ptr es:[edi]
|
|
0xa6, # cmpsb byte ptr ds:[si], byte ptr ds:[di]
|
|
0xf3, 0xa6, # repe cmpsb byte ptr ds:[si], byte ptr ds:[di]
|
|
0xf2, 0xa6, # repne cmpsb byte ptr ds:[si], byte ptr ds:[di]
|
|
0xa7, # cmpsw word ptr ds:[si], word ptr ds:[di]
|
|
0xf3, 0xa7, # repe cmpsw word ptr ds:[si], word ptr ds:[di]
|
|
0xf2, 0xa7, # repne cmpsw word ptr ds:[si], word ptr ds:[di]
|
|
0xa4, # movsb byte ptr es:[di], byte ptr [si]
|
|
0xf3,0xa4, # rep movsb byte ptr es:[di], byte ptr [si]
|
|
0xa5, # movsw word ptr es:[di], word ptr [si{}}
|
|
0xf3,0xa5, # rep movsw word ptr es:[di], word ptr [si]
|
|
0x6c, # insb byte ptr es:[di], dx
|
|
0xf3, 0x6c, # rep insb byte ptr es:[di], dx
|
|
0x6d, # insw word ptr es:[di], dx
|
|
0xf3, 0x6d, # rep insw word ptr es:[di], dx
|
|
0x6e, # outsb dx, byte ptr [si]
|
|
0xf3, 0x6e, # rep outsb dx, byte ptr [si]
|
|
0x6f, # outsw dx, word ptr [si]
|
|
0xf3, 0x6f, # rep outsb dx, word ptr [si]
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "stosb byte ptr es:[di], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaa, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ al, di, flags, es ]
|
|
regs_write: [ di ]
|
|
-
|
|
asm_text: "rep stosb byte ptr es:[di], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaa, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ al, di, flags, cx, es ]
|
|
regs_write: [ di, cx ]
|
|
-
|
|
asm_text: "stosw word ptr es:[di], ax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xab, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ ax, di, flags, es ]
|
|
regs_write: [ di ]
|
|
-
|
|
asm_text: "rep stosw word ptr es:[di], ax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xab, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ ax, di, flags, cx, es ]
|
|
regs_write: [ di, cx ]
|
|
-
|
|
asm_text: "lodsb al, byte ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xac, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ si, flags, ds ]
|
|
regs_write: [ al, si ]
|
|
-
|
|
asm_text: "rep lodsb al, byte ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xac, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ si, flags, ds, cx ]
|
|
regs_write: [ al, si, cx ]
|
|
-
|
|
asm_text: "lodsw ax, word ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xad, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ si, flags, ds ]
|
|
regs_write: [ ax, si ]
|
|
-
|
|
asm_text: "rep lodsw ax, word ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xad, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ si, flags, ds, cx ]
|
|
regs_write: [ ax, si, cx ]
|
|
-
|
|
asm_text: "scasb al, byte ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xae, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ al, di, flags, es ]
|
|
regs_write: [ di, flags ]
|
|
-
|
|
asm_text: "repe scasb al, byte ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xae, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ al, di, flags, cx, es ]
|
|
regs_write: [ di, flags, cx ]
|
|
-
|
|
asm_text: "repne scasb al, byte ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xae, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ al, di, flags, cx, es ]
|
|
regs_write: [ di, flags, cx ]
|
|
-
|
|
asm_text: "scasw ax, word ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ ax, di, flags, es ]
|
|
regs_write: [ di, flags ]
|
|
-
|
|
asm_text: "repe scasw ax, word ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ ax, di, flags, cx, es ]
|
|
regs_write: [ di, flags, cx ]
|
|
-
|
|
asm_text: "repne scasw ax, word ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ ax, di, flags, cx, es ]
|
|
regs_write: [ di, flags, cx ]
|
|
-
|
|
asm_text: "cmpsb byte ptr [si], byte ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa6, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ di, si, flags, ds, es ]
|
|
regs_write: [ di, si, flags ]
|
|
-
|
|
asm_text: "repe cmpsb byte ptr [si], byte ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa6, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ di, si, flags, ds, cx, es ]
|
|
regs_write: [ di, si, flags, cx ]
|
|
-
|
|
asm_text: "repne cmpsb byte ptr [si], byte ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa6, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ di, si, flags, ds, cx, es ]
|
|
regs_write: [ di, si, flags, cx ]
|
|
-
|
|
asm_text: "cmpsw word ptr [si], word ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ di, si, flags, ds, es ]
|
|
regs_write: [ di, si, flags ]
|
|
-
|
|
asm_text: "repe cmpsw word ptr [si], word ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ di, si, flags, ds, cx, es ]
|
|
regs_write: [ di, si, flags, cx ]
|
|
-
|
|
asm_text: "repne cmpsw word ptr [si], word ptr es:[di]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ di, si, flags, ds, cx, es ]
|
|
regs_write: [ di, si, flags, cx ]
|
|
-
|
|
asm_text: "movsb byte ptr es:[di], byte ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa4, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ di, si, flags, ds, es ]
|
|
regs_write: [ di, si ]
|
|
-
|
|
asm_text: "rep movsb byte ptr es:[di], byte ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa4, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ di, si, flags, ds, cx, es ]
|
|
regs_write: [ di, si, cx ]
|
|
-
|
|
asm_text: "movsw word ptr es:[di], word ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa5, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ di, si, flags, ds, es ]
|
|
regs_write: [ di, si ]
|
|
-
|
|
asm_text: "rep movsw word ptr es:[di], word ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa5, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ di, si, flags, ds, cx, es ]
|
|
regs_write: [ di, si, cx ]
|
|
-
|
|
asm_text: "insb byte ptr es:[di], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6c, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, flags, es, di ]
|
|
regs_write: [ di ]
|
|
-
|
|
asm_text: "rep insb byte ptr es:[di], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6c, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, flags, cx, es, di ]
|
|
regs_write: [ di, cx ]
|
|
-
|
|
asm_text: "insw word ptr es:[di], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6d, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, flags, es, di ]
|
|
regs_write: [ di ]
|
|
-
|
|
asm_text: "rep insw word ptr es:[di], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6d, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, flags, cx, es, di]
|
|
regs_write: [ di, cx ]
|
|
-
|
|
asm_text: "outsb dx, byte ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6e, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, si, flags, ds ]
|
|
regs_write: [ si ]
|
|
-
|
|
asm_text: "rep outsb dx, byte ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6e, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, si, flags, ds, cx]
|
|
regs_write: [ si, cx ]
|
|
-
|
|
asm_text: "outsw dx, word ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6f, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, si, flags, ds ]
|
|
regs_write: [ si ]
|
|
-
|
|
asm_text: "rep outsw dx, word ptr [si]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6f, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, si, flags, ds, cx]
|
|
regs_write: [ si, cx ]
|
|
|
|
-
|
|
input:
|
|
name: "String instructions, 32-bit decode mode"
|
|
bytes: [
|
|
0xaa, # stosb byte ptr es:[edi], al
|
|
0xf3, 0xaa, # rep stosb byte ptr es:[edi], al
|
|
0xab, # stosd dword ptr es:[edi], eax
|
|
0xf3, 0xab, # rep stosd dword ptr es:[edi], eax
|
|
0xac, # lodsb al, byte ptr ds:[esi]
|
|
0xf3, 0xac, # rep lodsb al, byte ptr ds:[esi]
|
|
0xad, # lodsb eax, dword ptr ds:[esi]
|
|
0xf3, 0xad, # rep lodsb eax, dword ptr ds:[esi]
|
|
0xae, # scasb al, word ptr es:[edi]
|
|
0xf3, 0xae, # repe scasb al, word ptr es:[edi]
|
|
0xf2, 0xae, # repne scasb al, word ptr es:[edi]
|
|
0xaf, # scasd eax, dword ptr es:[edi]
|
|
0xf3, 0xaf, # repe scasd eax, dword ptr es:[edi]
|
|
0xf2, 0xaf, # repne scasd eax, dword ptr es:[edi]
|
|
0xa6, # cmpsb byte ptr [esi], byte ptr es:[edi]
|
|
0xf3, 0xa6, # repe cmpsb byte ptr [esi], byte ptr es:[edi]
|
|
0xf2, 0xa6, # repne cmpsb byte ptr [esi], byte ptr es:[edi]
|
|
0xa7, # cmpsd dword ptr [esi], dword ptr es:[edi]
|
|
0xf3, 0xa7, # repe cmpsd dword ptr [esi], dword ptr es:[edi]
|
|
0xf2, 0xa7, # repne cmpsd dword ptr [esi], dword ptr es:[edi]
|
|
0xa4, # movsb byte ptr es:[edi], byte ptr [esi]
|
|
0xf3, 0xa4, # rep movsb byte ptr es:[edi], byte ptr [esi]
|
|
0xa5, # movsw dword ptr es:[edi], dword ptr [esi]
|
|
0xf3, 0xa5, # rep movsw dword ptr es:[edi], dword ptr [esi]
|
|
0x6c, # insb byte ptr es:[edi], dx
|
|
0xf3, 0x6c, # rep insb byte ptr es:[edi], dx
|
|
0x6d, # insd dword ptr es:[edi], dx
|
|
0xf3, 0x6d, # rep insd dword ptr es:[edi], dx
|
|
0x6e, # outsb dx, byte ptr [esi]
|
|
0xf3, 0x6e, # rep outsb dx, byte ptr [esi]
|
|
0x6f, # outsd dx, dword ptr [esi]
|
|
0xf3, 0x6f, # rep outsd dx, dword ptr [esi]
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "stosb byte ptr es:[edi], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaa, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ al, edi, eflags, es ]
|
|
regs_write: [ edi ]
|
|
-
|
|
asm_text: "rep stosb byte ptr es:[edi], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaa, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ al, edi, eflags, ecx, es ]
|
|
regs_write: [ edi, ecx ]
|
|
-
|
|
asm_text: "stosd dword ptr es:[edi], eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xab, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ eax, edi, eflags, es ]
|
|
regs_write: [ edi ]
|
|
-
|
|
asm_text: "rep stosd dword ptr es:[edi], eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xab, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ eax, edi, eflags, ecx, es ]
|
|
regs_write: [ edi, ecx ]
|
|
-
|
|
asm_text: "lodsb al, byte ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xac, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ esi, eflags, ds ]
|
|
regs_write: [ al, esi ]
|
|
-
|
|
asm_text: "rep lodsb al, byte ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xac, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ esi, eflags, ds, ecx ]
|
|
regs_write: [ al, esi, ecx ]
|
|
-
|
|
asm_text: "lodsd eax, dword ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xad, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ esi, eflags, ds ]
|
|
regs_write: [ eax, esi ]
|
|
-
|
|
asm_text: "rep lodsd eax, dword ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xad, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ esi, eflags, ds, ecx ]
|
|
regs_write: [ eax, esi, ecx ]
|
|
-
|
|
asm_text: "scasb al, byte ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xae, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ al, edi, eflags, es ]
|
|
regs_write: [ edi, eflags ]
|
|
-
|
|
asm_text: "repe scasb al, byte ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xae, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ al, edi, eflags, ecx, es ]
|
|
regs_write: [ edi, eflags, ecx ]
|
|
-
|
|
asm_text: "repne scasb al, byte ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xae, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ al, edi, eflags, ecx, es ]
|
|
regs_write: [ edi, eflags, ecx ]
|
|
-
|
|
asm_text: "scasd eax, dword ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ eax, edi, eflags, es ]
|
|
regs_write: [ edi, eflags ]
|
|
-
|
|
asm_text: "repe scasd eax, dword ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ eax, edi, eflags, ecx, es ]
|
|
regs_write: [ edi, eflags, ecx ]
|
|
-
|
|
asm_text: "repne scasd eax, dword ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ eax, edi, eflags, ecx, es ]
|
|
regs_write: [ edi, eflags, ecx ]
|
|
-
|
|
asm_text: "cmpsb byte ptr [esi], byte ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa6, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ edi, esi, eflags, ds, es ]
|
|
regs_write: [ edi, esi, eflags ]
|
|
-
|
|
asm_text: "repe cmpsb byte ptr [esi], byte ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa6, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ edi, esi, eflags, ds, ecx, es ]
|
|
regs_write: [ edi, esi, eflags, ecx ]
|
|
-
|
|
asm_text: "repne cmpsb byte ptr [esi], byte ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa6, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ edi, esi, eflags, ds, ecx, es ]
|
|
regs_write: [ edi, esi, eflags, ecx ]
|
|
-
|
|
asm_text: "cmpsd dword ptr [esi], dword ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ edi, esi, eflags, ds, es ]
|
|
regs_write: [ edi, esi, eflags ]
|
|
-
|
|
asm_text: "repe cmpsd dword ptr [esi], dword ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ edi, esi, eflags, ds, ecx, es ]
|
|
regs_write: [ edi, esi, eflags, ecx ]
|
|
-
|
|
asm_text: "repne cmpsd dword ptr [esi], dword ptr es:[edi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ edi, esi, eflags, ds, ecx, es ]
|
|
regs_write: [ edi, esi, eflags, ecx ]
|
|
-
|
|
asm_text: "movsb byte ptr es:[edi], byte ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa4, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ edi, esi, eflags, ds, es ]
|
|
regs_write: [ edi, esi ]
|
|
-
|
|
asm_text: "rep movsb byte ptr es:[edi], byte ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa4, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ edi, esi, eflags, ds, ecx, es ]
|
|
regs_write: [ edi, esi, ecx ]
|
|
-
|
|
asm_text: "movsd dword ptr es:[edi], dword ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa5, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ edi, esi, eflags, ds, es ]
|
|
regs_write: [ edi, esi ]
|
|
-
|
|
asm_text: "rep movsd dword ptr es:[edi], dword ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa5, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ edi, esi, eflags, ds, ecx, es ]
|
|
regs_write: [ edi, esi, ecx ]
|
|
-
|
|
asm_text: "insb byte ptr es:[edi], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6c, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, eflags, es, edi ]
|
|
regs_write: [ edi ]
|
|
-
|
|
asm_text: "rep insb byte ptr es:[edi], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6c, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, eflags, ecx, es, edi ]
|
|
regs_write: [ edi, ecx ]
|
|
-
|
|
asm_text: "insd dword ptr es:[edi], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6d, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, edi, eflags, es ]
|
|
regs_write: [ edi ]
|
|
-
|
|
asm_text: "rep insd dword ptr es:[edi], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6d, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, edi, eflags, ecx, es ]
|
|
regs_write: [ edi, ecx ]
|
|
-
|
|
asm_text: "outsb dx, byte ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6e, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, esi, eflags, ds ]
|
|
regs_write: [ esi ]
|
|
-
|
|
asm_text: "rep outsb dx, byte ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6e, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, esi, eflags, ds, ecx ]
|
|
regs_write: [ esi, ecx ]
|
|
-
|
|
asm_text: "outsd dx, dword ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6f, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, esi, eflags, ds ]
|
|
regs_write: [ esi ]
|
|
-
|
|
asm_text: "rep outsd dx, dword ptr [esi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6f, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, esi, eflags, ds, ecx ]
|
|
regs_write: [ esi, ecx ]
|
|
|
|
-
|
|
input:
|
|
name: "String instructions, 64-bit decode mode"
|
|
bytes: [
|
|
0xaa, # stosb byte ptr [rdi], al
|
|
0xf3, 0xaa, # rep stosb byte ptr [rdi], al
|
|
0xab, # stosd dword ptr [rdi], eax
|
|
0xf3, 0xab, # rep stosd dword ptr [rdi], eax
|
|
0x48, 0xab, # REX.W stosq qword ptr [rdi], rax
|
|
0xf3, 0x48, 0xab, # rep REX.W stosq qword ptr [rdi], rax
|
|
0xac, # lodsb al, byte ptr ds:[rsi]
|
|
0xf3, 0xac, # rep lodsb al, byte ptr ds:[rsi]
|
|
0xad, # lodsd eax, dword ptr [rsi]
|
|
0xf3, 0xad, # rep lodsd eax, dword ptr [rsi]
|
|
0x48, 0xad, # REX.W lodsq rax, qword ptr [rsi]
|
|
0xf3, 0x48, 0xad, # rep REX.W lodsq rax, qword ptr [rsi]
|
|
0xae, # scasb al, word ptr es:[rdi]
|
|
0xf3, 0xae, # repe scasb al, word ptr es:[rdi]
|
|
0xf2, 0xae, # repne scasb al, word ptr es:[rdi]
|
|
0xaf, # scasd eax, dword ptr [rdi]
|
|
0xf3, 0xaf, # repe scasd eax, dword ptr [rdi]
|
|
0xf2, 0xaf, # repne scasd eax, dword ptr [rdi]
|
|
0x48, 0xaf, # REX.W scasq rax, qword ptr [rdi]
|
|
0xf3, 0x48, 0xaf, # repe REX.W scasq rax, qword ptr [rdi]
|
|
0xf2, 0x48, 0xaf, # repne REX.W scasq rax, qword ptr [rdi]
|
|
0xa6, # cmpsb byte ptr [rsi], byte ptr [rdi]
|
|
0xf3, 0xa6, # repe cmpsb byte ptr [rsi], byte ptr [rdi]
|
|
0xf2, 0xa6, # repne cmpsb byte ptr [rsi], byte ptr [rdi]
|
|
0xa7, # cmpsd dword ptr [rsi], dword ptr [rdi]
|
|
0xf3, 0xa7, # repe cmpsd dword ptr [rsi], dword ptr [rdi]
|
|
0xf2, 0xa7, # repne cmpsd dword ptr [rsi], dword ptr [rdi]
|
|
0x48, 0xa7, # REX.W cmpsq qword ptr [rsi], qword ptr [rdi]
|
|
0xf3, 0x48, 0xa7, # repe REX.W cmpsq qword ptr [rsi], qword ptr [rdi]
|
|
0xf2, 0x48, 0xa7, # repne REX.W cmpsq qword ptr [rsi], qword ptr [rdi]
|
|
0xa4, # movsb byte ptr [rdi], byte ptr [rsi]
|
|
0xf3, 0xa4, # rep movsb byte ptr [rdi], byte ptr [rsi]
|
|
0xa5, # movsd dword ptr [rdi], dword ptr [rsi]
|
|
0xf3, 0xa5, # rep movsd dword ptr [rdi], dword ptr [rsi]
|
|
0x48, 0xa5, # REX.W movsq qword ptr [rdi], qword ptr [rsi]
|
|
0xf3, 0x48, 0xa5, # rep REX.W movsq qword ptr [rdi], qword ptr [rsi]
|
|
0x6c, # insb byte ptr [rdi], dx
|
|
0xf3, 0x6c, # rep insb byte ptr [rdi], dx
|
|
0x6d, # insd dword ptr [rdi], dx
|
|
0xf3, 0x6d, # rep insd dword ptr [rdi], dx
|
|
0x6e, # outsb dx, byte ptr [rsi]
|
|
0xf3, 0x6e, # rep outsb dx, byte ptr [rsi]
|
|
0x6f, # outsd dx, dword ptr [rsi]
|
|
0xf3, 0x6f, # rep outsd dx, dword ptr [rsi]
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
address: 0x0
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "stosb byte ptr [rdi], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaa, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ al, rdi, rflags ]
|
|
regs_write: [ rdi ]
|
|
-
|
|
asm_text: "rep stosb byte ptr [rdi], al"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaa, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ al, rdi, rflags, rcx ]
|
|
regs_write: [ rdi, rcx ]
|
|
-
|
|
asm_text: "stosd dword ptr [rdi], eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xab, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ eax, rdi, rflags ]
|
|
regs_write: [ rdi ]
|
|
-
|
|
asm_text: "rep stosd dword ptr [rdi], eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xab, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ eax, rdi, rflags, rcx ]
|
|
regs_write: [ rdi, rcx ]
|
|
-
|
|
asm_text: "stosq qword ptr [rdi], rax"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xab, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rax, rdi, rflags, ]
|
|
regs_write: [ rdi ]
|
|
-
|
|
asm_text: "rep stosq qword ptr [rdi], rax"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xab, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rax, rdi, rflags, rcx ]
|
|
regs_write: [ rdi, rcx ]
|
|
-
|
|
asm_text: "lodsb al, byte ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xac, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rsi, rflags ]
|
|
regs_write: [ al, rsi ]
|
|
-
|
|
asm_text: "rep lodsb al, byte ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xac, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rsi, rflags, rcx ]
|
|
regs_write: [ al, rsi, rcx ]
|
|
-
|
|
asm_text: "lodsd eax, dword ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xad, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rsi, rflags ]
|
|
regs_write: [ eax, rsi ]
|
|
-
|
|
asm_text: "rep lodsd eax, dword ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xad, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rsi, rflags, rcx ]
|
|
regs_write: [ eax, rsi, rcx ]
|
|
-
|
|
asm_text: "lodsq rax, qword ptr [rsi]"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xad, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rsi, rflags ]
|
|
regs_write: [ rax, rsi ]
|
|
-
|
|
asm_text: "rep lodsq rax, qword ptr [rsi]"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xad, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rsi, rflags, rcx ]
|
|
regs_write: [ rax, rsi, rcx ]
|
|
-
|
|
asm_text: "scasb al, byte ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xae, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ al, rdi, rflags ]
|
|
regs_write: [ rdi, rflags ]
|
|
-
|
|
asm_text: "repe scasb al, byte ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xae, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ al, rdi, rflags, rcx ]
|
|
regs_write: [ rdi, rflags, rcx ]
|
|
-
|
|
asm_text: "repne scasb al, byte ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xae, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ al, rdi, rflags, rcx ]
|
|
regs_write: [ rdi, rflags, rcx ]
|
|
-
|
|
asm_text: "scasd eax, dword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ eax, rdi, rflags ]
|
|
regs_write: [ rdi, rflags ]
|
|
-
|
|
asm_text: "repe scasd eax, dword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ eax, rdi, rflags, rcx ]
|
|
regs_write: [ rdi, rflags, rcx ]
|
|
-
|
|
asm_text: "repne scasd eax, dword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ eax, rdi, rflags, rcx ]
|
|
regs_write: [ rdi, rflags, rcx ]
|
|
-
|
|
asm_text: "scasq rax, qword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rax, rdi, rflags ]
|
|
regs_write: [ rdi, rflags ]
|
|
-
|
|
asm_text: "repe scasq rax, qword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rax, rdi, rflags, rcx ]
|
|
regs_write: [ rdi, rflags, rcx ]
|
|
-
|
|
asm_text: "repne scasq rax, qword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xaf, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rax, rdi, rflags, rcx ]
|
|
regs_write: [ rdi, rflags, rcx ]
|
|
-
|
|
asm_text: "cmpsb byte ptr [rsi], byte ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa6, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rdi, rsi, rflags ]
|
|
regs_write: [ rdi, rsi, rflags ]
|
|
-
|
|
asm_text: "repe cmpsb byte ptr [rsi], byte ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa6, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rdi, rsi, rflags, rcx ]
|
|
regs_write: [ rdi, rsi, rflags, rcx ]
|
|
-
|
|
asm_text: "repne cmpsb byte ptr [rsi], byte ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa6, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rdi, rsi, rflags, rcx ]
|
|
regs_write: [ rdi, rsi, rflags, rcx ]
|
|
-
|
|
asm_text: "cmpsd dword ptr [rsi], dword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rdi, rsi, rflags ]
|
|
regs_write: [ rdi, rsi, rflags ]
|
|
-
|
|
asm_text: "repe cmpsd dword ptr [rsi], dword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rdi, rsi, rflags, rcx ]
|
|
regs_write: [ rdi, rsi, rflags, rcx ]
|
|
-
|
|
asm_text: "repne cmpsd dword ptr [rsi], dword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rdi, rsi, rflags, rcx ]
|
|
regs_write: [ rdi, rsi, rflags, rcx ]
|
|
-
|
|
asm_text: "cmpsq qword ptr [rsi], qword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rdi, rsi, rflags ]
|
|
regs_write: [ rdi, rsi, rflags ]
|
|
-
|
|
asm_text: "repe cmpsq qword ptr [rsi], qword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_REPE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rdi, rsi, rflags, rcx ]
|
|
regs_write: [ rdi, rsi, rflags, rcx ]
|
|
-
|
|
asm_text: "repne cmpsq qword ptr [rsi], qword ptr [rdi]"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_REPNE, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa7, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_CF ]
|
|
regs_read: [ rdi, rsi, rflags, rcx ]
|
|
regs_write: [ rdi, rsi, rflags, rcx ]
|
|
-
|
|
asm_text: "movsb byte ptr [rdi], byte ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa4, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rdi, rsi, rflags ]
|
|
regs_write: [ rdi, rsi ]
|
|
-
|
|
asm_text: "rep movsb byte ptr [rdi], byte ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa4, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rdi, rsi, rflags, rcx ]
|
|
regs_write: [ rdi, rsi, rcx ]
|
|
-
|
|
asm_text: "movsd dword ptr [rdi], dword ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa5, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rdi, rsi, rflags ]
|
|
regs_write: [ rdi, rsi ]
|
|
-
|
|
asm_text: "rep movsd dword ptr [rdi], dword ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa5, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rdi, rsi, rflags, rcx ]
|
|
regs_write: [ rdi, rsi, rcx ]
|
|
-
|
|
asm_text: "movsq qword ptr [rdi], qword ptr [rsi]"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa5, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rdi, rsi, rflags ]
|
|
regs_write: [ rdi, rsi ]
|
|
-
|
|
asm_text: "rep movsq qword ptr [rdi], qword ptr [rsi]"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xa5, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ rdi, rsi, rflags, rcx ]
|
|
regs_write: [ rdi, rsi, rcx ]
|
|
-
|
|
asm_text: "insb byte ptr [rdi], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6c, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, rflags, rdi ]
|
|
regs_write: [ rdi ]
|
|
-
|
|
asm_text: "rep insb byte ptr [rdi], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6c, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, rflags, rcx, rdi ]
|
|
regs_write: [ rdi, rcx ]
|
|
-
|
|
asm_text: "insd dword ptr [rdi], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6d, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, rdi, rflags ]
|
|
regs_write: [ rdi ]
|
|
-
|
|
asm_text: "rep insd dword ptr [rdi], dx"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6d, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, rdi, rflags, rcx ]
|
|
regs_write: [ rdi, rcx ]
|
|
-
|
|
asm_text: "outsb dx, byte ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6e, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, rsi, rflags ]
|
|
regs_write: [ rsi ]
|
|
-
|
|
asm_text: "rep outsb dx, byte ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6e, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, rsi, rflags, rcx ]
|
|
regs_write: [ rsi, rcx ]
|
|
-
|
|
asm_text: "outsd dx, dword ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6f, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, rsi, rflags ]
|
|
regs_write: [ rsi ]
|
|
-
|
|
asm_text: "rep outsd dx, dword ptr [rsi]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x6f, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_DF ]
|
|
regs_read: [ dx, rsi, rflags, rcx ]
|
|
regs_write: [ rsi, rcx ]
|
|
|
|
-
|
|
input:
|
|
name: "Conditional jump, 16-bit decode mode"
|
|
bytes: [
|
|
0x70, 0x7d, # jo 0x7f
|
|
0x71, 0x7b, # jno 0x7f
|
|
0x72, 0x79, # jb 0x7f (aka jc/jnae)
|
|
0x73, 0x77, # jae 0x7f (aka jnb/jnc)
|
|
0x74, 0x75, # je 0x7f (aka jz)
|
|
0x75, 0x73, # jne 0x7f (aka jnz)
|
|
0x76, 0x71, # jbe 0x7f (aka jna)
|
|
0x77, 0x6f, # ja 0x7f (aka jnbe)
|
|
0x78, 0x6d, # js 0x7f
|
|
0x79, 0x6b, # jns 0x7f
|
|
0x7a, 0x69, # jp 0x7f (aka jpe)
|
|
0x7b, 0x67, # jnp 0x7f (aka jpo)
|
|
0x7c, 0x65, # jl 0x7f (aka jnge)
|
|
0x7d, 0x63, # jge 0x7f (aka jnl)
|
|
0x7e, 0x61, # jle 0x7f (aka jng)
|
|
0x7f, 0x5f, # jg 0x7f (aka jnle)
|
|
0xe3, 0x5d, # jcxz 0x7f (aka jecxz/jrcxz)
|
|
0x0f, 0x80, 0x0e, 0x12, # jo 0x1234
|
|
0x0f, 0x81, 0x0a, 0x12, # jno 0x1234
|
|
0x0f, 0x82, 0x06, 0x12, # jb 0x1234 (aka jc/jnae)
|
|
0x0f, 0x83, 0x02, 0x12, # jae 0x1234 (aka jnb/jnc)
|
|
0x0f, 0x84, 0xfe, 0x11, # je 0x1234 (aka jz)
|
|
0x0f, 0x85, 0xfa, 0x11, # jne 0x1234 (aka jnz)
|
|
0x0f, 0x86, 0xf6, 0x11, # jbe 0x1234 (aka jna)
|
|
0x0f, 0x87, 0xf2, 0x11, # ja 0x1234 (aka jnbe)
|
|
0x0f, 0x88, 0xee, 0x11, # js 0x1234
|
|
0x0f, 0x89, 0xea, 0x11, # jns 0x1234
|
|
0x0f, 0x8A, 0xe6, 0x11, # jp 0x1234 (aka jpe)
|
|
0x0f, 0x8B, 0xe2, 0x11, # jnp 0x1234 (aka jpo)
|
|
0x0f, 0x8C, 0xde, 0x11, # jl 0x1234 (aka jnge)
|
|
0x0f, 0x8D, 0xda, 0x11, # jge 0x1234 (aka jnl)
|
|
0x0f, 0x8E, 0xd6, 0x11, # jle 0x1234 (aka jng)
|
|
0x0f, 0x8F, 0xd2, 0x11, # jg 0x1234 (aka jnle)
|
|
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "jo 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x70, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jno 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x71, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jb 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x72, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jae 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x73, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "je 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x74, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jne 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x75, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jbe 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x76, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "ja 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x77, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "js 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x78, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jns 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x79, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jp 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7a, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jnp 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7b, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jl 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7c, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jge 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7d, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jle 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7e, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jg 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7f, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jcxz 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe3, 0x0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
regs_read: [ ip, cx ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jo 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x80, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jno 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x81, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jb 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x82, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jae 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x83, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "je 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x84, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jne 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x85, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jbe 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x86, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "ja 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x87, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "js 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x88, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jns 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x89, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jp 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8A, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jnp 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8B, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jl 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8C, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jge 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8D, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jle 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8E, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jg 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8F, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x1234
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ flags, ip ]
|
|
regs_write: [ ip ]
|
|
|
|
-
|
|
input:
|
|
name: "Conditional jump, 32-bit decode mode"
|
|
bytes: [
|
|
0x70, 0x7d, # jo 0x7f
|
|
0x71, 0x7b, # jno 0x7f
|
|
0x72, 0x79, # jb 0x7f (aka jc/jnae)
|
|
0x73, 0x77, # jae 0x7f (aka jnb/jnc)
|
|
0x74, 0x75, # je 0x7f (aka jz)
|
|
0x75, 0x73, # jne 0x7f (aka jnz)
|
|
0x76, 0x71, # jbe 0x7f (aka jna)
|
|
0x77, 0x6f, # ja 0x7f (aka jnbe)
|
|
0x78, 0x6d, # js 0x7f
|
|
0x79, 0x6b, # jns 0x7f
|
|
0x7a, 0x69, # jp 0x7f (aka jpe)
|
|
0x7b, 0x67, # jnp 0x7f (aka jpo)
|
|
0x7c, 0x65, # jl 0x7f (aka jnge)
|
|
0x7d, 0x63, # jge 0x7f (aka jnl)
|
|
0x7e, 0x61, # jle 0x7f (aka jng)
|
|
0x7f, 0x5f, # jg 0x7f (aka jnle)
|
|
0xe3, 0x5d, # jecxz 0x7f (aka jcxz/jrcxz)
|
|
0x0f, 0x80, 0x50, 0x56, 0x34, 0x12, # jo 0x12345678
|
|
0x0f, 0x81, 0x4a, 0x56, 0x34, 0x12, # jno 0x12345678
|
|
0x0f, 0x82, 0x44, 0x56, 0x34, 0x12, # jb 0x12345678 (aka jc/jnae)
|
|
0x0f, 0x83, 0x3e, 0x56, 0x34, 0x12, # jae 0x12345678 (aka jnb/jnc)
|
|
0x0f, 0x84, 0x38, 0x56, 0x34, 0x12, # je 0x12345678 (aka jz)
|
|
0x0f, 0x85, 0x32, 0x56, 0x34, 0x12, # jne 0x12345678 (aka jnz)
|
|
0x0f, 0x86, 0x2c, 0x56, 0x34, 0x12, # jbe 0x12345678 (aka jna)
|
|
0x0f, 0x87, 0x26, 0x56, 0x34, 0x12, # ja 0x12345678 (aka jnbe)
|
|
0x0f, 0x88, 0x20, 0x56, 0x34, 0x12, # js 0x12345678
|
|
0x0f, 0x89, 0x1a, 0x56, 0x34, 0x12, # jns 0x12345678
|
|
0x0f, 0x8A, 0x14, 0x56, 0x34, 0x12, # jp 0x12345678 (aka jpe)
|
|
0x0f, 0x8B, 0x0e, 0x56, 0x34, 0x12, # jnp 0x12345678 (aka jpo)
|
|
0x0f, 0x8C, 0x08, 0x56, 0x34, 0x12, # jl 0x12345678 (aka jnge)
|
|
0x0f, 0x8D, 0x02, 0x56, 0x34, 0x12, # jge 0x12345678 (aka jnl)
|
|
0x0f, 0x8E, 0xfc, 0x55, 0x34, 0x12, # jle 0x12345678 (aka jng)
|
|
0x0f, 0x8F, 0xf6, 0x55, 0x34, 0x12, # jg 0x12345678 (aka jnle)
|
|
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "jo 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x70, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jno 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x71, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jb 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x72, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jae 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x73, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "je 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x74, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jne 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x75, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jbe 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x76, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "ja 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x77, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "js 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x78, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jns 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x79, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jp 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7a, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jnp 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7b, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jl 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7c, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jge 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7d, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jle 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7e, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jg 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7f, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jecxz 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe3, 0x0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
regs_read: [ eip, ecx ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jo 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x80, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jno 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x81, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jb 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x82, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jae 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x83, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "je 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x84, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jne 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x85, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jbe 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x86, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "ja 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x87, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "js 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x88, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jns 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x89, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jp 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8A, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jnp 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8B, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jl 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8C, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jge 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8D, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jle 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8E, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jg 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8F, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eflags, eip ]
|
|
regs_write: [ eip ]
|
|
|
|
-
|
|
input:
|
|
name: "Conditional jump, 64-bit decode mode"
|
|
bytes: [
|
|
0x70, 0x7d, # jo 0x7f
|
|
0x71, 0x7b, # jno 0x7f
|
|
0x72, 0x79, # jb 0x7f (aka jc/jnae)
|
|
0x73, 0x77, # jae 0x7f (aka jnb/jnc)
|
|
0x74, 0x75, # je 0x7f (aka jz)
|
|
0x75, 0x73, # jne 0x7f (aka jnz)
|
|
0x76, 0x71, # jbe 0x7f (aka jna)
|
|
0x77, 0x6f, # ja 0x7f (aka jnbe)
|
|
0x78, 0x6d, # js 0x7f
|
|
0x79, 0x6b, # jns 0x7f
|
|
0x7a, 0x69, # jp 0x7f (aka jpe)
|
|
0x7b, 0x67, # jnp 0x7f (aka jpo)
|
|
0x7c, 0x65, # jl 0x7f (aka jnge)
|
|
0x7d, 0x63, # jge 0x7f (aka jnl)
|
|
0x7e, 0x61, # jle 0x7f (aka jng)
|
|
0x7f, 0x5f, # jg 0x7f (aka jnle)
|
|
0xe3, 0x5d, # jrcxz 0x7f (aka jcxz/jecxz)
|
|
0x0f, 0x80, 0x50, 0x56, 0x34, 0x12, # jo 0x12345678
|
|
0x0f, 0x81, 0x4a, 0x56, 0x34, 0x12, # jno 0x12345678
|
|
0x0f, 0x82, 0x44, 0x56, 0x34, 0x12, # jb 0x12345678 (aka jc/jnae)
|
|
0x0f, 0x83, 0x3e, 0x56, 0x34, 0x12, # jae 0x12345678 (aka jnb/jnc)
|
|
0x0f, 0x84, 0x38, 0x56, 0x34, 0x12, # je 0x12345678 (aka jz)
|
|
0x0f, 0x85, 0x32, 0x56, 0x34, 0x12, # jne 0x12345678 (aka jnz)
|
|
0x0f, 0x86, 0x2c, 0x56, 0x34, 0x12, # jbe 0x12345678 (aka jna)
|
|
0x0f, 0x87, 0x26, 0x56, 0x34, 0x12, # ja 0x12345678 (aka jnbe)
|
|
0x0f, 0x88, 0x20, 0x56, 0x34, 0x12, # js 0x12345678
|
|
0x0f, 0x89, 0x1a, 0x56, 0x34, 0x12, # jns 0x12345678
|
|
0x0f, 0x8A, 0x14, 0x56, 0x34, 0x12, # jp 0x12345678 (aka jpe)
|
|
0x0f, 0x8B, 0x0e, 0x56, 0x34, 0x12, # jnp 0x12345678 (aka jpo)
|
|
0x0f, 0x8C, 0x08, 0x56, 0x34, 0x12, # jl 0x12345678 (aka jnge)
|
|
0x0f, 0x8D, 0x02, 0x56, 0x34, 0x12, # jge 0x12345678 (aka jnl)
|
|
0x0f, 0x8E, 0xfc, 0x55, 0x34, 0x12, # jle 0x12345678 (aka jng)
|
|
0x0f, 0x8F, 0xf6, 0x55, 0x34, 0x12, # jg 0x12345678 (aka jnle)
|
|
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "jo 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x70, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jno 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x71, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jb 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x72, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jae 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x73, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "je 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x74, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jne 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x75, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jbe 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x76, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "ja 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x77, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "js 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x78, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jns 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x79, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jp 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7a, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jnp 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7b, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jl 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7c, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jge 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7d, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jle 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7e, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jg 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x7f, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jrcxz 0x7f"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe3, 0x0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x7f
|
|
regs_read: [ rip, rcx ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jo 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x80, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jno 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x81, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jb 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x82, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jae 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x83, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_CF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "je 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x84, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jne 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x85, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jbe 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x86, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "ja 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x87, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_CF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "js 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x88, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jns 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x89, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jp 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8A, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jnp 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8B, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_PF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jl 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8C, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jge 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8D, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jle 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8E, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jg 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x8F, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_IMM
|
|
imm: 0x12345678
|
|
eflags: [ X86_EFLAGS_TEST_OF, X86_EFLAGS_TEST_SF, X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rflags, rip ]
|
|
regs_write: [ rip ]
|
|
|
|
-
|
|
input:
|
|
name: "Loop according to ECX count, 16-bit decode mode"
|
|
bytes: [
|
|
0xe2, 0x32, # loop 0x34
|
|
0xe1, 0x30, # loope 0x34
|
|
0xe0, 0x2e, # loopne 0x34
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "loop 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe2, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ ip, cx ]
|
|
regs_write: [ ip, cx ]
|
|
-
|
|
asm_text: "loope 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe1, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ ip, cx, flags ]
|
|
regs_write: [ ip, cx ]
|
|
-
|
|
asm_text: "loopne 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe0, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ ip, cx, flags ]
|
|
regs_write: [ ip, cx ]
|
|
|
|
-
|
|
input:
|
|
name: "Loop according to ECX count, 32-bit decode mode"
|
|
bytes: [
|
|
0xe2, 0x32, # loop 0x34
|
|
0xe1, 0x30, # loope 0x34
|
|
0xe0, 0x2e, # loopne 0x34
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "loop 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe2, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ eip, ecx ]
|
|
regs_write: [ eip, ecx ]
|
|
-
|
|
asm_text: "loope 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe1, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eip, ecx, eflags ]
|
|
regs_write: [ eip, ecx ]
|
|
-
|
|
asm_text: "loopne 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe0, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ eip, ecx, eflags ]
|
|
regs_write: [ eip, ecx ]
|
|
|
|
-
|
|
input:
|
|
name: "Loop according to ECX count, 64-bit decode mode"
|
|
bytes: [
|
|
0xe2, 0x32, # loop 0x34
|
|
0x48, 0xe2, 0x2f, # REX.W loop 0x34 (should ignore REX)
|
|
0x67, 0xe2, 0x2c, # loop 0x34 (with size override)
|
|
0xe1, 0x2a, # loope 0x34
|
|
0x48, 0xe1, 0x27, # REX.W loop 0x34 (should ignore REX)
|
|
0x67, 0xe1, 0x24, # loop 0x34 (with size override)
|
|
0xe0, 0x22, # loope 0x34
|
|
0x48, 0xe0, 0x1f, # REX.W loop 0x34 (should ignore REX)
|
|
0x67, 0xe0, 0x1c, # loop 0x34 (with size override)
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "loop 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe2, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rip, rcx ]
|
|
regs_write: [ rip, rcx ]
|
|
-
|
|
asm_text: "loop 0x34"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe2, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rip, rcx ]
|
|
regs_write: [ rip, rcx ]
|
|
-
|
|
asm_text: "loop 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_ADDRSIZE ]
|
|
opcode: [ 0xe2, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rip, rcx ]
|
|
regs_write: [ rip, rcx ] # BUG: should be ecx
|
|
-
|
|
asm_text: "loope 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe1, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rip, rcx, rflags ]
|
|
regs_write: [ rip, rcx ]
|
|
-
|
|
asm_text: "loope 0x34"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe1, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rip, rcx, rflags ]
|
|
regs_write: [ rip, rcx ]
|
|
-
|
|
asm_text: "loope 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_ADDRSIZE ]
|
|
opcode: [ 0xe1, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rip, rcx, rflags ]
|
|
regs_write: [ rip, rcx ] # BUG: should be ecx
|
|
-
|
|
asm_text: "loopne 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe0, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rip, rcx, rflags ]
|
|
regs_write: [ rip, rcx ]
|
|
-
|
|
asm_text: "loopne 0x34"
|
|
details:
|
|
x86:
|
|
rex: 0x48
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe0, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rip, rcx, rflags ]
|
|
regs_write: [ rip, rcx ]
|
|
-
|
|
asm_text: "loopne 0x34"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_ADDRSIZE ]
|
|
opcode: [ 0xe0, 0x00, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_TEST_ZF ]
|
|
regs_read: [ rip, rcx, rflags ]
|
|
regs_write: [ rip, rcx ] # BUG: should be ecx
|
|
|
|
-
|
|
input:
|
|
name: "Unconditional jump, 16-bit decode mode"
|
|
bytes: [
|
|
0xeb, 0x10, # jmp 0x12
|
|
0xe9, 0x2f, 0x12, # jmp 0x1234
|
|
0xff, 0xa0, 0x34, 0x12, # jmp word ptr [bx+si+0x1234]
|
|
0xff, 0xe0, # jmp ax
|
|
0xea, 0x34, 0x12, 0x78, 0x56, # ljmp 0x5678:0x1234
|
|
0xff, 0xa8, 0x34, 0x12, # jmp far [bx + si + 0x1234]
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "jmp 0x12"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xeb, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jmp 0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe9, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ ip ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jmp word ptr [bx + si + 0x1234]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ bx, si ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "jmp ax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ ax ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "ljmp 0x5678:0x1234"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xea, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ ]
|
|
regs_write: [ ip ]
|
|
-
|
|
asm_text: "ljmp [bx + si + 0x1234]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ ]
|
|
regs_write: [ ip ]
|
|
|
|
-
|
|
input:
|
|
name: "Unconditional jump, 32-bit decode mode"
|
|
bytes: [
|
|
0xeb, 0x10, # jmp 0x12
|
|
0xe9, 0x71, 0x56, 0x34, 0x12, # jmp 0x1234
|
|
0xff, 0xa0, 0x78, 0x56, 0x34, 0x12, # jmp dword ptr [eax+0x12345678]
|
|
0xff, 0xe0, # jmp eax
|
|
0xea, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, # ljmp 0x5678:0x12345678
|
|
0xff, 0xa8, 0x78, 0x56, 0x34, 0x12, # jmp far [eax + 0x1234]
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "jmp 0x12"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xeb, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jmp 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe9, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ eip ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jmp dword ptr [eax + 0x12345678]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ eax ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jmp eax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ eax ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "ljmp 0x5678:0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xea, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ ]
|
|
regs_write: [ eip ]
|
|
-
|
|
asm_text: "jmp ptr [eax + 0x12345678]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ eax ]
|
|
regs_write: [ eip ]
|
|
|
|
-
|
|
input:
|
|
name: "Unconditional jump, 64-bit decode mode"
|
|
bytes: [
|
|
0xeb, 0x10, # jmp 0x12
|
|
0xe9, 0x71, 0x56, 0x34, 0x12, # jmp 0x12345678
|
|
0xff, 0xa0, 0x78, 0x56, 0x34, 0x12, # jmp qword ptr [rax+0x12345678]
|
|
0xff, 0xe0, # jmp rax
|
|
0xff, 0xa8, 0x78, 0x56, 0x34, 0x12, # jmp ptr far [rax + 0x12345678]
|
|
0x48, 0xff, 0xa8, 0x78, 0x56, 0x34, 0x12, # REX.W jmp ptr far [rax + 0x12345678]
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "jmp 0x12"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xeb, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jmp 0x12345678"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xe9, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rip ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jmp qword ptr [rax + 0x12345678]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rax ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jmp rax"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rax ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "jmp ptr [rax + 0x12345678]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rax ]
|
|
regs_write: [ rip ]
|
|
-
|
|
asm_text: "ljmp [rax + 0x12345678]"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0xff, 0x00, 0x00, 0x00 ]
|
|
regs_read: [ rax ]
|
|
regs_write: [ rip ]
|
|
|
|
-
|
|
input:
|
|
name: "System call instructions, 16-bit decode"
|
|
bytes: [
|
|
0x0f, 0x34, # sysenter
|
|
0x0f, 0x35, # sysexit
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "sysenter"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x34, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_IF ]
|
|
regs_read: [ ]
|
|
regs_write: [ ip, sp, flags ]
|
|
-
|
|
asm_text: "sysexit"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x35, 0x00, 0x00 ]
|
|
eflags: [ ]
|
|
regs_read: [ cx, dx ]
|
|
regs_write: [ ip, sp ]
|
|
|
|
-
|
|
input:
|
|
name: "System call instructions, 32-bit decode"
|
|
bytes: [
|
|
0x0f, 0x34, # sysenter
|
|
0x0f, 0x35, # sysexit
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "sysenter"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x34, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_IF ]
|
|
regs_read: [ ]
|
|
regs_write: [ eip, esp, eflags ]
|
|
-
|
|
asm_text: "sysexit"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x35, 0x00, 0x00 ]
|
|
eflags: [ ]
|
|
regs_read: [ ecx, edx ]
|
|
regs_write: [ eip, esp ]
|
|
|
|
-
|
|
input:
|
|
name: "System call instructions, 64-bit decode"
|
|
bytes: [
|
|
0x0f, 0x05, # syscall
|
|
0x0f, 0x34, # sysenter
|
|
0x0f, 0x35, # sysexit
|
|
0x40, 0x0f, 0x35, # REX.W sysexit
|
|
0x0f, 0x07, # sysret
|
|
0x40, 0x0f, 0x07, # REX.W sysret
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "syscall"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x05, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_DF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_MODIFY_RF ] # should write all flags
|
|
regs_read: [ ]
|
|
regs_write: [ rip, rcx, r11, rflags ]
|
|
-
|
|
asm_text: "sysenter"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x34, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_IF ]
|
|
regs_read: [ ]
|
|
regs_write: [ rip, rsp, rflags ]
|
|
-
|
|
asm_text: "sysexit"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x35, 0x00, 0x00 ]
|
|
eflags: [ ]
|
|
regs_read: [ rcx, rdx ]
|
|
regs_write: [ rip, rsp ]
|
|
-
|
|
asm_text: "sysexit"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x35, 0x00, 0x00 ]
|
|
eflags: [ ]
|
|
regs_read: [ rcx, rdx ]
|
|
regs_write: [ rip, rsp ]
|
|
-
|
|
asm_text: "sysret"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x07, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_DF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_MODIFY_RF ]
|
|
regs_read: [ rcx, r11 ]
|
|
regs_write: [ rip, rflags ]
|
|
-
|
|
asm_text: "sysret"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0x07, 0x00, 0x00 ]
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_TF, X86_EFLAGS_MODIFY_IF, X86_EFLAGS_MODIFY_DF, X86_EFLAGS_MODIFY_NT, X86_EFLAGS_MODIFY_RF ]
|
|
regs_read: [ rcx, r11 ]
|
|
regs_write: [ rip, rflags ]
|
|
|
|
-
|
|
input:
|
|
name: "Compare and exchange, 16-bit decode mode"
|
|
bytes: [
|
|
0x0f, 0xb0, 0xfe, # cmpxchg dh, bh
|
|
0x0f, 0xb0, 0xb6, 0x34, 0x12, # cmpxchg byte ptr [bp + 0x1234], dh
|
|
0x0f, 0xb1, 0xfe, # cmpxchg si, di
|
|
0x0f, 0xb1, 0xb6, 0x34, 0x12, # cmpxchg byte ptr [bp + 0x1234], si
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_16 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "cmpxchg dh, bh"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: dh
|
|
access: CS_AC_WRITE # BUG: dh is also read
|
|
-
|
|
type: X86_OP_REG
|
|
reg: bh
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ al, bh ] # BUG: dh is also read
|
|
regs_write: [ al, flags, dh ]
|
|
-
|
|
asm_text: "cmpxchg byte ptr [bp + 0x1234], dh"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb0, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bp
|
|
mem_disp: 0x1234
|
|
size: 1
|
|
access: CS_AC_READ # BUG: memory operand is also written
|
|
-
|
|
type: X86_OP_REG
|
|
reg: dh
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ al, bp, dh ]
|
|
regs_write: [ al, flags ]
|
|
-
|
|
asm_text: "cmpxchg si, di"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb1, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: si
|
|
access: CS_AC_WRITE # BUG: si is also read
|
|
-
|
|
type: X86_OP_REG
|
|
reg: di
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ ax, di ]
|
|
regs_write: [ ax, flags, si ]
|
|
-
|
|
asm_text: "cmpxchg word ptr [bp + 0x1234], si"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb1, 0x0, 0x0 ]
|
|
addr_size: 2
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: bp
|
|
mem_disp: 0x1234
|
|
size: 2
|
|
access: CS_AC_READ # BUG: memory operand is also written
|
|
-
|
|
type: X86_OP_REG
|
|
reg: si
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, ]
|
|
regs_read: [ ax, bp, si ]
|
|
regs_write: [ ax, flags ]
|
|
|
|
-
|
|
input:
|
|
name: "Compare and exchange, 32-bit decode mode"
|
|
bytes: [
|
|
0x0f, 0xb0, 0xfe, # cmpxchg dh, bh
|
|
0x0f, 0xb0, 0xb6, 0x34, 0x12, 0x0, 0x0, # cmpxchg byte ptr [esi + 0x1234], dh
|
|
0x0f, 0xb1, 0xfe, # cmpxchg esi, edi
|
|
0x0f, 0xb1, 0xb6, 0x34, 0x12, 0x0, 0x0 # cmpxchg byte ptr [esi + 0x1234], esi
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "cmpxchg dh, bh"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb0, 0x0, 0x0 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: dh
|
|
access: CS_AC_WRITE # BUG: dh is also read
|
|
-
|
|
type: X86_OP_REG
|
|
reg: bh
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ al, bh ] # BUG: dh is also read
|
|
regs_write: [ al, eflags, dh ]
|
|
-
|
|
asm_text: "cmpxchg byte ptr [esi + 0x1234], dh"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb0, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: esi
|
|
mem_disp: 0x1234
|
|
size: 1
|
|
access: CS_AC_READ # BUG: memory operand is also written
|
|
-
|
|
type: X86_OP_REG
|
|
reg: dh
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ al, esi, dh ]
|
|
regs_write: [ al, eflags ]
|
|
-
|
|
asm_text: "cmpxchg esi, edi"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb1, 0x0, 0x0 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: esi
|
|
access: CS_AC_WRITE # BUG: esi is also read
|
|
-
|
|
type: X86_OP_REG
|
|
reg: edi
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ eax, edi ]
|
|
regs_write: [ eax, eflags, esi ]
|
|
-
|
|
asm_text: "cmpxchg dword ptr [esi + 0x1234], esi"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb1, 0x0, 0x0 ]
|
|
addr_size: 4
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: esi
|
|
mem_disp: 0x1234
|
|
size: 4
|
|
access: CS_AC_READ # BUG: memory operand is also written
|
|
-
|
|
type: X86_OP_REG
|
|
reg: esi
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, ]
|
|
regs_read: [ eax, esi ]
|
|
regs_write: [ eax, eflags ]
|
|
|
|
-
|
|
input:
|
|
name: "Compare and exchange, 64-bit decode mode"
|
|
bytes: [
|
|
0x0f, 0xb0, 0xfe, # cmpxchg dh, bh
|
|
0x0f, 0xb0, 0xb6, 0x34, 0x12, 0x0, 0x0, # cmpxchg byte ptr [rsi + 0x1234], dh
|
|
0x0f, 0xb1, 0xfe, # cmpxchg esi, edi
|
|
0x0f, 0xb1, 0xb6, 0x34, 0x12, 0x0, 0x0, # cmpxchg byte ptr [rsi + 0x1234], esi
|
|
0x40, 0x0f, 0xb1, 0xfe, # REX.W cmpxchg rsi, rdi
|
|
0x40, 0x0f, 0xb1, 0xb6, 0x34, 0x12, 0x0, 0x0 # REX.W cmpxchg qword ptr [rsi + 0x1234], rsi
|
|
]
|
|
arch: "x86"
|
|
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
|
|
expected:
|
|
insns:
|
|
-
|
|
asm_text: "cmpxchg dh, bh"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb0, 0x0, 0x0 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: dh
|
|
access: CS_AC_WRITE # BUG: dh is also read
|
|
-
|
|
type: X86_OP_REG
|
|
reg: bh
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ al, bh ] # BUG: dh is also read
|
|
regs_write: [ al, rflags, dh ]
|
|
-
|
|
asm_text: "cmpxchg byte ptr [rsi + 0x1234], dh"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb0, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rsi
|
|
mem_disp: 0x1234
|
|
size: 1
|
|
access: CS_AC_READ # BUG: memory operand is also written
|
|
-
|
|
type: X86_OP_REG
|
|
reg: dh
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ al, rsi, dh ]
|
|
regs_write: [ al, rflags ]
|
|
-
|
|
asm_text: "cmpxchg esi, edi"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb1, 0x0, 0x0 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: esi
|
|
access: CS_AC_WRITE # BUG: esi is also read
|
|
-
|
|
type: X86_OP_REG
|
|
reg: edi
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ eax, edi ]
|
|
regs_write: [ eax, rflags, esi ]
|
|
-
|
|
asm_text: "cmpxchg dword ptr [rsi + 0x1234], esi"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb1, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rsi
|
|
mem_disp: 0x1234
|
|
size: 4
|
|
access: CS_AC_READ # BUG: memory operand is also written
|
|
-
|
|
type: X86_OP_REG
|
|
reg: esi
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, ]
|
|
regs_read: [ eax, rsi, esi ]
|
|
regs_write: [ eax, rflags ]
|
|
-
|
|
asm_text: "cmpxchg esi, edi"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb1, 0x0, 0x0 ]
|
|
operands:
|
|
-
|
|
type: X86_OP_REG
|
|
reg: esi
|
|
access: CS_AC_WRITE # BUG: esi is also read
|
|
-
|
|
type: X86_OP_REG
|
|
reg: edi
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF ]
|
|
regs_read: [ eax, edi ]
|
|
regs_write: [ eax, rflags, esi ]
|
|
-
|
|
asm_text: "cmpxchg dword ptr [rsi + 0x1234], esi"
|
|
details:
|
|
x86:
|
|
prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
|
|
opcode: [ 0x0f, 0xb1, 0x0, 0x0 ]
|
|
addr_size: 8
|
|
operands:
|
|
-
|
|
type: X86_OP_MEM
|
|
mem_base: rsi
|
|
mem_disp: 0x1234
|
|
size: 4
|
|
access: CS_AC_READ # BUG: memory operand is also written
|
|
-
|
|
type: X86_OP_REG
|
|
reg: esi
|
|
access: CS_AC_READ
|
|
eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, ]
|
|
regs_read: [ eax, rsi, esi ]
|
|
regs_write: [ eax, rflags ]
|