diff --git a/unittests/32Bit_ASM/X87/FST_AddrModes.asm b/unittests/32Bit_ASM/X87/FST_AddrModes.asm new file mode 100644 index 0000000000..93d5bb678c --- /dev/null +++ b/unittests/32Bit_ASM/X87/FST_AddrModes.asm @@ -0,0 +1,44 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0x3f800000", + "RBX": "0x3f800000", + "RCX": "0x3f800000", + "RBP": "0x3f800000", + "RDI": "0x3f800000", + "RSP": "0x3f800000" + }, + "MemoryRegions": { + "0xf0000000": "4096" + }, + "Mode": "32BIT" +} +%endif + +section .bss +base resb 4096 + +section .text + +; Setup +fld1 +lea edx, [rel base] +mov esi, 0x64 + +; Test fst +fst dword [edx] +fst dword [edx + 0xa] +fst dword [edx + esi] +fst dword [edx + esi * 4] +fst dword [edx + esi + 0xa] +fst dword [edx + esi * 4 + 0xa] + +; Result check +mov eax, dword [edx] +mov ebx, dword [edx + 0xa] +mov ecx, dword [edx + esi] +mov ebp, dword [edx + esi * 4] +mov edi, dword [edx + esi + 0xa] +mov esp, dword [edx + esi * 4 + 0xa] + +hlt diff --git a/unittests/ASM/X87/FST_AddrModes.asm b/unittests/ASM/X87/FST_AddrModes.asm new file mode 100644 index 0000000000..87fc46387c --- /dev/null +++ b/unittests/ASM/X87/FST_AddrModes.asm @@ -0,0 +1,43 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "0x3f800000", + "RBX": "0x3f800000", + "RCX": "0x3f800000", + "R8": "0x3f800000", + "R9": "0x3f800000", + "R10": "0x3f800000" + }, + "MemoryRegions": { + "0x100000000": "4096" + } +} +%endif + +section .bss +base resb 4096 + +section .text + +; Setup +fld1 +lea rdx, [rel base] +mov rsi, 0x64 + +; Test fst +fst dword [rdx] +fst dword [rdx + 0xa] +fst dword [rdx + rsi] +fst dword [rdx + rsi * 4] +fst dword [rdx + rsi + 0xa] +fst dword [rdx + rsi * 4 + 0xa] + +; Result check +mov eax, dword [rdx] +mov ebx, dword [rdx + 0xa] +mov ecx, dword [rdx + rsi] +mov r8d, dword [rdx + rsi * 4] +mov r9d, dword [rdx + rsi + 0xa] +mov r10d, dword [rdx + rsi * 4 + 0xa] + +hlt