Files
ircolib/external/capstone/tests/details/x86.yaml
T

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 ]