gas/testsuite/
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 12 Jan 2005 19:12:52 +0000 (19:12 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 12 Jan 2005 19:12:52 +0000 (19:12 +0000)
2005-01-12  H.J. Lu  <hongjiu.lu@intel.com>

* i386/i386.exp: Run "sib".

* gas/i386/sib.d: New file.
* gas/i386/sib.s: Likewise.

opcodes/

2005-01-12  H.J. Lu  <hongjiu.lu@intel.com>

* i386-dis.c (OP_E): Ignore scale when index == 0x4 in SIB.

gas/testsuite/ChangeLog
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/sib.d [new file with mode: 0644]
gas/testsuite/gas/i386/sib.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/i386-dis.c

index 24c5cc8..ed357fb 100644 (file)
@@ -1,3 +1,10 @@
+2005-01-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * i386/i386.exp: Run "sib".
+
+       * gas/i386/sib.d: New file.
+       * gas/i386/sib.s: Likewise.
+
 2005-01-09  Andreas Schwab  <schwab@suse.de>
 
        * gas/i386/intel16.d: Ignore trailing text with #pass. 
index 1846268..98b6ea6 100644 (file)
@@ -57,6 +57,7 @@ if [expr ([istarget "i*86-*-*"] ||  [istarget "x86_64-*-*"]) && [gas_32_check]]
     run_dump_test "sse2"
     run_dump_test "sub"
     run_dump_test "prescott"
+    run_dump_test "sib"
 
     if {![istarget "*-*-aix*"]
        && (![is_elf_format] || [istarget "*-*-linux*"]
diff --git a/gas/testsuite/gas/i386/sib.d b/gas/testsuite/gas/i386/sib.d
new file mode 100644 (file)
index 0000000..2a5dbb6
--- /dev/null
@@ -0,0 +1,15 @@
+#objdump: -dw
+#name: i386 SIB
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+000 <foo>:
+   0:  8b 04 23 [      ]*mov [         ]*\(%ebx\),%eax
+   3:  8b 04 63 [      ]*mov [         ]*\(%ebx\),%eax
+   6:  8b 04 a3 [      ]*mov [         ]*\(%ebx\),%eax
+   9:  8b 04 e3 [      ]*mov [         ]*\(%ebx\),%eax
+   c:  90 [    ]*nop [         ]*
+   d:  90 [    ]*nop [         ]*
+       ...
diff --git a/gas/testsuite/gas/i386/sib.s b/gas/testsuite/gas/i386/sib.s
new file mode 100644 (file)
index 0000000..25d88b7
--- /dev/null
@@ -0,0 +1,11 @@
+#Test the special case of the index bits, 0x4, in SIB.
+
+       .text
+foo:
+       .byte   0x8B, 0x04, 0x23        # effect is: movl (%ebx), %eax
+       .byte   0x8B, 0x04, 0x63        # effect is: movl (%ebx), %eax  
+       .byte   0x8B, 0x04, 0xA3        # effect is: movl (%ebx), %eax
+       .byte   0x8B, 0x04, 0xE3        # effect is: movl (%ebx), %eax
+       nop
+       nop
+       .p2align        4,0
index 2effaf3..1b9fc94 100644 (file)
@@ -1,3 +1,7 @@
+2005-01-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * i386-dis.c (OP_E): Ignore scale when index == 0x4 in SIB.
+
 2005-01-10  Andreas Schwab  <schwab@suse.de>
 
        * disassemble.c (disassemble_init_for_target) <case
index b5cc638..c24c656 100644 (file)
@@ -3191,8 +3191,10 @@ OP_E (int bytemode, int sizeflag)
        {
          havesib = 1;
          FETCH_DATA (the_info, codep + 1);
-         scale = (*codep >> 6) & 3;
          index = (*codep >> 3) & 7;
+         if (index != 0x4)
+           /* When INDEX == 0x4, scale is ignored.  */
+           scale = (*codep >> 6) & 3;
          base = *codep & 7;
          USED_REX (REX_EXTY);
          USED_REX (REX_EXTZ);