aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-i386.c17
-rw-r--r--gas/testsuite/ChangeLog5
-rw-r--r--gas/testsuite/gas/i386/intelok.d16
-rw-r--r--gas/testsuite/gas/i386/intelok.s21
5 files changed, 63 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0d7fde3..a12b389 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 391192f..37c4073 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -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;
}
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index d684ba4..641368d 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -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.
diff --git a/gas/testsuite/gas/i386/intelok.d b/gas/testsuite/gas/i386/intelok.d
index 265aaa2..f596eb6 100644
--- a/gas/testsuite/gas/i386/intelok.d
+++ b/gas/testsuite/gas/i386/intelok.d
@@ -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
diff --git a/gas/testsuite/gas/i386/intelok.s b/gas/testsuite/gas/i386/intelok.s
index f13793a..590d793 100644
--- a/gas/testsuite/gas/i386/intelok.s
+++ b/gas/testsuite/gas/i386/intelok.s
@@ -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