]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Handle long-form encoding of 'push{l,w} %reg'.
authorJulian Seward <jseward@acm.org>
Sat, 18 Nov 2006 22:56:46 +0000 (22:56 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 18 Nov 2006 22:56:46 +0000 (22:56 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@1679

VEX/priv/guest-x86/toIR.c

index 9677c5a50df93e262133c8e6c1db1efee65b7ca7..80a8c6e34b988542e6a3ea886ee2f6e8bd3b79fe 100644 (file)
@@ -2815,6 +2815,13 @@ UInt dis_Grp5 ( UChar sorb, Int sz, Int delta, DisResult* dres )
             jmp_treg(Ijk_Boring,t1);
             dres->whatNext = Dis_StopHere;
             break;
+         case 6: /* PUSH Ev */
+            vassert(sz == 4 || sz == 2);
+            t2 = newTemp(Ity_I32);
+            assign( t2, binop(Iop_Sub32,getIReg(4,R_ESP),mkU32(sz)) );
+            putIReg(4, R_ESP, mkexpr(t2) );
+            storeLE( mkexpr(t2), mkexpr(t1) );
+            break;
          default: 
             vex_printf(
                "unhandled Grp5(R) case %d\n", (Int)gregOfRM(modrm));