From fb50cd4ef227c4a3be6f7d6833d6744394ae31cc Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 31 Jan 1997 18:16:15 +0000 Subject: [PATCH] Fri Jan 31 13:15:05 1997 Alan Modra * config/tc-i386.c (i386_align_code): Add comments explaining the nop instructions. --- gas/ChangeLog | 5 +++ gas/config/tc-i386.c | 88 +++++++++++++++++++++++++++----------------- 2 files changed, 60 insertions(+), 33 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 171ea2db55..fdac654168 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +Fri Jan 31 13:15:05 1997 Alan Modra + + * config/tc-i386.c (i386_align_code): Add comments explaining the + nop instructions. + Fri Jan 31 10:46:14 1997 Ian Lance Taylor * 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 61099d0852..d07764ec4b 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