EXTRA_DIST += modules/arch/x86/tests/fwdequ64.hex
EXTRA_DIST += modules/arch/x86/tests/genopcode.asm
EXTRA_DIST += modules/arch/x86/tests/genopcode.hex
+EXTRA_DIST += modules/arch/x86/tests/imm64.asm
+EXTRA_DIST += modules/arch/x86/tests/imm64.errwarn
+EXTRA_DIST += modules/arch/x86/tests/imm64.hex
EXTRA_DIST += modules/arch/x86/tests/iret.asm
EXTRA_DIST += modules/arch/x86/tests/iret.hex
EXTRA_DIST += modules/arch/x86/tests/jmp64-1.asm
--- /dev/null
+bits 64
+default abs
+;extern label1
+label1:
+label2:
+
+mov rax, 0x1000 ; 32-bit imm
+mov rax, 0x1122334455667788 ; 64-bit imm (larger than signed 32-bit)
+;mov rax, 0x80000000 ; 64-bit imm (larger than signed 32-bit)
+mov rax, label1 ; 32-bit imm <--- not 64-bit!
+mov rax, label2 ; 32-bit imm <--- not 64-bit!
+mov rax, qword 0x1000 ; 64-bit imm
+mov rax, qword label1 ; 64-bit imm
+mov rax, qword label2 ; 64-bit imm
+
+mov qword [rax], 0x1000 ; 32-bit imm
+mov qword [rax], 0x1122334455667788 ; 32-bit imm, overflow warning
+;mov qword [rax], 0x80000000 ; 32-bit imm, overflow warning
+mov qword [rax], label1 ; 32-bit imm (matches default above)
+mov qword [rax], label2 ; 32-bit imm (matches default above)
+
+add rax, 0x1000 ; 32-bit imm
+add rax, 0x1122334455667788 ; 32-bit imm, overflow warning
+;add rax, 0x80000000 ; 32-bit imm, overflow warning
+add rax, label1 ; 32-bit imm (matches default above)
+add rax, label2 ; 32-bit imm (matches default above)
+
+mov [0x1000], rax ; 32-bit disp
+mov [abs 0x1122334455667788], rax ; 64-bit disp
+mov [label1], rax ; 32-bit disp
+mov [label2], rax ; 32-bit disp
+mov [qword 0x1000], rax ; 64-bit disp
+mov [qword label1], rax ; 64-bit disp
+mov [qword label2], rax ; 64-bit disp
+