]> granicus.if.org Git - yasm/commitdiff
Add some imm64 tests.
authorPeter Johnson <peter@tortall.net>
Fri, 21 Sep 2007 18:06:47 +0000 (18:06 -0000)
committerPeter Johnson <peter@tortall.net>
Fri, 21 Sep 2007 18:06:47 +0000 (18:06 -0000)
svn path=/trunk/yasm/; revision=1983

modules/arch/x86/tests/Makefile.inc
modules/arch/x86/tests/imm64.asm [new file with mode: 0644]
modules/arch/x86/tests/imm64.errwarn [new file with mode: 0644]
modules/arch/x86/tests/imm64.hex [new file with mode: 0644]

index 3bd57e0e265a7fa48fce425ad5e42f50d2b49250..87761177f900341e261e1e544c52c1eed7bcb9d9 100644 (file)
@@ -55,6 +55,9 @@ EXTRA_DIST += modules/arch/x86/tests/fwdequ64.asm
 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
diff --git a/modules/arch/x86/tests/imm64.asm b/modules/arch/x86/tests/imm64.asm
new file mode 100644 (file)
index 0000000..5b41bfa
--- /dev/null
@@ -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
+
diff --git a/modules/arch/x86/tests/imm64.errwarn b/modules/arch/x86/tests/imm64.errwarn
new file mode 100644 (file)
index 0000000..a048735
--- /dev/null
@@ -0,0 +1,3 @@
+-:17: warning: value does not fit in 32 bit field
+-:23: warning: value does not fit in 32 bit field
+-:29: warning: value does not fit in 32 bit field
diff --git a/modules/arch/x86/tests/imm64.hex b/modules/arch/x86/tests/imm64.hex
new file mode 100644 (file)
index 0000000..af46a71
--- /dev/null
@@ -0,0 +1,175 @@
+48 
+c7 
+c0 
+00 
+10 
+00 
+00 
+48 
+b8 
+88 
+77 
+66 
+55 
+44 
+33 
+22 
+11 
+48 
+c7 
+c0 
+00 
+00 
+00 
+00 
+48 
+c7 
+c0 
+00 
+00 
+00 
+00 
+48 
+b8 
+00 
+10 
+00 
+00 
+00 
+00 
+00 
+00 
+48 
+b8 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+48 
+b8 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+48 
+c7 
+00 
+00 
+10 
+00 
+00 
+48 
+c7 
+00 
+88 
+77 
+66 
+55 
+48 
+c7 
+00 
+00 
+00 
+00 
+00 
+48 
+c7 
+00 
+00 
+00 
+00 
+00 
+48 
+05 
+00 
+10 
+00 
+00 
+48 
+05 
+88 
+77 
+66 
+55 
+48 
+05 
+00 
+00 
+00 
+00 
+48 
+05 
+00 
+00 
+00 
+00 
+48 
+89 
+04 
+25 
+00 
+10 
+00 
+00 
+48 
+89 
+04 
+25 
+88 
+77 
+66 
+55 
+48 
+89 
+04 
+25 
+00 
+00 
+00 
+00 
+48 
+89 
+04 
+25 
+00 
+00 
+00 
+00 
+48 
+a3 
+00 
+10 
+00 
+00 
+00 
+00 
+00 
+00 
+48 
+a3 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+48 
+a3 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00