From 5cc8504fb555a5878e6aa086c9fadc10e177d963 Mon Sep 17 00:00:00 2001 From: raaller Date: Thu, 3 Sep 2026 22:41:06 +0300 Subject: [PATCH] x86: fix JO/JNO operand size in 64-bit mode --- arch/X86/X86DisassemblerDecoder.c | 2 ++ tests/issues/issues.yaml | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) 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"