PERFORCE change 74130 for review
Peter Wemm
peter at FreeBSD.org
Wed Mar 30 14:21:23 PST 2005
http://perforce.freebsd.org/chv.cgi?CH=74130
Change 74130 by peter at peter_daintree on 2005/03/30 22:21:12
Add an explicit forced long override for use by the source arg for movslq
Add the cmovCC family
Affected files ...
.. //depot/projects/hammer/sys/amd64/amd64/db_disasm.c#7 edit
Differences ...
==== //depot/projects/hammer/sys/amd64/amd64/db_disasm.c#7 (text+ko) ====
@@ -110,9 +110,10 @@
#define STI 32 /* FP stack */
#define X 33 /* extended FP op */
#define XA 34 /* for 'fstcw %ax' */
-#define El 35 /* address, long size */
+#define El 35 /* address, long/quad size */
#define Ril 36 /* long register in instruction */
#define Iba 37 /* byte immediate, don't print if 0xa */
+#define EL 38 /* address, explicitly long size */
struct inst {
const char * i_name; /* name */
@@ -238,6 +239,26 @@
/*3f*/ { "", 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 },
+/*42*/ { "cmovb", TRUE, NONE, op2(E, R), 0 },
+/*43*/ { "cmovnb", TRUE, NONE, op2(E, R), 0 },
+/*44*/ { "cmovz", TRUE, NONE, op2(E, R), 0 },
+/*45*/ { "cmovnz", TRUE, NONE, op2(E, R), 0 },
+/*46*/ { "cmovbe", TRUE, NONE, op2(E, R), 0 },
+/*47*/ { "cmovnbe",TRUE, NONE, op2(E, R), 0 },
+
+/*48*/ { "cmovs", TRUE, NONE, op2(E, R), 0 },
+/*49*/ { "cmovns", TRUE, NONE, op2(E, R), 0 },
+/*4a*/ { "cmovp", TRUE, NONE, op2(E, R), 0 },
+/*4b*/ { "cmovnp", TRUE, NONE, op2(E, R), 0 },
+/*4c*/ { "cmovl", TRUE, NONE, op2(E, R), 0 },
+/*4d*/ { "cmovnl", TRUE, NONE, op2(E, R), 0 },
+/*4e*/ { "cmovle", TRUE, NONE, op2(E, R), 0 },
+/*4f*/ { "cmovnle",TRUE, NONE, op2(E, R), 0 },
+};
+
static const struct inst db_inst_0f8x[] = {
/*80*/ { "jo", FALSE, NONE, op1(Dl), 0 },
/*81*/ { "jno", FALSE, NONE, op1(Dl), 0 },
@@ -342,6 +363,7 @@
0,
db_inst_0f2x,
db_inst_0f3x,
+ db_inst_0f4x,
0,
0,
0,
@@ -649,7 +671,7 @@
/*60*/ { "pusha", FALSE, LONG, 0, 0 },
/*61*/ { "popa", FALSE, LONG, 0, 0 },
/*62*/ { "bound", TRUE, LONG, op2(E, R), 0 },
-/*63*/ { "movslq", TRUE, NONE, op2(E,R), 0 },
+/*63*/ { "movslq", TRUE, NONE, op2(EL,R), 0 },
/*64*/ { "", FALSE, NONE, 0, 0 },
/*65*/ { "", FALSE, NONE, 0, 0 },
@@ -1160,7 +1182,7 @@
seg = 0;
#ifndef _KERNEL
-printf("0x%08x: ");
+printf("0x%08x: ", loc);
#endif
/*
* Get prefixes
@@ -1328,6 +1350,11 @@
db_print_address(seg, (rex & REX_W) ? QUAD : LONG, rex, &address);
break;
+ case EL:
+ M("[EL]");
+ db_print_address(seg, LONG, 0, &address);
+ break;
+
case Ew:
M("[Ew]");
db_print_address(seg, WORD, rex, &address);
More information about the p4-projects
mailing list