diff options
author | Ian Lance Taylor <ian@airs.com> | 1997-01-31 18:16:15 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1997-01-31 18:16:15 +0000 |
commit | fb50cd4ef227c4a3be6f7d6833d6744394ae31cc (patch) | |
tree | bc16dddce9d0b41f9935111da893912359db0283 | |
parent | 20fa0902e7683d58a0164703d4de03fa5fd9a7e8 (diff) | |
download | gdb-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/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 88 |
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 |