diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2007-10-26 20:48:09 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2007-10-26 20:48:09 +0000 |
commit | 75c135a8a40eb6c60c4855cc9899b4945a9cfb92 (patch) | |
tree | a131a56e54ef796e8ca8809828bf56347c69fff9 /opcodes/i386-dis.c | |
parent | 5d57def3b3678509d68fad4114ef407b2ddc7901 (diff) | |
download | gdb-75c135a8a40eb6c60c4855cc9899b4945a9cfb92.zip gdb-75c135a8a40eb6c60c4855cc9899b4945a9cfb92.tar.gz gdb-75c135a8a40eb6c60c4855cc9899b4945a9cfb92.tar.bz2 |
2007-10-26 H.J. Lu <hongjiu.lu@intel.com>
* i386-dis.c (MOD_0F2B_PREFIX_0...MOD_0F2B_PREFIX_3): New.
(MOD_0F51): Likewise.
(MOD_0FD7): Likewise.
(MOD_0FE7_PREFIX_2): Likewise.
(MOD_0F382A_PREFIX_2): Likewise.
(MOD_0F71_REG_2): Updated.
(MOD_0FF0_PREFIX_3): Likewise.
(MOD_62_32BIT): Likewise.
(dis386_twobyte): Use MOD_0F51 and MOD_0FD7.
(prefix_table): Use MOD_0F2B_PREFIX_0...MOD_0F2B_PREFIX_3,
MOD_0FE7_PREFIX_2 and MOD_0F382A_PREFIX_2.
(mod_table): Add MOD_0F2B_PREFIX_0...MOD_0F2B_PREFIX_3,
MOD_0F51, MOD_0FD7 and MOD_0F382A_PREFIX_2.
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r-- | opcodes/i386-dis.c | 70 |
1 files changed, 59 insertions, 11 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 4e52288..921883b 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -522,7 +522,12 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define MOD_0F23 (MOD_0F22 + 1) #define MOD_0F24 (MOD_0F23 + 1) #define MOD_0F26 (MOD_0F24 + 1) -#define MOD_0F71_REG_2 (MOD_0F26 + 1) +#define MOD_0F2B_PREFIX_0 (MOD_0F26 + 1) +#define MOD_0F2B_PREFIX_1 (MOD_0F2B_PREFIX_0 + 1) +#define MOD_0F2B_PREFIX_2 (MOD_0F2B_PREFIX_1 + 1) +#define MOD_0F2B_PREFIX_3 (MOD_0F2B_PREFIX_2 + 1) +#define MOD_0F51 (MOD_0F2B_PREFIX_3 + 1) +#define MOD_0F71_REG_2 (MOD_0F51 + 1) #define MOD_0F71_REG_4 (MOD_0F71_REG_2 + 1) #define MOD_0F71_REG_6 (MOD_0F71_REG_4 + 1) #define MOD_0F72_REG_2 (MOD_0F71_REG_6 + 1) @@ -544,8 +549,11 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr) #define MOD_0FB5 (MOD_0FB4 + 1) #define MOD_0FC7_REG_6 (MOD_0FB5 + 1) #define MOD_0FC7_REG_7 (MOD_0FC7_REG_6 + 1) -#define MOD_0FF0_PREFIX_3 (MOD_0FC7_REG_7 + 1) -#define MOD_62_32BIT (MOD_0FF0_PREFIX_3 + 1) +#define MOD_0FD7 (MOD_0FC7_REG_7 + 1) +#define MOD_0FE7_PREFIX_2 (MOD_0FD7 + 1) +#define MOD_0FF0_PREFIX_3 (MOD_0FE7_PREFIX_2 + 1) +#define MOD_0F382A_PREFIX_2 (MOD_0FF0_PREFIX_3 + 1) +#define MOD_62_32BIT (MOD_0F382A_PREFIX_2 + 1) #define MOD_C4_32BIT (MOD_62_32BIT + 1) #define MOD_C5_32BIT (MOD_C4_32BIT + 1) @@ -1128,7 +1136,7 @@ static const struct dis386 dis386_twobyte[] = { { "cmovle", { Gv, Ev } }, { "cmovg", { Gv, Ev } }, /* 50 */ - { "movmskpX", { Gdq, XS } }, + { MOD_TABLE (MOD_0F51) }, { PREFIX_TABLE (PREFIX_0F51) }, { PREFIX_TABLE (PREFIX_0F52) }, { PREFIX_TABLE (PREFIX_0F53) }, @@ -1279,7 +1287,7 @@ static const struct dis386 dis386_twobyte[] = { { "paddq", { MX, EM } }, { "pmullw", { MX, EM } }, { PREFIX_TABLE (PREFIX_0FD6) }, - { "pmovmskb", { Gdq, MS } }, + { MOD_TABLE (MOD_0FD7) }, /* d8 */ { "psubusb", { MX, EM } }, { "psubusw", { MX, EM } }, @@ -1827,10 +1835,10 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0F2B */ { - {"movntps", { Ev, XM } }, - {"movntss", { Ed, XM } }, - {"movntpd", { Ev, XM } }, - {"movntsd", { Eq, XM } }, + { MOD_TABLE (MOD_0F2B_PREFIX_0) }, + { MOD_TABLE (MOD_0F2B_PREFIX_1) }, + { MOD_TABLE (MOD_0F2B_PREFIX_2) }, + { MOD_TABLE (MOD_0F2B_PREFIX_3) }, }, /* PREFIX_0F2C */ @@ -2133,7 +2141,7 @@ static const struct dis386 prefix_table[][4] = { { { "movntq", { EM, MX } }, { "(bad)", { XX } }, - { "movntdq",{ EM, XM } }, + { MOD_TABLE (MOD_0FE7_PREFIX_2) }, { "(bad)", { XX } }, }, @@ -2253,7 +2261,7 @@ static const struct dis386 prefix_table[][4] = { { { "(bad)", { XX } }, { "(bad)", { XX } }, - { "movntdqa", { XM, EM } }, + { MOD_TABLE (MOD_0F382A_PREFIX_2) }, { "(bad)", { XX } }, }, @@ -4607,6 +4615,31 @@ static const struct dis386 mod_table[][2] = { { "movL", { Td, Rd } }, }, { + /* MOD_0F2B_PREFIX_0 */ + {"movntps", { Ev, XM } }, + { "(bad)", { XX } }, + }, + { + /* MOD_0F2B_PREFIX_1 */ + {"movntss", { Ed, XM } }, + { "(bad)", { XX } }, + }, + { + /* MOD_0F2B_PREFIX_2 */ + {"movntpd", { Ev, XM } }, + { "(bad)", { XX } }, + }, + { + /* MOD_0F2B_PREFIX_3 */ + {"movntsd", { Eq, XM } }, + { "(bad)", { XX } }, + }, + { + /* MOD_0F51 */ + { "(bad)", { XX } }, + { "movmskpX", { Gdq, XS } }, + }, + { /* MOD_0F71_REG_2 */ { "(bad)", { XX } }, { "psrlw", { MS, Ib } }, @@ -4717,11 +4750,26 @@ static const struct dis386 mod_table[][2] = { { "(bad)", { XX } }, }, { + /* MOD_0FD7 */ + { "(bad)", { XX } }, + { "pmovmskb", { Gdq, MS } }, + }, + { + /* MOD_0FE7_PREFIX_2 */ + { "movntdq", { EM, XM } }, + { "(bad)", { XX } }, + }, + { /* MOD_0FF0_PREFIX_3 */ { "lddqu", { XM, M } }, { "(bad)", { XX } }, }, { + /* MOD_0F382A_PREFIX_2 */ + { "movntdqa", { XM, EM } }, + { "(bad)", { XX } }, + }, + { /* MOD_62_32BIT */ { "bound{S|}", { Gv, Ma } }, { "(bad)", { XX } }, |