Revision: 3316
Author: [email protected]
Date: Tue Nov 17 02:24:27 2009
Log: Add missing case for shr in IA-32 disassembler
Review URL: http://codereview.chromium.org/397024
http://code.google.com/p/v8/source/detail?r=3316

Modified:
  /branches/bleeding_edge/src/ia32/disasm-ia32.cc
  /branches/bleeding_edge/test/cctest/test-disasm-ia32.cc

=======================================
--- /branches/bleeding_edge/src/ia32/disasm-ia32.cc     Tue Oct 27 03:47:01 2009
+++ /branches/bleeding_edge/src/ia32/disasm-ia32.cc     Tue Nov 17 02:24:27 2009
@@ -272,6 +272,17 @@
    };


+  enum ShiftOpcodeExtension {
+    kROL = 0,
+    kROR = 1,
+    kRCL = 2,
+    kRCR = 3,
+    kSHL = 4,
+    KSHR = 5,
+    kSAR = 7
+  };
+
+
    const char* NameOfCPURegister(int reg) const {
      return converter_.NameOfCPURegister(reg);
    }
@@ -536,31 +547,22 @@
    int num_bytes = 2;
    if (mod == 3) {
      const char* mnem = NULL;
+    switch (regop) {
+      case kROL: mnem = "rol"; break;
+      case kROR: mnem = "ror"; break;
+      case kRCL: mnem = "rcl"; break;
+      case kSHL: mnem = "shl"; break;
+      case KSHR: mnem = "shr"; break;
+      case kSAR: mnem = "sar"; break;
+      default: UnimplementedInstruction();
+    }
      if (op == 0xD1) {
        imm8 = 1;
-      switch (regop) {
-        case edx: mnem = "rcl"; break;
-        case edi: mnem = "sar"; break;
-        case esp: mnem = "shl"; break;
-        default: UnimplementedInstruction();
-      }
      } else if (op == 0xC1) {
        imm8 = *(data+2);
        num_bytes = 3;
-      switch (regop) {
-        case edx: mnem = "rcl"; break;
-        case esp: mnem = "shl"; break;
-        case ebp: mnem = "shr"; break;
-        case edi: mnem = "sar"; break;
-        default: UnimplementedInstruction();
-      }
      } else if (op == 0xD3) {
-      switch (regop) {
-        case esp: mnem = "shl"; break;
-        case ebp: mnem = "shr"; break;
-        case edi: mnem = "sar"; break;
-        default: UnimplementedInstruction();
-      }
+      // Shift/rotate by cl.
      }
      ASSERT_NE(NULL, mnem);
      AppendToBuffer("%s %s,", mnem, NameOfCPURegister(rm));
=======================================
--- /branches/bleeding_edge/test/cctest/test-disasm-ia32.cc     Tue Nov 17  
00:35:43 2009
+++ /branches/bleeding_edge/test/cctest/test-disasm-ia32.cc     Tue Nov 17  
02:24:27 2009
@@ -201,6 +201,7 @@
    __ shl(edx, 6);
    __ shl_cl(edx);
    __ shrd(edx, Operand(ebx, ecx, times_4, 10000));
+  __ shr(edx, 1);
    __ shr(edx, 7);
    __ shr_cl(edx);


--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to