diff options
author | Richard Lowe <richlowe@richlowe.net> | 2011-06-15 13:15:13 +0100 |
---|---|---|
committer | Richard Lowe <richlowe@richlowe.net> | 2011-07-02 22:17:00 -0400 |
commit | 931503e3de23dfd4f2820165d4ca0584660f9e17 (patch) | |
tree | 67fb4ef509b7e119c12280943f927face025497a /usr/src | |
parent | 67eb56e2a77b4816930108080051bc8887947c84 (diff) | |
download | illumos-joyent-931503e3de23dfd4f2820165d4ca0584660f9e17.tar.gz |
dis: Decode multibyte nops generated by GCC
This decodes 0f 1f (nopl) and 66 0f 1f (nopw), which seem to be the ones
most commonly generated by gcc (determined by disassembling /kernel).
unused opcodes in [0f18, 0f1f) are technically reserved nops, and used
by Intel as "hinting nops", but I haven't found them generated.
It doesn't seem to deal with '66 2e 0f 1f' (nopw %cs:) but I'm not
certain as to why. This seems to mostly be generated inter-function
however, and so this may not be such a big deal.
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/common/dis/i386/dis_tables.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/usr/src/common/dis/i386/dis_tables.c b/usr/src/common/dis/i386/dis_tables.c index 116191a462..46556e2bb9 100644 --- a/usr/src/common/dis/i386/dis_tables.c +++ b/usr/src/common/dis/i386/dis_tables.c @@ -1443,7 +1443,7 @@ const instable_t dis_op0F[16][16] = { /* [10] */ TNSZ("movups",XMMO,16), TNSZ("movups",XMMOS,16),TNSZ("movlps",XMMO,8), TNSZ("movlps",XMMOS,8), /* [14] */ TNSZ("unpcklps",XMMO,16),TNSZ("unpckhps",XMMO,16),TNSZ("movhps",XMMOM,8),TNSZ("movhps",XMMOMS,8), /* [18] */ IND(dis_op0F18), INVALID, INVALID, INVALID, -/* [1C] */ INVALID, INVALID, INVALID, INVALID, +/* [1C] */ INVALID, INVALID, INVALID, TS("nop", M), }, { /* [20] */ TSy("mov",SREG), TSy("mov",SREG), TSy("mov",SREG), TSy("mov",SREG), /* [24] */ TSx("mov",SREG), INVALID, TSx("mov",SREG), INVALID, |