|
From: <sv...@va...> - 2005-11-04 20:49:39
|
Author: sewardj
Date: 2005-11-04 20:49:36 +0000 (Fri, 04 Nov 2005)
New Revision: 1436
Log:
Implement SHRDv imm8.
Modified:
trunk/priv/guest-amd64/toIR.c
Modified: trunk/priv/guest-amd64/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-amd64/toIR.c 2005-11-04 20:05:57 UTC (rev 1435)
+++ trunk/priv/guest-amd64/toIR.c 2005-11-04 20:49:36 UTC (rev 1436)
@@ -6497,7 +6497,9 @@
shift_amt_txt,
nameIRegG(sz, pfx, modrm), nameIRegE(sz, pfx, modrm));
} else {
- addr =3D disAMode ( &len, pfx, delta, dis_buf, 0 );
+ addr =3D disAMode ( &len, pfx, delta, dis_buf,=20
+ /* # bytes following amode */
+ amt_is_literal ? 1 : 0 );
delta +=3D len;
assign( esrc, loadLE(ty, mkexpr(addr)) );
DIP("sh%cd%c %s, %s, %s\n",=20
@@ -13363,15 +13365,15 @@
"%cl", True /* left */ );
break;
=20
-//.. case 0xAC: /* SHRDv imm8,Gv,Ev */
-//.. modrm =3D getUChar(delta);
-//.. d32 =3D delta + lengthAMode(delta);
-//.. vex_sprintf(dis_buf, "$%d", delta);
-//.. delta =3D dis_SHLRD_Gv_Ev (=20
-//.. sorb, delta, modrm, sz,=20
-//.. mkU8(getUChar(d32)), True, /* literal */
-//.. dis_buf, False );
-//.. break;
+ case 0xAC: /* SHRDv imm8,Gv,Ev */
+ modrm =3D getUChar(delta);
+ d64 =3D delta + lengthAMode(pfx, delta);
+ vex_sprintf(dis_buf, "$%d", (Int)getUChar(d64));
+ delta =3D dis_SHLRD_Gv_Ev (=20
+ pfx, delta, modrm, sz,=20
+ mkU8(getUChar(d64)), True, /* literal */
+ dis_buf, False /* right */ );
+ break;
case 0xAD: /* SHRDv %cl,Gv,Ev */
modrm =3D getUChar(delta);
delta =3D dis_SHLRD_Gv_Ev (=20
|