Changeset 9919 in vbox
- Timestamp:
- Jun 25, 2008 2:16:59 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 32341
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/dis.h
r9761 r9919 193 193 /** @} */ 194 194 195 /** index in {"EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI" }195 /** index in {"EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"} 196 196 * @{ 197 197 */ … … 204 204 #define USE_REG_ESI 6 205 205 #define USE_REG_EDI 7 206 /** @} */ 207 /** index in {"AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI"} 206 #define USE_REG_R8 8 207 #define USE_REG_R9 9 208 #define USE_REG_R10D 10 209 #define USE_REG_R11D 11 210 #define USE_REG_R12D 12 211 #define USE_REG_R13D 13 212 #define USE_REG_R14D 14 213 #define USE_REG_R15D 15 214 215 /** @} */ 216 /** index in {"AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"} 208 217 * @{ 209 218 */ … … 216 225 #define USE_REG_SI 6 217 226 #define USE_REG_DI 7 218 /** @} */ 219 220 /** index in {"AL", "CL", "DL", "BL", "AH", "CH", "DH", "BH"} 227 #define USE_REG_R10W 10 228 #define USE_REG_R11W 11 229 #define USE_REG_R12W 12 230 #define USE_REG_R13W 13 231 #define USE_REG_R14W 14 232 #define USE_REG_R15W 15 233 /** @} */ 234 235 /** index in {"AL", "CL", "DL", "BL", "AH", "CH", "DH", "BH", "R8B", "R9B", "R10B", "R11B", "R12B", "R13B", "R14B", "R15B", "DIL", "SIL", "BPL", "SPL"} 221 236 * @{ 222 237 */ … … 229 244 #define USE_REG_DH 6 230 245 #define USE_REG_BH 7 246 #define USE_REG_R8B 8 247 #define USE_REG_R9B 9 248 #define USE_REG_R10B 10 249 #define USE_REG_R11B 11 250 #define USE_REG_R12B 12 251 #define USE_REG_R13B 13 252 #define USE_REG_R14B 14 253 #define USE_REG_R15B 15 254 #define USE_REG_DIL 16 255 #define USE_REG_SIL 17 256 #define USE_REG_BPL 18 257 #define USE_REG_SPL 19 258 231 259 /** @} */ 232 260 -
trunk/src/VBox/Disassembler/DisasmCore.cpp
r9912 r9919 2141 2141 //***************************************************************************** 2142 2142 #if !defined(DIS_CORE_ONLY) && defined(LOG_ENABLED) 2143 static const char *szModRMReg8[] = {"AL", "CL", "DL", "BL", "AH", "CH", "DH", "BH"}; 2144 static const char *szModRMReg8_64[] = {"AL", "CL", "DL", "BL", "AH", "CH", "DH", "BH", "R8B", "R9B", "R10B", "R11B", "R12B", "R13B", "R14B", "R15B"}; 2145 static const char *szModRMReg16[] = {"AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI"}; 2146 static const char *szModRMReg16_64[] = {"AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"}; 2147 static const char *szModRMReg32[] = {"EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI"}; 2148 static const char *szModRMReg32_64[] = {"EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"}; 2143 static const char *szModRMReg8[] = {"AL", "CL", "DL", "BL", "AH", "CH", "DH", "BH", "R8B", "R9B", "R10B", "R11B", "R12B", "R13B", "R14B", "R15B", "DIL", "SIL", "BPL", "SPL"}; 2144 static const char *szModRMReg16[] = {"AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"}; 2145 static const char *szModRMReg32[] = {"EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"}; 2149 2146 static const char *szModRMReg64[] = {"RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"}; 2150 2147 static const char *szModRMReg1616[8] = {"BX+SI", "BX+DI", "BP+SI", "BP+DI", "SI", "DI", "BP", "BX"}; … … 2187 2184 { 2188 2185 case OP_PARM_b: 2189 #if !defined(DIS_CORE_ONLY) && defined(LOG_ENABLED) 2190 if (idx > RT_ELEMENTS(szModRMReg8)) 2191 disasmAddString(pParam->szParam, szModRMReg8_64[idx]); 2192 else 2193 disasmAddString(pParam->szParam, szModRMReg8[idx]); 2194 #endif 2186 disasmAddString(pParam->szParam, szModRMReg8[idx]); 2187 Assert(idx < (pCpu->prefix & PREFIX_REX) ? 16 : 8); 2188 2189 /* AH, BH, CH & DH map to DIL, SIL, EBL & SPL when a rex prefix is present. */ 2190 /* Intel® 64 and IA-32 Architectures Software Developers Manual: 3.4.1.1 */ 2191 if ( (pCpu->prefix & PREFIX_REX) 2192 && idx >= USE_REG_AH 2193 && idx <= USE_REG_BH) 2194 { 2195 idx += (USE_REG_DIL - USE_REG_AH); 2196 } 2197 2195 2198 pParam->flags |= USE_REG_GEN8; 2196 2199 pParam->base.reg_gen = idx; … … 2198 2201 2199 2202 case OP_PARM_w: 2200 #if !defined(DIS_CORE_ONLY) && defined(LOG_ENABLED) 2201 if (idx > RT_ELEMENTS(szModRMReg8)) 2202 disasmAddString(pParam->szParam, szModRMReg16_64[idx]); 2203 else 2204 disasmAddString(pParam->szParam, szModRMReg16[idx]); 2205 #endif 2203 disasmAddString(pParam->szParam, szModRMReg16[idx]); 2204 Assert(idx < (pCpu->prefix & PREFIX_REX) ? 16 : 8); 2205 2206 2206 pParam->flags |= USE_REG_GEN16; 2207 2207 pParam->base.reg_gen = idx; … … 2209 2209 2210 2210 case OP_PARM_d: 2211 #if !defined(DIS_CORE_ONLY) && defined(LOG_ENABLED) 2212 if (idx > RT_ELEMENTS(szModRMReg8)) 2213 disasmAddString(pParam->szParam, szModRMReg32_64[idx]); 2214 else 2215 disasmAddString(pParam->szParam, szModRMReg32[idx]); 2216 #endif 2211 disasmAddString(pParam->szParam, szModRMReg32[idx]); 2212 Assert(idx < (pCpu->prefix & PREFIX_REX) ? 16 : 8); 2213 2217 2214 pParam->flags |= USE_REG_GEN32; 2218 2215 pParam->base.reg_gen = idx; -
trunk/src/VBox/Disassembler/DisasmReg.cpp
r9792 r9919 96 96 RT_OFFSETOF(CPUMCTXCORE, esi), /* USE_REG_ESI */ 97 97 RT_OFFSETOF(CPUMCTXCORE, edi), /* USE_REG_EDI */ 98 RT_OFFSETOF(CPUMCTXCORE, r8), /* USE_REG_R8 : dword access*/99 RT_OFFSETOF(CPUMCTXCORE, r9), /* USE_REG_R9 : dword access*/100 RT_OFFSETOF(CPUMCTXCORE, r10), /* USE_REG_R10 : dword access*/101 RT_OFFSETOF(CPUMCTXCORE, r11), /* USE_REG_R11 : dword access*/102 RT_OFFSETOF(CPUMCTXCORE, r12), /* USE_REG_R12 : dword access*/103 RT_OFFSETOF(CPUMCTXCORE, r13), /* USE_REG_R13 : dword access*/104 RT_OFFSETOF(CPUMCTXCORE, r14), /* USE_REG_R14 : dword access*/105 RT_OFFSETOF(CPUMCTXCORE, r15) /* USE_REG_R15 : dword access*/98 RT_OFFSETOF(CPUMCTXCORE, r8), /* USE_REG_R8D */ 99 RT_OFFSETOF(CPUMCTXCORE, r9), /* USE_REG_R9D */ 100 RT_OFFSETOF(CPUMCTXCORE, r10), /* USE_REG_R10D */ 101 RT_OFFSETOF(CPUMCTXCORE, r11), /* USE_REG_R11D */ 102 RT_OFFSETOF(CPUMCTXCORE, r12), /* USE_REG_R12D */ 103 RT_OFFSETOF(CPUMCTXCORE, r13), /* USE_REG_R13D */ 104 RT_OFFSETOF(CPUMCTXCORE, r14), /* USE_REG_R14D */ 105 RT_OFFSETOF(CPUMCTXCORE, r15) /* USE_REG_R15D */ 106 106 }; 107 107 … … 127 127 RT_OFFSETOF(CPUMCTXCORE, esi), /* USE_REG_SI */ 128 128 RT_OFFSETOF(CPUMCTXCORE, edi), /* USE_REG_DI */ 129 RT_OFFSETOF(CPUMCTXCORE, r8), /* USE_REG_R8 : word access*/130 RT_OFFSETOF(CPUMCTXCORE, r9), /* USE_REG_R9 : word access*/131 RT_OFFSETOF(CPUMCTXCORE, r10), /* USE_REG_R10 : word access*/132 RT_OFFSETOF(CPUMCTXCORE, r11), /* USE_REG_R11 : word access*/133 RT_OFFSETOF(CPUMCTXCORE, r12), /* USE_REG_R12 : word access*/134 RT_OFFSETOF(CPUMCTXCORE, r13), /* USE_REG_R13 : word access*/135 RT_OFFSETOF(CPUMCTXCORE, r14), /* USE_REG_R14 : word access*/136 RT_OFFSETOF(CPUMCTXCORE, r15) /* USE_REG_R15 : word access*/129 RT_OFFSETOF(CPUMCTXCORE, r8), /* USE_REG_R8W */ 130 RT_OFFSETOF(CPUMCTXCORE, r9), /* USE_REG_R9W */ 131 RT_OFFSETOF(CPUMCTXCORE, r10), /* USE_REG_R10W */ 132 RT_OFFSETOF(CPUMCTXCORE, r11), /* USE_REG_R11W */ 133 RT_OFFSETOF(CPUMCTXCORE, r12), /* USE_REG_R12W */ 134 RT_OFFSETOF(CPUMCTXCORE, r13), /* USE_REG_R13W */ 135 RT_OFFSETOF(CPUMCTXCORE, r14), /* USE_REG_R14W */ 136 RT_OFFSETOF(CPUMCTXCORE, r15) /* USE_REG_R15W */ 137 137 }; 138 138 … … 158 158 RT_OFFSETOF(CPUMCTXCORE, edx) + 1, /* USE_REG_DH */ 159 159 RT_OFFSETOF(CPUMCTXCORE, ebx) + 1, /* USE_REG_BH */ 160 RT_OFFSETOF(CPUMCTXCORE, r8), /* USE_REG_R8 : byte access */ 161 RT_OFFSETOF(CPUMCTXCORE, r9), /* USE_REG_R9 : byte access */ 162 RT_OFFSETOF(CPUMCTXCORE, r10), /* USE_REG_R10 : byte access */ 163 RT_OFFSETOF(CPUMCTXCORE, r11), /* USE_REG_R11 : byte access */ 164 RT_OFFSETOF(CPUMCTXCORE, r12), /* USE_REG_R12 : byte access */ 165 RT_OFFSETOF(CPUMCTXCORE, r13), /* USE_REG_R13 : byte access */ 166 RT_OFFSETOF(CPUMCTXCORE, r14), /* USE_REG_R14 : byte access */ 167 RT_OFFSETOF(CPUMCTXCORE, r15) /* USE_REG_R15 : byte access */ 160 RT_OFFSETOF(CPUMCTXCORE, r8), /* USE_REG_R8B */ 161 RT_OFFSETOF(CPUMCTXCORE, r9), /* USE_REG_R9B */ 162 RT_OFFSETOF(CPUMCTXCORE, r10), /* USE_REG_R10B*/ 163 RT_OFFSETOF(CPUMCTXCORE, r11), /* USE_REG_R11B */ 164 RT_OFFSETOF(CPUMCTXCORE, r12), /* USE_REG_R12B */ 165 RT_OFFSETOF(CPUMCTXCORE, r13), /* USE_REG_R13B */ 166 RT_OFFSETOF(CPUMCTXCORE, r14), /* USE_REG_R14B */ 167 RT_OFFSETOF(CPUMCTXCORE, r15), /* USE_REG_R15B */ 168 RT_OFFSETOF(CPUMCTXCORE, edi), /* USE_REG_DIL; with REX prefix only */ 169 RT_OFFSETOF(CPUMCTXCORE, esi), /* USE_REG_SIL; with REX prefix only */ 170 RT_OFFSETOF(CPUMCTXCORE, ebp), /* USE_REG_BPL; with REX prefix only */ 171 RT_OFFSETOF(CPUMCTXCORE, esp), /* USE_REG_SPL; with REX prefix only */ 168 172 }; 169 173
Note:
See TracChangeset
for help on using the changeset viewer.