aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1997-01-31 18:16:15 +0000
committerIan Lance Taylor <ian@airs.com>1997-01-31 18:16:15 +0000
commitfb50cd4ef227c4a3be6f7d6833d6744394ae31cc (patch)
treebc16dddce9d0b41f9935111da893912359db0283
parent20fa0902e7683d58a0164703d4de03fa5fd9a7e8 (diff)
downloadgdb-fb50cd4ef227c4a3be6f7d6833d6744394ae31cc.zip
gdb-fb50cd4ef227c4a3be6f7d6833d6744394ae31cc.tar.gz
gdb-fb50cd4ef227c4a3be6f7d6833d6744394ae31cc.tar.bz2
Fri Jan 31 13:15:05 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
* config/tc-i386.c (i386_align_code): Add comments explaining the nop instructions.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-i386.c88
2 files changed, 60 insertions, 33 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 171ea2d..fdac654 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+Fri Jan 31 13:15:05 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * config/tc-i386.c (i386_align_code): Add comments explaining the
+ nop instructions.
+
Fri Jan 31 10:46:14 1997 Ian Lance Taylor <ian@cygnus.com>
* write.c (relax_segment): Give an error if a .space symbol is
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 61099d0..d07764e 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -248,39 +248,61 @@ i386_align_code (fragP, count)
int count;
{
/* Various efficient no-op patterns for aligning code labels. */
- static const char f32_1[] = {0x90};
- static const char f32_2[] = {0x89,0xf6};
- static const char f32_3[] = {0x8d,0x76,0x00};
- static const char f32_4[] = {0x8d,0x74,0x26,0x00};
- static const char f32_5[] = {0x90,
- 0x8d,0x74,0x26,0x00};
- static const char f32_6[] = {0x8d,0xb6,0x00,0x00,0x00,0x00};
- static const char f32_7[] = {0x8d,0xb4,0x26,0x00,0x00,0x00,0x00};
- static const char f32_8[] = {0x90,
- 0x8d,0xb4,0x26,0x00,0x00,0x00,0x00};
- static const char f32_9[] = {0x89,0xf6,
- 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00};
- static const char f32_10[] = {0x8d,0x76,0x00,
- 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00};
- static const char f32_11[] = {0x8d,0x74,0x26,0x00,
- 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00};
- static const char f32_12[] = {0x8d,0xb6,0x00,0x00,0x00,0x00,
- 0x8d,0xbf,0x00,0x00,0x00,0x00};
- static const char f32_13[] = {0x8d,0xb6,0x00,0x00,0x00,0x00,
- 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00};
- static const char f32_14[] = {0x8d,0xb4,0x26,0x00,0x00,0x00,0x00,
- 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00};
- static const char f32_15[] = {0xeb,0x0d,0x90,0x90,0x90,0x90,0x90,
- 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90};
- static const char f16_4[] = {0x8d,0xb6,0x00,0x00};
- static const char f16_5[] = {0x90,
- 0x8d,0xb6,0x00,0x00};
- static const char f16_6[] = {0x89,0xf6,
- 0x8d,0xbd,0x00,0x00};
- static const char f16_7[] = {0x8d,0x76,0x00,
- 0x8d,0xbd,0x00,0x00};
- static const char f16_8[] = {0x8d,0xb6,0x00,0x00,
- 0x8d,0xbd,0x00,0x00};
+ /* Note: Don't try to assemble the instructions in the comments. */
+ /* 0L and 0w are not legal */
+ static const char f32_1[] =
+ {0x90}; /* nop */
+ static const char f32_2[] =
+ {0x89,0xf6}; /* movl %esi,%esi */
+ static const char f32_3[] =
+ {0x8d,0x76,0x00}; /* leal 0(%esi),%esi */
+ static const char f32_4[] =
+ {0x8d,0x74,0x26,0x00}; /* leal 0(%esi,1),%esi */
+ static const char f32_5[] =
+ {0x90, /* nop */
+ 0x8d,0x74,0x26,0x00}; /* leal 0(%esi,1),%esi */
+ static const char f32_6[] =
+ {0x8d,0xb6,0x00,0x00,0x00,0x00}; /* leal 0L(%esi),%esi */
+ static const char f32_7[] =
+ {0x8d,0xb4,0x26,0x00,0x00,0x00,0x00}; /* leal 0L(%esi,1),%esi */
+ static const char f32_8[] =
+ {0x90, /* nop */
+ 0x8d,0xb4,0x26,0x00,0x00,0x00,0x00}; /* leal 0L(%esi,1),%esi */
+ static const char f32_9[] =
+ {0x89,0xf6, /* movl %esi,%esi */
+ 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00}; /* leal 0L(%edi,1),%edi */
+ static const char f32_10[] =
+ {0x8d,0x76,0x00, /* leal 0(%esi),%esi */
+ 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00}; /* leal 0L(%edi,1),%edi */
+ static const char f32_11[] =
+ {0x8d,0x74,0x26,0x00, /* leal 0(%esi,1),%esi */
+ 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00}; /* leal 0L(%edi,1),%edi */
+ static const char f32_12[] =
+ {0x8d,0xb6,0x00,0x00,0x00,0x00, /* leal 0L(%esi),%esi */
+ 0x8d,0xbf,0x00,0x00,0x00,0x00}; /* leal 0L(%edi),%edi */
+ static const char f32_13[] =
+ {0x8d,0xb6,0x00,0x00,0x00,0x00, /* leal 0L(%esi),%esi */
+ 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00}; /* leal 0L(%edi,1),%edi */
+ static const char f32_14[] =
+ {0x8d,0xb4,0x26,0x00,0x00,0x00,0x00, /* leal 0L(%esi,1),%esi */
+ 0x8d,0xbc,0x27,0x00,0x00,0x00,0x00}; /* leal 0L(%edi,1),%edi */
+ static const char f32_15[] =
+ {0xeb,0x0d,0x90,0x90,0x90,0x90,0x90, /* jmp .+15; lotsa nops */
+ 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90};
+ static const char f16_4[] =
+ {0x8d,0xb6,0x00,0x00}; /* lea 0w(%si),%si */
+ static const char f16_5[] =
+ {0x90, /* nop */
+ 0x8d,0xb6,0x00,0x00}; /* lea 0w(%si),%si */
+ static const char f16_6[] =
+ {0x89,0xf6, /* mov %si,%si */
+ 0x8d,0xbd,0x00,0x00}; /* lea 0w(%di),%di */
+ static const char f16_7[] =
+ {0x8d,0x76,0x00, /* lea 0(%si),%si */
+ 0x8d,0xbd,0x00,0x00}; /* lea 0w(%di),%di */
+ static const char f16_8[] =
+ {0x8d,0xb6,0x00,0x00, /* lea 0w(%si),%si */
+ 0x8d,0xbd,0x00,0x00}; /* lea 0w(%di),%di */
static const char *const f32_patt[] = {
f32_1, f32_2, f32_3, f32_4, f32_5, f32_6, f32_7, f32_8,
f32_9, f32_10, f32_11, f32_12, f32_13, f32_14, f32_15