X86: Hook in shift and rotate by one instructions, and NOT.
authorGabe Black <gblack@eecs.umich.edu>
Fri, 27 Jul 2007 05:10:59 +0000 (22:10 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Fri, 27 Jul 2007 05:10:59 +0000 (22:10 -0700)
--HG--
extra : convert_revision : b3ab74e09f5cd02671cc6425c8cb8638bd58cbee

src/arch/x86/isa/decoder/one_byte_opcodes.isa

index c81aa666de8a41446a2513a624f95fcfbca524cc..3b51f9d734e8405ced8eb7dfb9c5eb247cd9a2ef 100644 (file)
             0x7: iret();
         }
         0x1A: decode OPCODE_OP_BOTTOM3 {
-            0x0: group2_Eb_1();
-            0x1: group2_Ev_1();
             format Inst {
+                //0x0: group2_Eb_1();
+                0x0: decode MODRM_REG {
+                    0x0: ROL_1(Eb);
+                    0x1: ROR_1(Eb);
+                    0x2: RCL_1(Eb);
+                    0x3: RCR_1(Eb);
+                    0x4: SAL_1(Eb);
+                    0x5: SHR_1(Eb);
+                    0x6: SAL_1(Eb);
+                    0x7: SAR_1(Eb);
+                }
+                //0x1: group2_Ev_1();
+                0x1: decode MODRM_REG {
+                    0x0: ROL_1(Ev);
+                    0x1: ROR_1(Ev);
+                    0x2: RCL_1(Ev);
+                    0x3: RCR_1(Ev);
+                    0x4: SAL_1(Ev);
+                    0x5: SHR_1(Ev);
+                    0x6: SAL_1(Ev);
+                    0x7: SAR_1(Ev);
+                }
                 //0x2: group2_Eb_Cl();
                 0x2: decode MODRM_REG {
                     0x0: ROL(Eb,rCb);
             0x6: decode MODRM_REG {
                 0x0: Inst::TEST(Eb,Iz);
                 0x1: Inst::TEST(Eb,Iz);
-                0x2: not_Eb();
+                0x2: Inst::NOT(Eb);
                 0x3: Inst::NEG(Eb);
                 0x4: mul_Eb();
                 0x5: imul_Eb();
             0x7: decode MODRM_REG {
                 0x0: Inst::TEST(Ev,Iz);
                 0x1: Inst::TEST(Ev,Iz);
-                0x2: not_Ev();
+                0x2: Inst::NOT(Ev);
                 0x3: Inst::NEG(Ev);
                 0x4: mul_Ev();
                 0x5: imul_Ev();