PATCH: more disasm

Marcus Meissner marcus at jet.franken.de
Mon Apr 23 16:30:15 CDT 2001


Hi,

Changelog:
	added some more disassembly instructions. (notably rdtsc, which is
	used by several programs) and more MMX.

Index: db_disasm.c
===================================================================
RCS file: /home/wine/wine/debugger/db_disasm.c,v
retrieving revision 1.20
diff -u -r1.20 db_disasm.c
--- db_disasm.c	2001/04/23 18:11:17	1.20
+++ db_disasm.c	2001/04/23 22:33:53
@@ -243,11 +243,11 @@
 /*22*/	{ "mov",   TRUE,  LONG,  op2(E,CR),   0 },
 /*23*/	{ "mov",   TRUE,  LONG,  op2(E,DR),   0 },
 /*24*/	{ "mov",   TRUE,  LONG,  op2(TR,E),   0 },
-/*25*/	{ "",      FALSE, NONE,  0,	      0 },
+/*25*/	{ "(bad)", FALSE, NONE,  0,	      0 },
 /*26*/	{ "mov",   TRUE,  LONG,  op2(E,TR),   0 },
-/*27*/	{ "",      FALSE, NONE,  0,	      0 },
+/*27*/	{ "(bad)", FALSE, NONE,  0,	      0 },
 
-/*28*/	{ "",      FALSE, NONE,  0,	      0 },
+/*28*/	{ "",	   FALSE, NONE,  0,	      0 },
 /*29*/	{ "",      FALSE, NONE,  0,	      0 },
 /*2a*/	{ "",      FALSE, NONE,  0,	      0 },
 /*2b*/	{ "",      FALSE, NONE,  0,	      0 },
@@ -257,6 +257,26 @@
 /*2f*/	{ "",      FALSE, NONE,  0,	      0 },
 };
 
+static const struct inst db_inst_0f3x[] = {
+/*20*/	{ "wrmsr", FALSE, NONE,  0,   0 },
+/*21*/	{ "rdtsc", FALSE, NONE,  0,   0 },
+/*22*/	{ "rdmsr", FALSE, NONE,  0,   0 },
+/*23*/	{ "rdpmc", FALSE, NONE,  0,   0 },
+/*24*/	{ "sysenter",FALSE,NONE, 0,   0 },
+/*25*/	{ "sysexit",FALSE,NONE,  0,   0 },
+/*26*/	{ "(bad)", FALSE, NONE,  0,   0 },
+/*27*/	{ "(bad)", FALSE, NONE,  0,   0 },
+
+/*28*/	{ "(bad)",FALSE, NONE,  0,	      0 },
+/*29*/	{ "(bad)",FALSE, NONE,  0,	      0 },
+/*2a*/	{ "(bad)",FALSE, NONE,  0,	      0 },
+/*2b*/	{ "(bad)",FALSE, NONE,  0,	      0 },
+/*2c*/	{ "(bad)",FALSE, NONE,  0,	      0 },
+/*2d*/	{ "(bad)",FALSE, NONE,  0,	      0 },
+/*2e*/	{ "(bad)",FALSE, NONE,  0,	      0 },
+/*2f*/	{ "(bad)",FALSE, NONE,  0,	      0 },
+};
+
 static const struct inst db_inst_0f4x[] = {
 /*40*/	{ "cmovo", TRUE,  NONE,  op2(E, R), 0 }, 
 /*41*/	{ "cmovno", TRUE, NONE,  op2(E, R),	0 }, 
@@ -454,11 +474,30 @@
 /*ef*/	{ "pxor",   TRUE, NONE,	 op2(MX, EMX),   0 },
 };
 
+static const struct inst db_inst_0ffx[] = {
+/*f0*/	{ "(bad)",  FALSE,NONE,  0,   0 },
+/*f1*/	{ "psllw",  TRUE, NONE,	 op2(MX, EMX),   0 },
+/*f2*/	{ "pslld",  TRUE, NONE,	 op2(MX, EMX),   0 },
+/*f3*/	{ "psllq",  TRUE, NONE,	 op2(MX, EMX),   0 },
+/*f4*/	{ "(bad)",  FALSE,NONE,	 0,   0 },
+/*f5*/	{ "pmaddwd",TRUE, NONE,	 op2(MX, EMX),   0 },
+/*f6*/	{ "psadbw", TRUE, NONE,	 op2(MX, EMX),   0 },
+/*f7*/	{ "maskmovq",TRUE,NONE,	 op2(MX, EMX),   0 },
+/*f8*/	{ "psubb",  TRUE, NONE,	 op2(MX, EMX),   0 },
+/*f9*/	{ "psubw",  TRUE, NONE,	 op2(MX, EMX),   0 },
+/*fa*/	{ "psubd",  TRUE, NONE,	 op2(MX, EMX),   0 },
+/*fb*/	{ "(bad)",  FALSE,NONE,	 0,   0 },
+/*fc*/	{ "paddb",  TRUE, NONE,	 op2(MX, EMX),   0 },
+/*fd*/	{ "paddw",  TRUE, NONE,	 op2(MX, EMX),   0 },
+/*fe*/	{ "paddd",  TRUE, NONE,	 op2(MX, EMX),   0 },
+/*ff*/	{ "(bad)",  FALSE, NONE, 0,   0 },
+};
+
 static const struct inst * const db_inst_0f[] = {
 	db_inst_0f0x,
 	0,
 	db_inst_0f2x,
-	0,
+	db_inst_0f3x,
 	db_inst_0f4x,
 	0,
 	db_inst_0f6x,
@@ -470,7 +509,7 @@
 	db_inst_0fcx,
 	db_inst_0fdx,
 	db_inst_0fex,
-	0
+	db_inst_0ffx
 };
 
 static const char * const db_Esc92[] = {




More information about the wine-patches mailing list