gas/
authorJan Beulich <jbeulich@novell.com>
Wed, 2 Mar 2005 07:55:01 +0000 (07:55 +0000)
committerJan Beulich <jbeulich@novell.com>
Wed, 2 Mar 2005 07:55:01 +0000 (07:55 +0000)
2005-03-02  Jan Beulich  <jbeulich@novell.com>

* config/tc-i386.c (intel_e11): If not followed by T_PTR, treat T_BYTE
etc. like normal symbol references (T_ID).

gas/testsuite/
2005-03-02  Jan Beulich  <jbeulich@novell.com>

* gas/i386/intelok.d: Add -r to objdump options. Adjust expectations.
* gas/i386/intelok.s: Add checks for various special memory operands.

gas/ChangeLog
gas/config/tc-i386.c
gas/testsuite/ChangeLog
gas/testsuite/gas/i386/intelok.d
gas/testsuite/gas/i386/intelok.s

index 0d7fde3..a12b389 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-02  Jan Beulich  <jbeulich@novell.com>
+
+       * config/tc-i386.c (intel_e11): If not followed by T_PTR, treat T_BYTE
+       etc. like normal symbol references (T_ID).
+
 2005-03-02  Alan Modra  <amodra@bigpond.net.au>
 
        * symbols.c (fb_label_name): Fix silly thinko in last change.
index 391192f..37c4073 100644 (file)
@@ -6154,6 +6154,23 @@ intel_e11 ()
     {
       intel_match_token (cur_token.code);
 
+      if (cur_token.code != T_PTR)
+       {
+         /* It must have been an identifier; add it to the displacement string.  */
+         strcat (intel_parser.disp, prev_token.str);
+
+         /* The identifier represents a memory reference only if it's not
+            preceded by an offset modifier and if it's not an equate.  */
+         if (intel_parser.op_modifier != T_OFFSET)
+           {
+             symbolS *symbolP;
+
+             symbolP = symbol_find(prev_token.str);
+             if (!symbolP || S_GET_SEGMENT(symbolP) != absolute_section)
+               intel_parser.is_mem = 1;
+           }
+       }
+
       return 1;
     }
 
index d684ba4..641368d 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-02  Jan Beulich  <jbeulich@novell.com>
+
+       * gas/i386/intelok.d: Add -r to objdump options. Adjust expectations.
+       * gas/i386/intelok.s: Add checks for various special memory operands.
+
 2005-03-01  Ramana Radhakrishnan  <ramana.radhakrishnan@codito.com>
 
        * gas/arc/extensions.s: New file.
index 265aaa2..f596eb6 100644 (file)
@@ -1,5 +1,5 @@
 #as: -J
-#objdump: -dwMintel
+#objdump: -drwMintel
 #name: i386 intel-ok
 
 .*: +file format .*
@@ -93,6 +93,20 @@ Disassembly of section .text:
 [      ]*[0-9a-f]+:    d7[     ]+xlat(b|[      ]+(BYTE PTR )?(ds:)?\[ebx\])
 [      ]*[0-9a-f]+:    d7[     ]+xlat(b|[      ]+(BYTE PTR )?(ds:)?\[ebx\])
 [      ]*[0-9a-f]+:    d7[     ]+xlat(b|[      ]+(BYTE PTR )?(ds:)?\[ebx\])
+[      ]*[0-9a-f]+:    8b 80 00 00 00 00[      ]+mov[  ]+eax,(DWORD PTR )?\[eax\][     ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+byte
+[      ]*[0-9a-f]+:    8b 80 00 00 00 00[      ]+mov[  ]+eax,(DWORD PTR )?\[eax\][     ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+byte
+[      ]*[0-9a-f]+:    8b 40 04[       ]+mov[  ]+eax,(DWORD PTR )?\[eax\+4\]
+[      ]*[0-9a-f]+:    8b 40 04[       ]+mov[  ]+eax,(DWORD PTR )?\[eax\+4\]
+[      ]*[0-9a-f]+:    8b 80 00 00 00 00[      ]+mov[  ]+eax,(DWORD PTR )?\[eax\][     ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+fword
+[      ]*[0-9a-f]+:    8b 80 00 00 00 00[      ]+mov[  ]+eax,(DWORD PTR )?\[eax\][     ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+fword
+[      ]*[0-9a-f]+:    8b 80 04 00 00 00[      ]+mov[  ]+eax,(DWORD PTR )?\[eax\+4\][  ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+qword
+[      ]*[0-9a-f]+:    8b 80 04 00 00 00[      ]+mov[  ]+eax,(DWORD PTR )?\[eax\+4\][  ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+qword
+[      ]*[0-9a-f]+:    8b 80 08 00 00 00[      ]+mov[  ]+eax,(DWORD PTR )?\[eax\+8\][  ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+tbyte
+[      ]*[0-9a-f]+:    8b 80 08 00 00 00[      ]+mov[  ]+eax,(DWORD PTR )?\[eax\+8\][  ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+tbyte
+#[     ]*[0-9a-f]+:    8b 04 85 00 00 00 00[   ]+mov[  ]+eax,(DWORD PTR )?\[eax\*4\][  ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+word
+#[     ]*[0-9a-f]+:    8b 04 85 00 00 00 00[   ]+mov[  ]+eax,(DWORD PTR )?\[eax\*4\][  ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+word
+#[     ]*[0-9a-f]+:    8b 04 85 04 00 00 00[   ]+mov[  ]+eax,(DWORD PTR )?\[eax\*4\+4\][       ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+xmmword
+#[     ]*[0-9a-f]+:    8b 04 85 04 00 00 00[   ]+mov[  ]+eax,(DWORD PTR )?\[eax\*4\+4\][       ]+[0-9a-f]+:[   ]+(R_386_|dir)?32[      ]+xmmword
 [      ]*[0-9a-f]+:    6a 01[  ]+push[         ]+0x1
 [      ]*[0-9a-f]+:    6a ff[  ]+push[         ]+0xffffffff
 [      ]*[0-9a-f]+:    6a fe[  ]+push[         ]+0xfffffffe
index f13793a..590d793 100644 (file)
@@ -1,6 +1,10 @@
        .intel_syntax noprefix
+       .equiv dword, 4
        .text
 start:
+
+       # operand sizes
+
        add     al, [eax]
        add     al, byte ptr [eax]
        add     ax, [eax]
@@ -88,6 +92,23 @@ start:
        xlat    byte ptr [ebx]
        xlatb
 
+       # memory operands
+
+       mov     eax, dword ptr [byte+eax]
+       mov     eax, dword ptr byte[eax]
+       mov     eax, [dword+eax]
+       mov     eax, dword[eax]
+       mov     eax, [fword+eax]
+       mov     eax, fword[eax]
+       mov     eax, [qword+eax+dword]
+       mov     eax, qword[eax+dword]
+       mov     eax, [tbyte+eax+dword*2]
+       mov     eax, tbyte[eax+dword*2]
+#      mov     eax, [word+eax*dword]
+#      mov     eax, word[eax*dword]
+#      mov     eax, [xmmword+(eax+1)*dword]
+#      mov     eax, xmmword[(eax+1)*dword]
+
        # expressions
 
        push    + 1