Merge pull request #5820 from javelina-pkwy/lea-reg-reg

Decoder: fix illegal LEA encoding
This commit is contained in:
Ryan Houdek authored and GitHub committed 2026-08-17 09:58:47 -07:00
commit a3d609ebb1
2 files changed
+46 -1

No files matched your search

@@ -318,7 +318,7 @@ const std::array<X86InstInfo, MAX_PRIMARY_TABLE_SIZE> BaseOps = []() consteval {
{0x8A, 1, X86InstInfo{"MOV", TYPE_INST, GenFlagsSameSize(SIZE_8BIT) | FLAGS_MODRM, 0}},
{0x8B, 1, X86InstInfo{"MOV", TYPE_INST, FLAGS_MODRM, 0}},
{0x8C, 1, X86InstInfo{"MOV", TYPE_INST, GenFlagsSrcSize(SIZE_16BIT) | FLAGS_MODRM | FLAGS_SF_MOD_DST, 0}},
{0x8D, 1, X86InstInfo{"LEA", TYPE_INST, GenFlagsSameSize(SIZE_64BITDEF) | FLAGS_MODRM, 0}},
{0x8D, 1, X86InstInfo{"LEA", TYPE_INST, GenFlagsSameSize(SIZE_64BITDEF) | FLAGS_MODRM | FLAGS_SF_MOD_MEM_ONLY, 0}},
{0x8E, 1, X86InstInfo{"MOV", TYPE_INST, GenFlagsSameSize(SIZE_16BIT) | FLAGS_MODRM, 0}},
{0x8F, 1, X86InstInfo{"POP", TYPE_INST, GenFlagsSameSize(SIZE_64BITDEF) | FLAGS_MODRM | FLAGS_SF_MOD_DST | FLAGS_SF_MOD_ZERO_REG | FLAGS_DEBUG_MEM_ACCESS, 0}},
{0x90, 8, X86InstInfo{"XCHG", TYPE_INST, FLAGS_SF_REX_IN_BYTE | FLAGS_SF_SRC_RAX, 0}},
+45
View File
@@ -2461,6 +2461,51 @@
"mov w4, w20"
]
},
"db 0x66, 0x8D, 0xC0": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x8d",
"LEA ax, ax illegal register to register encoding"
],
"ExpectedArm64ASM": [
"mov w20, #0x10000",
"str x20, [x28, #24]",
"mov w0, #0x401",
"str x0, [x28, #1496]",
"ldr x0, [x28, #2968]",
"br x0"
]
},
"db 0x8D, 0xC0": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x8d",
"LEA eax, eax illegal register to register encoding"
],
"ExpectedArm64ASM": [
"mov w20, #0x10000",
"str x20, [x28, #24]",
"mov w0, #0x401",
"str x0, [x28, #1496]",
"ldr x0, [x28, #2968]",
"br x0"
]
},
"db 0x48, 0x8D, 0xC0": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x8d",
"LEA rax, rax illegal register to register encoding"
],
"ExpectedArm64ASM": [
"mov w20, #0x10000",
"str x20, [x28, #24]",
"mov w0, #0x401",
"str x0, [x28, #1496]",
"ldr x0, [x28, #2968]",
"br x0"
]
},
"mov cs, ax": {
"ExpectedInstructionCount": 4,
"Skip": "Yes",