From c00c9b397e03ec967019c3af42ca17ee44386c37 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sun, 25 Feb 2024 23:46:06 -0800 Subject: [PATCH] Adds a unittest for a bug from #3421 When the source arguments for LoadMem/StoreMem have bit 31 set then they are incorrectly sign extending in some instances. Detected this when testing #3421 but I don't have a proper fix for it. --- .../32Bit_ASM/FEX_bugs/SignExtendBug.asm | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 unittests/32Bit_ASM/FEX_bugs/SignExtendBug.asm diff --git a/unittests/32Bit_ASM/FEX_bugs/SignExtendBug.asm b/unittests/32Bit_ASM/FEX_bugs/SignExtendBug.asm new file mode 100644 index 000000000..ea564e23e --- /dev/null +++ b/unittests/32Bit_ASM/FEX_bugs/SignExtendBug.asm @@ -0,0 +1,20 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0x41424344" + }, + "MemoryRegions": { + "0xf0000000": "4096" + }, + "MemoryData": { + "0xf0000000": "0x41424344" + }, + "Mode": "32BIT" +} +%endif + +; Ensures that zero extension of addresses are adhered to. +lea eax, [0xf000_0000] +mov eax, [ds:eax] + +hlt