diff --git a/arch/X86/X86DisassemblerDecoder.c b/arch/X86/X86DisassemblerDecoder.c index 8d58cd410d..039303768e 100644 --- a/arch/X86/X86DisassemblerDecoder.c +++ b/arch/X86/X86DisassemblerDecoder.c @@ -1287,6 +1287,8 @@ static int getID(struct InternalInstruction *insn) insn->displacementSize = 4; } break; + case 0x80: + case 0x81: case 0x82: case 0x83: case 0x84: diff --git a/tests/issues/issues.yaml b/tests/issues/issues.yaml index 1d64dcd372..e6c021b87b 100644 --- a/tests/issues/issues.yaml +++ b/tests/issues/issues.yaml @@ -7012,3 +7012,25 @@ test_cases: regs_read: [ rsp, ss ] regs_write: [ rsp, rip ] groups: [ ret, mode64 ] + - + input: + name: "issue 3037 x86-64 JO ignores operand-size override" + bytes: [ 0x66,0x0f,0x80,0xce,0xfa,0xa5,0xd8 ] + arch: "CS_ARCH_X86" + options: [ CS_MODE_64, CS_OPT_DETAIL ] + address: 0x0 + expected: + insns: + - + asm_text: "jo 0xffffffffd8a5fad5" + - + input: + name: "issue 3037 x86-64 JNO ignores operand-size override" + bytes: [ 0x66,0x0f,0x81,0xce,0xfa,0xa5,0xd8 ] + arch: "CS_ARCH_X86" + options: [ CS_MODE_64, CS_OPT_DETAIL ] + address: 0x0 + expected: + insns: + - + asm_text: "jno 0xffffffffd8a5fad5"