]> granicus.if.org Git - yasm/commitdiff
* x86id.c (yasm_x86__finalize_insn): Don't check for explicit 64-bit
authorPeter Johnson <peter@tortall.net>
Wed, 26 Apr 2006 06:35:46 +0000 (06:35 -0000)
committerPeter Johnson <peter@tortall.net>
Wed, 26 Apr 2006 06:35:46 +0000 (06:35 -0000)
effective address size in GAS mode.  Doing this breaks movabs.
* gas-movabs.asm: Test this.

svn path=/trunk/yasm/; revision=1512

modules/arch/x86/tests/gas64/Makefile.inc
modules/arch/x86/tests/gas64/gas-movabs.asm [new file with mode: 0644]
modules/arch/x86/tests/gas64/gas-movabs.errwarn [new file with mode: 0644]
modules/arch/x86/tests/gas64/gas-movabs.hex [new file with mode: 0644]
modules/arch/x86/x86id.c

index f8a1f87eda5019213de4b143ea207ea103362420..d92a4715f71aa9baaf3690edaf59c7fd7437738b 100644 (file)
@@ -18,6 +18,9 @@ EXTRA_DIST += modules/arch/x86/tests/gas64/gas-inout.hex
 EXTRA_DIST += modules/arch/x86/tests/gas64/gas-moreinsn.asm
 EXTRA_DIST += modules/arch/x86/tests/gas64/gas-moreinsn.errwarn
 EXTRA_DIST += modules/arch/x86/tests/gas64/gas-moreinsn.hex
+EXTRA_DIST += modules/arch/x86/tests/gas64/gas-movabs.asm
+EXTRA_DIST += modules/arch/x86/tests/gas64/gas-movabs.errwarn
+EXTRA_DIST += modules/arch/x86/tests/gas64/gas-movabs.hex
 EXTRA_DIST += modules/arch/x86/tests/gas64/gas-movdq64.asm
 EXTRA_DIST += modules/arch/x86/tests/gas64/gas-movdq64.errwarn
 EXTRA_DIST += modules/arch/x86/tests/gas64/gas-movdq64.hex
diff --git a/modules/arch/x86/tests/gas64/gas-movabs.asm b/modules/arch/x86/tests/gas64/gas-movabs.asm
new file mode 100644 (file)
index 0000000..d4d9a1a
--- /dev/null
@@ -0,0 +1,4 @@
+.comm _CONE, 4, 16
+
+movabsl %eax,(_CONE)
+movabsl (_CONE), %eax
diff --git a/modules/arch/x86/tests/gas64/gas-movabs.errwarn b/modules/arch/x86/tests/gas64/gas-movabs.errwarn
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/modules/arch/x86/tests/gas64/gas-movabs.hex b/modules/arch/x86/tests/gas64/gas-movabs.hex
new file mode 100644 (file)
index 0000000..05c97a3
--- /dev/null
@@ -0,0 +1,672 @@
+7f 
+45 
+4c 
+46 
+02 
+01 
+01 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+01 
+00 
+3e 
+00 
+01 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+20 
+01 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+40 
+00 
+00 
+00 
+00 
+00 
+40 
+00 
+06 
+00 
+01 
+00 
+a3 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+a1 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+01 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+01 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+0a 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+01 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+2e 
+74 
+65 
+78 
+74 
+00 
+2e 
+72 
+65 
+6c 
+61 
+2e 
+74 
+65 
+78 
+74 
+00 
+2e 
+73 
+74 
+72 
+74 
+61 
+62 
+00 
+2e 
+73 
+79 
+6d 
+74 
+61 
+62 
+00 
+2e 
+73 
+68 
+73 
+74 
+72 
+74 
+61 
+62 
+00 
+00 
+2d 
+00 
+5f 
+43 
+4f 
+4e 
+45 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+01 
+00 
+00 
+00 
+04 
+00 
+f1 
+ff 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+03 
+00 
+04 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+10 
+00 
+f2 
+ff 
+10 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+04 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+22 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+84 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+2c 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+12 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+b0 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+09 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+1a 
+00 
+00 
+00 
+02 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+bc 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+60 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+02 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+08 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+18 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+01 
+00 
+00 
+00 
+01 
+00 
+00 
+00 
+06 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+40 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+12 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+10 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+07 
+00 
+00 
+00 
+04 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+54 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+30 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+04 
+00 
+00 
+00 
+08 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+18 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
index e85b8c117e8d7e8d462ec4120aad5d94e63a650b..4679da740e4e6d304b16e37060f33a3a729d29ab 100644 (file)
@@ -2543,8 +2543,8 @@ yasm_x86__finalize_insn(yasm_arch *arch, yasm_bytecode *bc,
            if (mismatch)
                break;
 
-           /* Check for 64-bit effective address size */
-           if (op->type == YASM_INSN__OPERAND_MEMORY) {
+           /* Check for 64-bit effective address size in NASM mode */
+           if (suffix == 0 && op->type == YASM_INSN__OPERAND_MEMORY) {
                if ((info->operands[i] & OPEAS_MASK) == OPEAS_64) {
                    if (op->data.ea->disp_len != 8)
                        mismatch = 1;