This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PATCH: More x86 disassembler cleanup
- From: "H.J. Lu" <hjl at lucon dot org>
- To: binutils at sources dot redhat dot com
- Date: Fri, 31 Aug 2007 13:53:45 -0700
- Subject: PATCH: More x86 disassembler cleanup
I am checking in this patch to handle invalid operands for
moving control/debug/test registers.
H.J.
----
2007-08-31 H.J. Lu <hongjiu.lu@intel.com>
* i386-dis.c (OPC_EXT_40...OPC_EXT_45): New.
(dis386_twobyte): Use OPC_EXT_40...OPC_EXT_45.
(opc_ext_table): Add OPC_EXT_40...OPC_EXT_45.
--- opcodes/i386-dis.c.mov 2007-08-31 13:19:30.000000000 -0700
+++ opcodes/i386-dis.c 2007-08-31 13:52:22.000000000 -0700
@@ -596,6 +596,12 @@ fetch_data (struct disassemble_info *inf
#define OPC_EXT_37 NULL, { { NULL, USE_OPC_EXT_TABLE }, { NULL, 37 } }
#define OPC_EXT_38 NULL, { { NULL, USE_OPC_EXT_TABLE }, { NULL, 38 } }
#define OPC_EXT_39 NULL, { { NULL, USE_OPC_EXT_TABLE }, { NULL, 39 } }
+#define OPC_EXT_40 NULL, { { NULL, USE_OPC_EXT_TABLE }, { NULL, 40 } }
+#define OPC_EXT_41 NULL, { { NULL, USE_OPC_EXT_TABLE }, { NULL, 41 } }
+#define OPC_EXT_42 NULL, { { NULL, USE_OPC_EXT_TABLE }, { NULL, 42 } }
+#define OPC_EXT_43 NULL, { { NULL, USE_OPC_EXT_TABLE }, { NULL, 43 } }
+#define OPC_EXT_44 NULL, { { NULL, USE_OPC_EXT_TABLE }, { NULL, 44 } }
+#define OPC_EXT_45 NULL, { { NULL, USE_OPC_EXT_TABLE }, { NULL, 45 } }
#define OPC_EXT_RM_0 NULL, { { NULL, USE_OPC_EXT_RM_TABLE }, { NULL, 0 } }
#define OPC_EXT_RM_1 NULL, { { NULL, USE_OPC_EXT_RM_TABLE }, { NULL, 1 } }
@@ -986,13 +992,13 @@ static const struct dis386 dis386_twobyt
{ "(bad)", { XX } },
{ "nopQ", { Ev } },
/* 20 */
- { "movZ", { Rm, Cm } },
- { "movZ", { Rm, Dm } },
- { "movZ", { Cm, Rm } },
- { "movZ", { Dm, Rm } },
- { "movL", { Rd, Td } },
+ { OPC_EXT_40 },
+ { OPC_EXT_41 },
+ { OPC_EXT_42 },
+ { OPC_EXT_43 },
+ { OPC_EXT_44 },
{ "(bad)", { XX } },
- { "movL", { Td, Rd } },
+ { OPC_EXT_45 },
{ "(bad)", { XX } },
/* 28 */
{ "movapX", { XM, EXx } },
@@ -3264,6 +3270,36 @@ static const struct dis386 opc_ext_table
{ "lidt{Q|Q||}", { M } },
{ OPC_EXT_RM_6 },
},
+ {
+ /* OPC_EXT_40 */
+ { "(bad)", { XX } },
+ { "movZ", { Rm, Cm } },
+ },
+ {
+ /* OPC_EXT_41 */
+ { "(bad)", { XX } },
+ { "movZ", { Rm, Dm } },
+ },
+ {
+ /* OPC_EXT_42 */
+ { "(bad)", { XX } },
+ { "movZ", { Cm, Rm } },
+ },
+ {
+ /* OPC_EXT_43 */
+ { "(bad)", { XX } },
+ { "movZ", { Dm, Rm } },
+ },
+ {
+ /* OPC_EXT_44 */
+ { "(bad)", { XX } },
+ { "movL", { Rd, Td } },
+ },
+ {
+ /* OPC_EXT_45 */
+ { "(bad)", { XX } },
+ { "movL", { Td, Rd } },
+ },
};
static const struct dis386 opc_ext_rm_table[][8] = {