|
From: <sv...@va...> - 2006-03-18 11:29:33
|
Author: sewardj
Date: 2006-03-18 11:29:25 +0000 (Sat, 18 Mar 2006)
New Revision: 1600
Log:
Fix some segment register pushes/pops.
Modified:
trunk/priv/guest-x86/toIR.c
Modified: trunk/priv/guest-x86/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-x86/toIR.c 2006-03-16 11:29:13 UTC (rev 1599)
+++ trunk/priv/guest-x86/toIR.c 2006-03-18 11:29:25 UTC (rev 1600)
@@ -6414,7 +6414,7 @@
putIReg(4, R_ESP, mkexpr(ta));
storeLE( mkexpr(ta), mkexpr(t1) );
=20
- DIP("pushw %s\n", nameSReg(sreg));
+ DIP("push%c %s\n", sz=3D=3D2 ? 'w' : 'l', nameSReg(sreg));
}
=20
static
@@ -6429,7 +6429,7 @@
=20
putIReg(4, R_ESP, binop(Iop_Add32, mkexpr(ta), mkU32(sz)) );
putSReg( sreg, mkexpr(t1) );
- DIP("pop %s\n", nameSReg(sreg));
+ DIP("pop%c %s\n", sz=3D=3D2 ? 'w' : 'l', nameSReg(sreg));
}
=20
static
@@ -11499,12 +11499,12 @@
break;
}
=20
-//-- case 0x1F: /* POP %DS */
-//-- dis_pop_segreg( cb, R_DS, sz ); break;
-//-- case 0x07: /* POP %ES */
-//-- dis_pop_segreg( cb, R_ES, sz ); break;
-//-- case 0x17: /* POP %SS */
-//-- dis_pop_segreg( cb, R_SS, sz ); break;
+ case 0x1F: /* POP %DS */
+ dis_pop_segreg( R_DS, sz ); break;
+ case 0x07: /* POP %ES */
+ dis_pop_segreg( R_ES, sz ); break;
+ case 0x17: /* POP %SS */
+ dis_pop_segreg( R_SS, sz ); break;
=20
/* ------------------------ PUSH ----------------------- */
=20
@@ -11635,16 +11635,15 @@
DIP("pusha%c\n", nameISize(sz));
break;
=20
+ case 0x0E: /* PUSH %CS */
+ dis_push_segreg( R_CS, sz ); break;
+ case 0x1E: /* PUSH %DS */
+ dis_push_segreg( R_DS, sz ); break;
+ case 0x06: /* PUSH %ES */
+ dis_push_segreg( R_ES, sz ); break;
+ case 0x16: /* PUSH %SS */
+ dis_push_segreg( R_SS, sz ); break;
=20
-//-- case 0x0E: /* PUSH %CS */
-//-- dis_push_segreg( cb, R_CS, sz ); break;
-//-- case 0x1E: /* PUSH %DS */
-//-- dis_push_segreg( cb, R_DS, sz ); break;
-//-- case 0x06: /* PUSH %ES */
-//-- dis_push_segreg( cb, R_ES, sz ); break;
-//-- case 0x16: /* PUSH %SS */
-//-- dis_push_segreg( cb, R_SS, sz ); break;
-
/* ------------------------ SCAS et al ----------------- */
=20
case 0xA4: /* MOVS, no REP prefix */
|