aboutsummaryrefslogtreecommitdiff
path: root/modules/arch/x86/tests/imm64.asm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/arch/x86/tests/imm64.asm')
-rw-r--r--modules/arch/x86/tests/imm64.asm35
1 files changed, 35 insertions, 0 deletions
diff --git a/modules/arch/x86/tests/imm64.asm b/modules/arch/x86/tests/imm64.asm
new file mode 100644
index 0000000..5b41bfa
--- /dev/null
+++ b/modules/arch/x86/tests/imm64.asm
@@ -0,0 +1,35 @@
+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
+