[prev in list] [next in list] [prev in thread] [next in thread] 

List:       bochs-cvs
Subject:    [Bochs-cvs] [13417] trunk/bochs/disasm
From:       sshwarts--- via Bochs-cvs <bochs-cvs () lists ! sourceforge ! net>
Date:       2017-12-28 20:52:47
Message-ID: 1514494367.479161.23579 () sfp-scm-6 ! v30 ! ch3 ! sourceforge ! com
[Download RAW message or body]

Revision: 13417
Author:   sshwarts
Date:     2017-12-28 20:52:46 +0000 (Thu, 28 Dec 2017)
Log Message:
-----------
old legacy disasm: omit printing rep prefix if no repeatable opcode

Modified Paths:
--------------
    trunk/bochs/disasm/dis_decode.cc
    trunk/bochs/disasm/dis_tables.h
    trunk/bochs/disasm/dis_tables.inc

Modified: trunk/bochs/disasm/dis_decode.cc
===================================================================
--- trunk/bochs/disasm/dis_decode.cc	2017-12-28 20:20:13 UTC (rev 13416)
+++ trunk/bochs/disasm/dis_decode.cc	2017-12-28 20:52:46 UTC (rev 13417)
@@ -92,7 +92,7 @@
 #define SSE_PREFIX_66   1
 #define SSE_PREFIX_F3   2
 #define SSE_PREFIX_F2   3      /* only one SSE prefix could be used */
-  unsigned sse_prefix = SSE_PREFIX_NONE, sse_opcode = 0;
+  unsigned sse_prefix = SSE_PREFIX_NONE, rep_opcode = 0;
   unsigned rex_prefix = 0, prefixes = 0;
 
   for(;;)
@@ -264,7 +264,6 @@
 
        case _GRPSSE66:
          /* SSE opcode group with only prefix 0x66 allowed */
-         sse_opcode = 1;
          if (sse_prefix != SSE_PREFIX_66)
              entry = &(BxDisasmGroupSSE_ERR[sse_prefix]);
          attr = 0;
@@ -272,7 +271,6 @@
 
        case _GRPSSEF2:
          /* SSE opcode group with only prefix 0xF2 allowed */
-         sse_opcode = 1;
          if (sse_prefix != SSE_PREFIX_F2)
              entry = &(BxDisasmGroupSSE_ERR[sse_prefix]);
          attr = 0;
@@ -280,15 +278,18 @@
 
        case _GRPSSEF3:
          /* SSE opcode group with only prefix 0xF3 allowed */
-         sse_opcode = 1;
          if (sse_prefix != SSE_PREFIX_F3)
              entry = &(BxDisasmGroupSSE_ERR[sse_prefix]);
          attr = 0;
          continue;
 
+       case _GRPREP:
+         rep_opcode = 1;
+         attr = 0;
+         continue;
+
        case _GRPSSENONE:
          /* SSE opcode group with no prefix only allowed */
-         sse_opcode = 1;
          if (sse_prefix != SSE_PREFIX_NONE)
              entry = &(BxDisasmGroupSSE_ERR[sse_prefix]);
          attr = 0;
@@ -295,7 +296,6 @@
          continue;
 
        case _GRPSSE:
-         sse_opcode = 1;
          /* For SSE opcodes, look into another 4 entries table
             with the opcode prefixes (NONE, 0x66, 0xF2, 0xF3) */
          entry = &(OPCODE_TABLE(entry)[sse_prefix]);
@@ -302,7 +302,6 @@
          break;
 
        case _GRPSSE2:
-         sse_opcode = 1;
          /* For SSE opcodes, look into another 2 entries table
             with the opcode prefixes (NONE, 0x66)
             SSE prefixes 0xF2 and 0xF3 are not allowed */
@@ -374,7 +373,7 @@
         continue;
 
       if (prefix_byte == 0xF3 || prefix_byte == 0xF2) {
-        if (! sse_opcode) {
+        if (rep_opcode) {
           const BxDisasmOpcodeTable_t *prefix = &(opcode_table[prefix_byte]);
           dis_sprintf("%s ", OPCODE(prefix)->IntelOpcode);
         }

Modified: trunk/bochs/disasm/dis_tables.h
===================================================================
--- trunk/bochs/disasm/dis_tables.h	2017-12-28 20:20:13 UTC (rev 13416)
+++ trunk/bochs/disasm/dis_tables.h	2017-12-28 20:52:46 UTC (rev 13417)
@@ -33,11 +33,12 @@
 #define _GRPSSEF3      8
 #define _GRPSSENONE    9
 #define _GRPSSE2       10
-#define _GRPRM         11
-#define _GRP3BOP       12
-#define _GRP64B        13
-#define _GRPVEXW       14
-#define _GRPVEXL       15
+#define _GRPREP        11
+#define _GRPRM         12
+#define _GRP3BOP       13
+#define _GRP64B        14
+#define _GRPVEXW       15
+#define _GRPVEXL       16
 
 /* ************************************************************************ */
 #define GRPSSE(n)       _GRPSSE,   BxDisasmGroupSSE_##n
@@ -60,6 +61,7 @@
 #define GRPSSEF2(n)     _GRPSSEF2,   &n
 #define GRPSSEF3(n)     _GRPSSEF3,   &n
 #define GRPSSENONE(n)   _GRPSSENONE, &n
+#define GRPREP(n)       _GRPREP,     &n
 /* ************************************************************************ */
 
 #define Apw &disassembler::Apw

Modified: trunk/bochs/disasm/dis_tables.inc
===================================================================
--- trunk/bochs/disasm/dis_tables.inc	2017-12-28 20:20:13 UTC (rev 13416)
+++ trunk/bochs/disasm/dis_tables.inc	2017-12-28 20:52:46 UTC (rev 13417)
@@ -795,10 +795,10 @@
   /* 69 */ { 0, &Ia_imulw_Gw_Ew_Iw  },
   /* 6A */ { 0, &Ia_pushw_sIb   },
   /* 6B */ { 0, &Ia_imulw_Gw_Ew_sIb },
-  /* 6C */ { 0, &Ia_insb_Yb_DX  },
-  /* 6D */ { 0, &Ia_insw_Yw_DX  },
-  /* 6E */ { 0, &Ia_outsb_DX_Xb },
-  /* 6F */ { 0, &Ia_outsw_DX_Xw },
+  /* 6C */ { GRPREP(Ia_insb_Yb_DX)  },
+  /* 6D */ { GRPREP(Ia_insw_Yw_DX)  },
+  /* 6E */ { GRPREP(Ia_outsb_DX_Xb) },
+  /* 6F */ { GRPREP(Ia_outsw_DX_Xw) },
   /* 70 */ { 0, &Ia_jo_Jb       },
   /* 71 */ { 0, &Ia_jno_Jb      },
   /* 72 */ { 0, &Ia_jb_Jb       },
@@ -851,18 +851,18 @@
   /* A1 */ { 0, &Ia_movw_AX_Ow  },
   /* A0 */ { 0, &Ia_movb_Ob_AL  },
   /* A1 */ { 0, &Ia_movw_Ow_AX  },
-  /* A4 */ { 0, &Ia_movsb_Yb_Xb },
-  /* A5 */ { 0, &Ia_movsw_Yw_Xw },
-  /* A6 */ { 0, &Ia_cmpsb_Xb_Yb },
-  /* A7 */ { 0, &Ia_cmpsw_Xw_Yw },
+  /* A4 */ { GRPREP(Ia_movsb_Yb_Xb) },
+  /* A5 */ { GRPREP(Ia_movsw_Yw_Xw) },
+  /* A6 */ { GRPREP(Ia_cmpsb_Xb_Yb) },
+  /* A7 */ { GRPREP(Ia_cmpsw_Xw_Yw) },
   /* A8 */ { 0, &Ia_testb_AL_Ib },
   /* A9 */ { 0, &Ia_testw_AX_Iw },
-  /* AA */ { 0, &Ia_stosb_Yb_AL },
-  /* AB */ { 0, &Ia_stosw_Yw_AX },
-  /* AC */ { 0, &Ia_lodsb_AL_Xb },
-  /* AD */ { 0, &Ia_lodsw_AX_Xw },
-  /* AE */ { 0, &Ia_scasb_AL_Yb },
-  /* AF */ { 0, &Ia_scasw_AX_Yw },
+  /* AA */ { GRPREP(Ia_stosb_Yb_AL) },
+  /* AB */ { GRPREP(Ia_stosw_Yw_AX) },
+  /* AC */ { GRPREP(Ia_lodsb_AL_Xb) },
+  /* AD */ { GRPREP(Ia_lodsw_AX_Xw) },
+  /* AE */ { GRPREP(Ia_scasb_AL_Yb) },
+  /* AF */ { GRPREP(Ia_scasw_AX_Yw) },
   /* B0 */ { 0, &Ia_movb_R8_Ib  },
   /* B1 */ { 0, &Ia_movb_R8_Ib  },
   /* B2 */ { 0, &Ia_movb_R8_Ib  },
@@ -1313,13 +1313,13 @@
   /* 66 */ { 0, &Ia_prefix_osize  },   // OSIZE:
   /* 67 */ { 0, &Ia_prefix_asize  },   // ASIZE:
   /* 68 */ { 0, &Ia_pushl_Id      },
-  /* 69 */ { 0, &Ia_imull_Gd_Ed_Id  },
+  /* 69 */ { 0, &Ia_imull_Gd_Ed_Id },
   /* 6A */ { 0, &Ia_pushl_sIb     },
   /* 6B */ { 0, &Ia_imull_Gd_Ed_sIb },
-  /* 6C */ { 0, &Ia_insb_Yb_DX    },
-  /* 6D */ { 0, &Ia_insl_Yd_DX    },
-  /* 6E */ { 0, &Ia_outsb_DX_Xb   },
-  /* 6F */ { 0, &Ia_outsl_DX_Xd   },
+  /* 6C */ { GRPREP(Ia_insb_Yb_DX)  },
+  /* 6D */ { GRPREP(Ia_insl_Yd_DX)  },
+  /* 6E */ { GRPREP(Ia_outsb_DX_Xb) },
+  /* 6F */ { GRPREP(Ia_outsl_DX_Xd) },
   /* 70 */ { 0, &Ia_jo_Jb         },
   /* 71 */ { 0, &Ia_jno_Jb        },
   /* 72 */ { 0, &Ia_jb_Jb         },
@@ -1372,18 +1372,18 @@
   /* A1 */ { 0, &Ia_movl_EAX_Od   },
   /* A0 */ { 0, &Ia_movb_Ob_AL    },
   /* A1 */ { 0, &Ia_movl_Od_EAX   },
-  /* A4 */ { 0, &Ia_movsb_Yb_Xb   },
-  /* A5 */ { 0, &Ia_movsl_Yd_Xd   },
-  /* A6 */ { 0, &Ia_cmpsb_Xb_Yb   },
-  /* A7 */ { 0, &Ia_cmpsl_Xd_Yd   },
+  /* A4 */ { GRPREP(Ia_movsb_Yb_Xb) },
+  /* A5 */ { GRPREP(Ia_movsl_Yd_Xd) },
+  /* A6 */ { GRPREP(Ia_cmpsb_Xb_Yb) },
+  /* A7 */ { GRPREP(Ia_cmpsl_Xd_Yd) },
   /* A8 */ { 0, &Ia_testb_AL_Ib   },
   /* A9 */ { 0, &Ia_testl_EAX_Id  },
-  /* AA */ { 0, &Ia_stosb_Yb_AL   },
-  /* AB */ { 0, &Ia_stosl_Yd_EAX  },
-  /* AC */ { 0, &Ia_lodsb_AL_Xb   },
-  /* AD */ { 0, &Ia_lodsl_EAX_Xd  },
-  /* AE */ { 0, &Ia_scasb_AL_Yb   },
-  /* AF */ { 0, &Ia_scasl_EAX_Yd  },
+  /* AA */ { GRPREP(Ia_stosb_Yb_AL)  },
+  /* AB */ { GRPREP(Ia_stosl_Yd_EAX) },
+  /* AC */ { GRPREP(Ia_lodsb_AL_Xb)  },
+  /* AD */ { GRPREP(Ia_lodsl_EAX_Xd) },
+  /* AE */ { GRPREP(Ia_scasb_AL_Yb)  },
+  /* AF */ { GRPREP(Ia_scasl_EAX_Yd) },
   /* B0 */ { 0, &Ia_movb_R8_Ib    },
   /* B1 */ { 0, &Ia_movb_R8_Ib    },
   /* B2 */ { 0, &Ia_movb_R8_Ib    },
@@ -1837,10 +1837,10 @@
   /* 69 */ { 0, &Ia_imulw_Gw_Ew_Iw  },
   /* 6A */ { 0, &Ia_pushw_sIb   },
   /* 6B */ { 0, &Ia_imulw_Gw_Ew_sIb },
-  /* 6C */ { 0, &Ia_insb_Yb_DX  },
-  /* 6D */ { 0, &Ia_insw_Yw_DX  },
-  /* 6E */ { 0, &Ia_outsb_DX_Xb },
-  /* 6F */ { 0, &Ia_outsw_DX_Xw },
+  /* 6C */ { GRPREP(Ia_insb_Yb_DX)  },
+  /* 6D */ { GRPREP(Ia_insw_Yw_DX)  },
+  /* 6E */ { GRPREP(Ia_outsb_DX_Xb) },
+  /* 6F */ { GRPREP(Ia_outsw_DX_Xw) },
   /* 70 */ { 0, &Ia_jo_Jb       },
   /* 71 */ { 0, &Ia_jno_Jb      },
   /* 72 */ { 0, &Ia_jb_Jb       },
@@ -1893,18 +1893,18 @@
   /* A1 */ { 0, &Ia_movw_AX_Ow  },
   /* A0 */ { 0, &Ia_movb_Ob_AL  },
   /* A1 */ { 0, &Ia_movw_Ow_AX  },
-  /* A4 */ { 0, &Ia_movsb_Yb_Xb },
-  /* A5 */ { 0, &Ia_movsw_Yw_Xw },
-  /* A6 */ { 0, &Ia_cmpsb_Xb_Yb },
-  /* A7 */ { 0, &Ia_cmpsw_Xw_Yw },
+  /* A4 */ { GRPREP(Ia_movsb_Yb_Xb) },
+  /* A5 */ { GRPREP(Ia_movsw_Yw_Xw) },
+  /* A6 */ { GRPREP(Ia_cmpsb_Xb_Yb) },
+  /* A7 */ { GRPREP(Ia_cmpsw_Xw_Yw) },
   /* A8 */ { 0, &Ia_testb_AL_Ib },
   /* A9 */ { 0, &Ia_testw_AX_Iw },
-  /* AA */ { 0, &Ia_stosb_Yb_AL },
-  /* AB */ { 0, &Ia_stosw_Yw_AX },
-  /* AC */ { 0, &Ia_lodsb_AL_Xb },
-  /* AD */ { 0, &Ia_lodsw_AX_Xw },
-  /* AE */ { 0, &Ia_scasb_AL_Yb },
-  /* AF */ { 0, &Ia_scasw_AX_Yw },
+  /* AA */ { GRPREP(Ia_stosb_Yb_AL) },
+  /* AB */ { GRPREP(Ia_stosw_Yw_AX) },
+  /* AC */ { GRPREP(Ia_lodsb_AL_Xb) },
+  /* AD */ { GRPREP(Ia_lodsw_AX_Xw) },
+  /* AE */ { GRPREP(Ia_scasb_AL_Yb) },
+  /* AF */ { GRPREP(Ia_scasw_AX_Yw) },
   /* B0 */ { 0, &Ia_movb_R8_Ib  },
   /* B1 */ { 0, &Ia_movb_R8_Ib  },
   /* B2 */ { 0, &Ia_movb_R8_Ib  },
@@ -2355,10 +2355,10 @@
   /* 69 */ { 0, &Ia_imull_Gd_Ed_Id  },
   /* 6A */ { 0, &Ia_pushq_sIb     },
   /* 6B */ { 0, &Ia_imull_Gd_Ed_sIb },
-  /* 6C */ { 0, &Ia_insb_Yb_DX    },
-  /* 6D */ { 0, &Ia_insl_Yd_DX    },
-  /* 6E */ { 0, &Ia_outsb_DX_Xb   },
-  /* 6F */ { 0, &Ia_outsl_DX_Xd   },
+  /* 6C */ { GRPREP(Ia_insb_Yb_DX)  },
+  /* 6D */ { GRPREP(Ia_insl_Yd_DX)  },
+  /* 6E */ { GRPREP(Ia_outsb_DX_Xb) },
+  /* 6F */ { GRPREP(Ia_outsl_DX_Xd) },
   /* 70 */ { 0, &Ia_jo_Jb         },
   /* 71 */ { 0, &Ia_jno_Jb        },
   /* 72 */ { 0, &Ia_jb_Jb         },
@@ -2411,18 +2411,18 @@
   /* A1 */ { 0, &Ia_movl_EAX_Od   },
   /* A0 */ { 0, &Ia_movb_Ob_AL    },
   /* A1 */ { 0, &Ia_movl_Od_EAX   },
-  /* A4 */ { 0, &Ia_movsb_Yb_Xb   },
-  /* A5 */ { 0, &Ia_movsl_Yd_Xd   },
-  /* A6 */ { 0, &Ia_cmpsb_Xb_Yb   },
-  /* A7 */ { 0, &Ia_cmpsl_Xd_Yd   },
+  /* A4 */ { GRPREP(Ia_movsb_Yb_Xb) },
+  /* A5 */ { GRPREP(Ia_movsl_Yd_Xd) },
+  /* A6 */ { GRPREP(Ia_cmpsb_Xb_Yb) },
+  /* A7 */ { GRPREP(Ia_cmpsl_Xd_Yd) },
   /* A8 */ { 0, &Ia_testb_AL_Ib   },
   /* A9 */ { 0, &Ia_testl_EAX_Id  },
-  /* AA */ { 0, &Ia_stosb_Yb_AL   },
-  /* AB */ { 0, &Ia_stosl_Yd_EAX  },
-  /* AC */ { 0, &Ia_lodsb_AL_Xb   },
-  /* AD */ { 0, &Ia_lodsl_EAX_Xd  },
-  /* AE */ { 0, &Ia_scasb_AL_Yb   },
-  /* AF */ { 0, &Ia_scasl_EAX_Yd  },
+  /* AA */ { GRPREP(Ia_stosb_Yb_AL)  },
+  /* AB */ { GRPREP(Ia_stosl_Yd_EAX) },
+  /* AC */ { GRPREP(Ia_lodsb_AL_Xb)  },
+  /* AD */ { GRPREP(Ia_lodsl_EAX_Xd) },
+  /* AE */ { GRPREP(Ia_scasb_AL_Yb)  },
+  /* AF */ { GRPREP(Ia_scasl_EAX_Yd) },
   /* B0 */ { 0, &Ia_movb_R8_Ib    },
   /* B1 */ { 0, &Ia_movb_R8_Ib    },
   /* B2 */ { 0, &Ia_movb_R8_Ib    },
@@ -2873,10 +2873,10 @@
   /* 69 */ { 0, &Ia_imulq_Gq_Eq_sId },
   /* 6A */ { 0, &Ia_pushq_sIb     },
   /* 6B */ { 0, &Ia_imulq_Gq_Eq_sIb },
-  /* 6C */ { 0, &Ia_insb_Yb_DX    },
-  /* 6D */ { 0, &Ia_insl_Yd_DX    },
-  /* 6E */ { 0, &Ia_outsb_DX_Xb   },
-  /* 6F */ { 0, &Ia_outsl_DX_Xd   },
+  /* 6C */ { GRPREP(Ia_insb_Yb_DX)  },
+  /* 6D */ { GRPREP(Ia_insl_Yd_DX)  },
+  /* 6E */ { GRPREP(Ia_outsb_DX_Xb) },
+  /* 6F */ { GRPREP(Ia_outsl_DX_Xd) },
   /* 70 */ { 0, &Ia_jo_Jb         },
   /* 71 */ { 0, &Ia_jno_Jb        },
   /* 72 */ { 0, &Ia_jb_Jb         },
@@ -2929,18 +2929,18 @@
   /* A1 */ { 0, &Ia_movq_RAX_Oq   },
   /* A0 */ { 0, &Ia_movb_Ob_AL    },
   /* A1 */ { 0, &Ia_movq_Oq_RAX   },
-  /* A4 */ { 0, &Ia_movsb_Yb_Xb   },
-  /* A5 */ { 0, &Ia_movsq_Yq_Xq   },
-  /* A6 */ { 0, &Ia_cmpsb_Xb_Yb   },
-  /* A7 */ { 0, &Ia_cmpsq_Xq_Yq   },
+  /* A4 */ { GRPREP(Ia_movsb_Yb_Xb) },
+  /* A5 */ { GRPREP(Ia_movsq_Yq_Xq) },
+  /* A6 */ { GRPREP(Ia_cmpsb_Xb_Yb) },
+  /* A7 */ { GRPREP(Ia_cmpsq_Xq_Yq) },
   /* A8 */ { 0, &Ia_testb_AL_Ib   },
   /* A9 */ { 0, &Ia_testq_RAX_sId },
-  /* AA */ { 0, &Ia_stosb_Yb_AL   },
-  /* AB */ { 0, &Ia_stosq_Yq_RAX  },
-  /* AC */ { 0, &Ia_lodsb_AL_Xb   },
-  /* AD */ { 0, &Ia_lodsq_RAX_Xq  },
-  /* AE */ { 0, &Ia_scasb_AL_Yb   },
-  /* AF */ { 0, &Ia_scasq_RAX_Yq  },
+  /* AA */ { GRPREP(Ia_stosb_Yb_AL)  },
+  /* AB */ { GRPREP(Ia_stosq_Yq_RAX) },
+  /* AC */ { GRPREP(Ia_lodsb_AL_Xb)  },
+  /* AD */ { GRPREP(Ia_lodsq_RAX_Xq) },
+  /* AE */ { GRPREP(Ia_scasb_AL_Yb)  },
+  /* AF */ { GRPREP(Ia_scasq_RAX_Yq) },
   /* B0 */ { 0, &Ia_movb_R8_Ib    },
   /* B1 */ { 0, &Ia_movb_R8_Ib    },
   /* B2 */ { 0, &Ia_movb_R8_Ib    },


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Bochs-cvs mailing list
Bochs-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bochs-cvs
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic