Changeset 8299 in vbox
- Timestamp:
- Apr 22, 2008 3:17:50 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 30054
- Location:
- trunk
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/dis.h
r8234 r8299 60 60 #define PREFIX_NONE 0 61 61 /** non-default address size. */ 62 #define PREFIX_ADDRSIZE 162 #define PREFIX_ADDRSIZE RT_BIT(0) 63 63 /** non-default operand size. */ 64 #define PREFIX_OPSIZE 264 #define PREFIX_OPSIZE RT_BIT(1) 65 65 /** lock prefix. */ 66 #define PREFIX_LOCK 466 #define PREFIX_LOCK RT_BIT(2) 67 67 /** segment prefix. */ 68 #define PREFIX_SEG 868 #define PREFIX_SEG RT_BIT(3) 69 69 /** rep(e) prefix (not a prefix, but we'll treat is as one). */ 70 #define PREFIX_REP 1670 #define PREFIX_REP RT_BIT(4) 71 71 /** rep(e) prefix (not a prefix, but we'll treat is as one). */ 72 #define PREFIX_REPNE 3272 #define PREFIX_REPNE RT_BIT(5) 73 73 /** REX prefix (64 bits) */ 74 #define PREFIX_REX 6474 #define PREFIX_REX RT_BIT(6) 75 75 /** @} */ 76 76 … … 78 78 * @{ 79 79 */ 80 #define PREFIX_REX_OP_2_FLAGS(a) (a - OP_ REX)81 #define PREFIX_REX_FLAGS PREFIX_REX_OP_2_FLAGS(OP_ REX)82 #define PREFIX_REX_FLAGS_B PREFIX_REX_OP_2_FLAGS(OP_ REX_B)83 #define PREFIX_REX_FLAGS_X PREFIX_REX_OP_2_FLAGS(OP_ REX_X)84 #define PREFIX_REX_FLAGS_XB PREFIX_REX_OP_2_FLAGS(OP_ REX_XB)85 #define PREFIX_REX_FLAGS_R PREFIX_REX_OP_2_FLAGS(OP_ REX_R)86 #define PREFIX_REX_FLAGS_RB PREFIX_REX_OP_2_FLAGS(OP_ REX_RB)87 #define PREFIX_REX_FLAGS_RX PREFIX_REX_OP_2_FLAGS(OP_ REX_RX)88 #define PREFIX_REX_FLAGS_RXB PREFIX_REX_OP_2_FLAGS(OP_ REX_RXB)89 #define PREFIX_REX_FLAGS_W PREFIX_REX_OP_2_FLAGS(OP_ REX_W)90 #define PREFIX_REX_FLAGS_WB PREFIX_REX_OP_2_FLAGS(OP_ REX_WB)91 #define PREFIX_REX_FLAGS_WX PREFIX_REX_OP_2_FLAGS(OP_ REX_WX)92 #define PREFIX_REX_FLAGS_WXB PREFIX_REX_OP_2_FLAGS(OP_ REX_WXB)93 #define PREFIX_REX_FLAGS_WR PREFIX_REX_OP_2_FLAGS(OP_ REX_WR)94 #define PREFIX_REX_FLAGS_WRB PREFIX_REX_OP_2_FLAGS(OP_ REX_WRB)95 #define PREFIX_REX_FLAGS_WRX PREFIX_REX_OP_2_FLAGS(OP_ REX_WRX)96 #define PREFIX_REX_FLAGS_WRXB PREFIX_REX_OP_2_FLAGS(OP_ REX_WRXB)80 #define PREFIX_REX_OP_2_FLAGS(a) (a - OP_PARM_REX_START) 81 #define PREFIX_REX_FLAGS PREFIX_REX_OP_2_FLAGS(OP_PARM_REX) 82 #define PREFIX_REX_FLAGS_B PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_B) 83 #define PREFIX_REX_FLAGS_X PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_X) 84 #define PREFIX_REX_FLAGS_XB PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_XB) 85 #define PREFIX_REX_FLAGS_R PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_R) 86 #define PREFIX_REX_FLAGS_RB PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_RB) 87 #define PREFIX_REX_FLAGS_RX PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_RX) 88 #define PREFIX_REX_FLAGS_RXB PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_RXB) 89 #define PREFIX_REX_FLAGS_W PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_W) 90 #define PREFIX_REX_FLAGS_WB PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WB) 91 #define PREFIX_REX_FLAGS_WX PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WX) 92 #define PREFIX_REX_FLAGS_WXB PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WXB) 93 #define PREFIX_REX_FLAGS_WR PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WR) 94 #define PREFIX_REX_FLAGS_WRB PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WRB) 95 #define PREFIX_REX_FLAGS_WRX PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WRX) 96 #define PREFIX_REX_FLAGS_WRXB PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WRXB) 97 97 /** @} */ 98 98 -
trunk/include/VBox/disopcode.h
r8155 r8299 50 50 #define OP_REPNE 4 51 51 #define OP_REPE 5 52 #define OP_LOCK 6 /* disassembler assumes this is the last prefix byte value!!!! */ 53 #define OP_AND 7 54 #define OP_OR 8 55 #define OP_DAA 9 56 #define OP_SUB 10 57 #define OP_DAS 11 58 #define OP_XOR 12 59 #define OP_AAA 13 60 #define OP_CMP 14 61 #define OP_IMM_GRP1 15 62 #define OP_AAS 16 63 #define OP_INC 17 64 #define OP_DEC 18 65 #define OP_PUSHA 19 66 #define OP_POPA 20 67 #define OP_BOUND 21 68 #define OP_ARPL 22 69 #define OP_PUSH 23 70 #define OP_POP 24 71 #define OP_IMUL 25 72 #define OP_INSB 26 73 #define OP_INSWD 27 74 #define OP_OUTSB 28 75 #define OP_OUTSWD 29 76 #define OP_JO 30 77 #define OP_JNO 31 78 #define OP_JC 32 79 #define OP_JNC 33 80 #define OP_JE 34 81 #define OP_JNE 35 82 #define OP_JBE 36 83 #define OP_JNBE 37 84 #define OP_JS 38 85 #define OP_JNS 39 86 #define OP_JP 40 87 #define OP_JNP 41 88 #define OP_JL 42 89 #define OP_JNL 43 90 #define OP_JLE 44 91 #define OP_JNLE 45 92 #define OP_ADD 46 93 #define OP_TEST 47 94 #define OP_XCHG 48 95 #define OP_MOV 49 96 #define OP_LEA 50 97 #define OP_NOP 51 98 #define OP_CBW 52 99 #define OP_CWD 53 100 #define OP_CALL 54 101 #define OP_WAIT 55 102 #define OP_PUSHF 56 103 #define OP_POPF 57 104 #define OP_SAHF 58 105 #define OP_LAHF 59 106 #define OP_MOVSB 60 107 #define OP_MOVSWD 61 108 #define OP_CMPSB 62 109 #define OP_CMPWD 63 110 #define OP_STOSB 64 111 #define OP_STOSWD 65 112 #define OP_LODSB 66 113 #define OP_LODSWD 67 114 #define OP_SCASB 68 115 #define OP_SCASWD 69 116 #define OP_SHIFT_GRP2 70 117 #define OP_RETN 71 118 #define OP_LES 72 119 #define OP_LDS 73 120 #define OP_ENTER 74 121 #define OP_LEAVE 75 122 #define OP_RETF 76 123 #define OP_INT3 77 124 #define OP_INT 78 125 #define OP_INTO 79 126 #define OP_IRET 80 127 #define OP_AAM 81 128 #define OP_AAD 82 129 #define OP_XLAT 83 130 #define OP_ESCF0 84 131 #define OP_ESCF1 85 132 #define OP_ESCF2 86 133 #define OP_ESCF3 87 134 #define OP_ESCF4 88 135 #define OP_ESCF5 89 136 #define OP_ESCF6 90 137 #define OP_ESCF7 91 138 #define OP_LOOPNE 92 139 #define OP_LOOPE 93 140 #define OP_LOOP 94 141 #define OP_JECXZ 95 142 #define OP_IN 96 143 #define OP_OUT 97 144 #define OP_JMP 98 145 #define OP_2B_ESC 99 146 #define OP_ADC 100 147 #define OP_SBB 101 148 #define OP_HLT 102 149 #define OP_CMC 103 150 #define OP_UNARY_GRP3 104 151 #define OP_CLC 105 152 #define OP_STC 106 153 #define OP_CLI 107 154 #define OP_STI 108 155 #define OP_CLD 109 156 #define OP_STD 110 157 #define OP_INC_GRP4 111 158 #define OP_IND_GRP5 112 159 #define OP_GRP6 113 160 #define OP_GRP7 114 161 #define OP_LAR 115 162 #define OP_LSL 116 163 #define OP_SYSCALL 117 164 #define OP_CLTS 118 165 #define OP_SYSRET 119 166 #define OP_INVD 120 167 #define OP_WBINVD 121 168 #define OP_ILLUD2 122 169 #define OP_FEMMS 123 170 #define OP_3DNOW 124 171 #define OP_MOVUPS 125 172 #define OP_MOVLPS 126 173 #define OP_UNPCKLPS 127 174 #define OP_MOVHPS 128 175 #define OP_UNPCKHPS 129 176 #define OP_PREFETCH_GRP16 130 177 #define OP_MOV_CR 131 178 #define OP_MOVAPS 132 179 #define OP_CVTPI2PS 133 180 #define OP_MOVNTPS 134 181 #define OP_CVTTPS2PI 135 182 #define OP_CVTPS2PI 136 183 #define OP_UCOMISS 137 184 #define OP_COMISS 138 185 #define OP_WRMSR 139 186 #define OP_RDTSC 140 187 #define OP_RDMSR 141 188 #define OP_RPPMC 142 189 #define OP_SYSENTER 143 190 #define OP_SYSEXIT 144 191 #define OP_PAUSE 145 192 #define OP_CMOVO 146 193 #define OP_CMOVNO 147 194 #define OP_CMOVC 148 195 #define OP_CMOVNC 149 196 #define OP_CMOVZ 150 197 #define OP_CMOVNZ 151 198 #define OP_CMOVBE 152 199 #define OP_CMOVNBE 153 200 #define OP_CMOVS 154 201 #define OP_CMOVNS 155 202 #define OP_CMOVP 156 203 #define OP_CMOVNP 157 204 #define OP_CMOVL 158 205 #define OP_CMOVNL 159 206 #define OP_CMOVLE 160 207 #define OP_CMOVNLE 161 208 #define OP_MOVMSKPS 162 209 #define OP_SQRTPS 163 210 #define OP_RSQRTPS 164 211 #define OP_RCPPS 165 212 #define OP_ANDPS 166 213 #define OP_ANDNPS 167 214 #define OP_ORPS 168 215 #define OP_XORPS 169 216 #define OP_ADDPS 170 217 #define OP_MULPS 171 218 #define OP_CVTPS2PD 172 219 #define OP_CVTDQ2PS 173 220 #define OP_SUBPS 174 221 #define OP_MINPS 175 222 #define OP_DIVPS 176 223 #define OP_MAXPS 177 224 #define OP_PUNPCKLBW 178 225 #define OP_PUNPCKLWD 179 226 #define OP_PUNPCKLDQ 180 227 #define OP_PACKSSWB 181 228 #define OP_PCMPGTB 182 229 #define OP_PCMPGTW 183 230 #define OP_PCMPGTD 184 231 #define OP_PACKUSWB 185 232 #define OP_PUNPCKHBW 186 233 #define OP_PUNPCKHWD 187 234 #define OP_PUNPCKHDQ 188 235 #define OP_PACKSSDW 189 236 #define OP_MOVD 190 237 #define OP_MOVQ 191 238 #define OP_PSHUFW 192 239 240 52 #define OP_REX 6 53 #define OP_LOCK 7 /* disassembler assumes this is the last prefix byte value!!!! */ 54 #define OP_AND 8 55 #define OP_OR 9 56 #define OP_DAA 10 57 #define OP_SUB 11 58 #define OP_DAS 12 59 #define OP_XOR 13 60 #define OP_AAA 14 61 #define OP_CMP 15 62 #define OP_IMM_GRP1 16 63 #define OP_AAS 17 64 #define OP_INC 18 65 #define OP_DEC 19 66 #define OP_PUSHA 20 67 #define OP_POPA 21 68 #define OP_BOUND 22 69 #define OP_ARPL 23 70 #define OP_PUSH 24 71 #define OP_POP 25 72 #define OP_IMUL 26 73 #define OP_INSB 27 74 #define OP_INSWD 28 75 #define OP_OUTSB 29 76 #define OP_OUTSWD 30 77 #define OP_JO 31 78 #define OP_JNO 32 79 #define OP_JC 33 80 #define OP_JNC 34 81 #define OP_JE 35 82 #define OP_JNE 36 83 #define OP_JBE 37 84 #define OP_JNBE 38 85 #define OP_JS 39 86 #define OP_JNS 40 87 #define OP_JP 41 88 #define OP_JNP 42 89 #define OP_JL 43 90 #define OP_JNL 44 91 #define OP_JLE 45 92 #define OP_JNLE 46 93 #define OP_ADD 47 94 #define OP_TEST 48 95 #define OP_XCHG 49 96 #define OP_MOV 50 97 #define OP_LEA 51 98 #define OP_NOP 52 99 #define OP_CBW 53 100 #define OP_CWD 54 101 #define OP_CALL 55 102 #define OP_WAIT 56 103 #define OP_PUSHF 57 104 #define OP_POPF 58 105 #define OP_SAHF 59 106 #define OP_LAHF 60 107 #define OP_MOVSB 61 108 #define OP_MOVSWD 62 109 #define OP_CMPSB 63 110 #define OP_CMPWD 64 111 #define OP_STOSB 65 112 #define OP_STOSWD 66 113 #define OP_LODSB 67 114 #define OP_LODSWD 68 115 #define OP_SCASB 69 116 #define OP_SCASWD 70 117 #define OP_SHIFT_GRP2 71 118 #define OP_RETN 72 119 #define OP_LES 73 120 #define OP_LDS 74 121 #define OP_ENTER 75 122 #define OP_LEAVE 76 123 #define OP_RETF 77 124 #define OP_INT3 78 125 #define OP_INT 79 126 #define OP_INTO 80 127 #define OP_IRET 81 128 #define OP_AAM 82 129 #define OP_AAD 83 130 #define OP_XLAT 84 131 #define OP_ESCF0 85 132 #define OP_ESCF1 86 133 #define OP_ESCF2 87 134 #define OP_ESCF3 88 135 #define OP_ESCF4 89 136 #define OP_ESCF5 90 137 #define OP_ESCF6 91 138 #define OP_ESCF7 92 139 #define OP_LOOPNE 93 140 #define OP_LOOPE 94 141 #define OP_LOOP 95 142 #define OP_JECXZ 96 143 #define OP_IN 97 144 #define OP_OUT 98 145 #define OP_JMP 99 146 #define OP_2B_ESC 100 147 #define OP_ADC 101 148 #define OP_SBB 102 149 #define OP_HLT 103 150 #define OP_CMC 104 151 #define OP_UNARY_GRP3 105 152 #define OP_CLC 106 153 #define OP_STC 107 154 #define OP_CLI 108 155 #define OP_STI 109 156 #define OP_CLD 110 157 #define OP_STD 111 158 #define OP_INC_GRP4 112 159 #define OP_IND_GRP5 113 160 #define OP_GRP6 114 161 #define OP_GRP7 115 162 #define OP_LAR 116 163 #define OP_LSL 117 164 #define OP_SYSCALL 118 165 #define OP_CLTS 119 166 #define OP_SYSRET 120 167 #define OP_INVD 121 168 #define OP_WBINVD 122 169 #define OP_ILLUD2 123 170 #define OP_FEMMS 124 171 #define OP_3DNOW 125 172 #define OP_MOVUPS 126 173 #define OP_MOVLPS 127 174 #define OP_UNPCKLPS 128 175 #define OP_MOVHPS 129 176 #define OP_UNPCKHPS 130 177 #define OP_PREFETCH_GRP16 131 178 #define OP_MOV_CR 132 179 #define OP_MOVAPS 133 180 #define OP_CVTPI2PS 134 181 #define OP_MOVNTPS 135 182 #define OP_CVTTPS2PI 136 183 #define OP_CVTPS2PI 137 184 #define OP_UCOMISS 138 185 #define OP_COMISS 139 186 #define OP_WRMSR 140 187 #define OP_RDTSC 141 188 #define OP_RDMSR 142 189 #define OP_RPPMC 143 190 #define OP_SYSENTER 144 191 #define OP_SYSEXIT 145 192 #define OP_PAUSE 146 193 #define OP_CMOVO 147 194 #define OP_CMOVNO 148 195 #define OP_CMOVC 149 196 #define OP_CMOVNC 150 197 #define OP_CMOVZ 151 198 #define OP_CMOVNZ 152 199 #define OP_CMOVBE 153 200 #define OP_CMOVNBE 154 201 #define OP_CMOVS 155 202 #define OP_CMOVNS 156 203 #define OP_CMOVP 157 204 #define OP_CMOVNP 158 205 #define OP_CMOVL 159 206 #define OP_CMOVNL 160 207 #define OP_CMOVLE 161 208 #define OP_CMOVNLE 162 209 #define OP_MOVMSKPS 163 210 #define OP_SQRTPS 164 211 #define OP_RSQRTPS 165 212 #define OP_RCPPS 166 213 #define OP_ANDPS 167 214 #define OP_ANDNPS 168 215 #define OP_ORPS 169 216 #define OP_XORPS 170 217 #define OP_ADDPS 171 218 #define OP_MULPS 172 219 #define OP_CVTPS2PD 173 220 #define OP_CVTDQ2PS 174 221 #define OP_SUBPS 175 222 #define OP_MINPS 176 223 #define OP_DIVPS 177 224 #define OP_MAXPS 178 225 #define OP_PUNPCKLBW 179 226 #define OP_PUNPCKLWD 180 227 #define OP_PUNPCKLDQ 181 228 #define OP_PACKSSWB 182 229 #define OP_PCMPGTB 183 230 #define OP_PCMPGTW 184 231 #define OP_PCMPGTD 185 232 #define OP_PACKUSWB 186 233 #define OP_PUNPCKHBW 187 234 #define OP_PUNPCKHWD 188 235 #define OP_PUNPCKHDQ 189 236 #define OP_PACKSSDW 190 237 #define OP_MOVD 191 238 #define OP_MOVQ 192 239 #define OP_PSHUFW 193 241 240 242 241 #define OP_PCMPEQB 196 … … 597 596 #define OP_VMPTRST 659 598 597 599 600 /* 64 bits prefix bytes */ 601 #define OP_REX 0x40 602 #define OP_REX_B 0x41 603 #define OP_REX_X 0x42 604 #define OP_REX_XB 0x43 605 #define OP_REX_R 0x44 606 #define OP_REX_RB 0x45 607 #define OP_REX_RX 0x46 608 #define OP_REX_RXB 0x47 609 #define OP_REX_W 0x48 610 #define OP_REX_WB 0x49 611 #define OP_REX_WX 0x4A 612 #define OP_REX_WXB 0x4B 613 #define OP_REX_WR 0x4C 614 #define OP_REX_WRB 0x4D 615 #define OP_REX_WRX 0x4E 616 #define OP_REX_WRXB 0x4F 598 /* 64 bits instruction */ 599 #define OP_MOVSXD 700 617 600 618 601 /** @} */ … … 623 606 */ 624 607 /* NOTE: Register order is important for translations!! */ 625 #define OP_PARM_NONE 0626 #define OP_PARM_REG_EAX 1627 #define OP_PARM_REG_GEN32_START 628 #define OP_PARM_REG_ECX 2629 #define OP_PARM_REG_EDX 3630 #define OP_PARM_REG_EBX 4631 #define OP_PARM_REG_ESP 5632 #define OP_PARM_REG_EBP 6633 #define OP_PARM_REG_ESI 7634 #define OP_PARM_REG_EDI 8635 636 #define OP_PARM_REG_ES 9608 #define OP_PARM_NONE 0 609 #define OP_PARM_REG_EAX 1 610 #define OP_PARM_REG_GEN32_START OP_PARM_REG_EAX 611 #define OP_PARM_REG_ECX 2 612 #define OP_PARM_REG_EDX 3 613 #define OP_PARM_REG_EBX 4 614 #define OP_PARM_REG_ESP 5 615 #define OP_PARM_REG_EBP 6 616 #define OP_PARM_REG_ESI 7 617 #define OP_PARM_REG_EDI 8 618 619 #define OP_PARM_REG_ES 9 637 620 #define OP_PARM_REG_SEG_START OP_PARM_REG_ES 638 #define OP_PARM_REG_CS 10639 #define OP_PARM_REG_SS 11640 #define OP_PARM_REG_DS 12641 #define OP_PARM_REG_FS 13642 #define OP_PARM_REG_GS 14643 644 #define OP_PARM_REG_AX 15621 #define OP_PARM_REG_CS 10 622 #define OP_PARM_REG_SS 11 623 #define OP_PARM_REG_DS 12 624 #define OP_PARM_REG_FS 13 625 #define OP_PARM_REG_GS 14 626 627 #define OP_PARM_REG_AX 15 645 628 #define OP_PARM_REG_GEN16_START OP_PARM_REG_AX 646 #define OP_PARM_REG_CX 16 647 #define OP_PARM_REG_DX 17 648 #define OP_PARM_REG_BX 18 649 #define OP_PARM_REG_SP 19 650 #define OP_PARM_REG_BP 20 651 #define OP_PARM_REG_SI 21 652 #define OP_PARM_REG_DI 22 653 654 #define OP_PARM_REG_AL 23 655 #define OP_PARM_REG_GEN8_START OP_PARM_REG_AL 656 #define OP_PARM_REG_CL 24 657 #define OP_PARM_REG_DL 25 658 #define OP_PARM_REG_BL 26 659 #define OP_PARM_REG_AH 27 660 #define OP_PARM_REG_CH 28 661 #define OP_PARM_REG_DH 29 662 #define OP_PARM_REG_BH 30 663 664 #define OP_PARM_REGFP_0 31 665 #define OP_PARM_REG_FP_START OP_PARM_REGFP_0 666 #define OP_PARM_REGFP_1 32 667 #define OP_PARM_REGFP_2 33 668 #define OP_PARM_REGFP_3 34 669 #define OP_PARM_REGFP_4 35 670 #define OP_PARM_REGFP_5 36 671 #define OP_PARM_REGFP_6 37 672 #define OP_PARM_REGFP_7 38 673 674 #define OP_PARM_NTA 39 675 #define OP_PARM_T0 40 676 #define OP_PARM_T1 41 677 #define OP_PARM_T2 42 678 679 #define OP_PARM_1 43 680 681 #define OP_PARM_VTYPE(a) ((int)a & 0xFE0) 682 #define OP_PARM_VSUBTYPE(a) ((int)a & 0x01F) 683 684 #define OP_PARM_A 0x40 685 #define OP_PARM_VARIABLE OP_PARM_A 686 #define OP_PARM_E 0x60 687 #define OP_PARM_F 0x80 688 #define OP_PARM_G 0xA0 689 #define OP_PARM_I 0x100 690 #define OP_PARM_J 0x120 691 #define OP_PARM_M 0x140 692 #define OP_PARM_O 0x160 693 #define OP_PARM_Q 0x180 694 #define OP_PARM_R 0x1A0 695 #define OP_PARM_X 0x200 696 #define OP_PARM_Y 0x220 629 #define OP_PARM_REG_CX 16 630 #define OP_PARM_REG_DX 17 631 #define OP_PARM_REG_BX 18 632 #define OP_PARM_REG_SP 19 633 #define OP_PARM_REG_BP 20 634 #define OP_PARM_REG_SI 21 635 #define OP_PARM_REG_DI 22 636 637 #define OP_PARM_REG_AL 23 638 #define OP_PARM_REG_GEN8_START OP_PARM_REG_AL 639 #define OP_PARM_REG_CL 24 640 #define OP_PARM_REG_DL 25 641 #define OP_PARM_REG_BL 26 642 #define OP_PARM_REG_AH 27 643 #define OP_PARM_REG_CH 28 644 #define OP_PARM_REG_DH 29 645 #define OP_PARM_REG_BH 30 646 647 #define OP_PARM_REGFP_0 31 648 #define OP_PARM_REG_FP_START OP_PARM_REGFP_0 649 #define OP_PARM_REGFP_1 32 650 #define OP_PARM_REGFP_2 33 651 #define OP_PARM_REGFP_3 34 652 #define OP_PARM_REGFP_4 35 653 #define OP_PARM_REGFP_5 36 654 #define OP_PARM_REGFP_6 37 655 #define OP_PARM_REGFP_7 38 656 657 #define OP_PARM_NTA 39 658 #define OP_PARM_T0 40 659 #define OP_PARM_T1 41 660 #define OP_PARM_T2 42 661 662 #define OP_PARM_1 43 663 664 #define OP_PARM_REX 50 665 #define OP_PARM_REX_START OP_PARM_REX 666 #define OP_PARM_REX_B 51 667 #define OP_PARM_REX_X 52 668 #define OP_PARM_REX_XB 53 669 #define OP_PARM_REX_R 54 670 #define OP_PARM_REX_RB 55 671 #define OP_PARM_REX_RX 56 672 #define OP_PARM_REX_RXB 57 673 #define OP_PARM_REX_W 58 674 #define OP_PARM_REX_WB 59 675 #define OP_PARM_REX_WX 60 676 #define OP_PARM_REX_WXB 61 677 #define OP_PARM_REX_WR 62 678 #define OP_PARM_REX_WRB 63 679 #define OP_PARM_REX_WRX 64 680 #define OP_PARM_REX_WRXB 65 681 682 #define OP_PARM_REG_RAX 100 683 #define OP_PARM_REG_GEN64_START OP_PARM_REG_RAX 684 #define OP_PARM_REG_RCX 101 685 #define OP_PARM_REG_RDX 102 686 #define OP_PARM_REG_RBX 103 687 #define OP_PARM_REG_RSP 104 688 #define OP_PARM_REG_RBP 105 689 #define OP_PARM_REG_RSI 106 690 #define OP_PARM_REG_RDI 107 691 #define OP_PARM_REG_R8 108 692 #define OP_PARM_REG_R9 109 693 #define OP_PARM_REG_R10 110 694 #define OP_PARM_REG_R11 111 695 #define OP_PARM_REG_R12 112 696 #define OP_PARM_REG_R13 113 697 #define OP_PARM_REG_R14 114 698 #define OP_PARM_REG_R15 115 699 700 701 #define OP_PARM_VTYPE(a) ((int)a & 0xFE0) 702 #define OP_PARM_VSUBTYPE(a) ((int)a & 0x01F) 703 704 #define OP_PARM_A 0x100 705 #define OP_PARM_VARIABLE OP_PARM_A 706 #define OP_PARM_E 0x120 707 #define OP_PARM_F 0x140 708 #define OP_PARM_G 0x160 709 #define OP_PARM_I 0x180 710 #define OP_PARM_J 0x1A0 711 #define OP_PARM_M 0x1C0 712 #define OP_PARM_O 0x1E0 713 #define OP_PARM_Q 0x200 714 #define OP_PARM_R 0x220 715 #define OP_PARM_X 0x240 716 #define OP_PARM_Y 0x260 697 717 698 718 /* Grouped rare parameters for optimization purposes */ 699 #define IS_OP_PARM_RARE(a) ((a & 0xF00) == 0x300) 700 #define OP_PARM_C 0x300 /* control register */ 701 #define OP_PARM_D 0x320 /* debug register */ 702 #define OP_PARM_S 0x340 /* segment register */ 703 #define OP_PARM_T 0x360 /* test register */ 704 #define OP_PARM_P 0x380 /* mmx register */ 705 #define OP_PARM_W 0x3A0 /* xmm register */ 706 #define OP_PARM_V 0x3C0 707 708 #define OP_PARM_NONE 0 709 #define OP_PARM_a 0x1 710 #define OP_PARM_b 0x2 711 #define OP_PARM_d 0x3 712 #define OP_PARM_dq 0x4 713 #define OP_PARM_p 0x5 714 #define OP_PARM_pd 0x6 715 #define OP_PARM_pi 0x7 716 #define OP_PARM_ps 0x8 717 #define OP_PARM_pq 0x9 718 #define OP_PARM_q 0xA 719 #define OP_PARM_s 0xB 720 #define OP_PARM_sd 0xC 721 #define OP_PARM_ss 0xD 722 #define OP_PARM_v 0xE 723 #define OP_PARM_w 0xF 724 #define OP_PARM_z 0x10 725 726 727 #define OP_PARM_Ap (OP_PARM_A+OP_PARM_p) 728 #define OP_PARM_Cd (OP_PARM_C+OP_PARM_d) 729 #define OP_PARM_Dd (OP_PARM_D+OP_PARM_d) 730 #define OP_PARM_Eb (OP_PARM_E+OP_PARM_b) 731 #define OP_PARM_Ed (OP_PARM_E+OP_PARM_d) 732 #define OP_PARM_Ep (OP_PARM_E+OP_PARM_p) 733 #define OP_PARM_Ev (OP_PARM_E+OP_PARM_v) 734 #define OP_PARM_Ew (OP_PARM_E+OP_PARM_w) 735 #define OP_PARM_Fv (OP_PARM_F+OP_PARM_v) 736 #define OP_PARM_Gb (OP_PARM_G+OP_PARM_b) 737 #define OP_PARM_Gd (OP_PARM_G+OP_PARM_d) 738 #define OP_PARM_Gv (OP_PARM_G+OP_PARM_v) 739 #define OP_PARM_Gw (OP_PARM_G+OP_PARM_w) 740 #define OP_PARM_Ib (OP_PARM_I+OP_PARM_b) 741 #define OP_PARM_Id (OP_PARM_I+OP_PARM_d) 742 #define OP_PARM_Iq (OP_PARM_I+OP_PARM_q) 743 #define OP_PARM_Iw (OP_PARM_I+OP_PARM_w) 744 #define OP_PARM_Iv (OP_PARM_I+OP_PARM_v) 745 #define OP_PARM_Iz (OP_PARM_I+OP_PARM_z) 746 #define OP_PARM_Jb (OP_PARM_J+OP_PARM_b) 747 #define OP_PARM_Jv (OP_PARM_J+OP_PARM_v) 748 #define OP_PARM_Ma (OP_PARM_M+OP_PARM_a) 749 #define OP_PARM_Mb (OP_PARM_M+OP_PARM_b) 750 #define OP_PARM_Mw (OP_PARM_M+OP_PARM_w) 751 #define OP_PARM_Md (OP_PARM_M+OP_PARM_d) 752 #define OP_PARM_Mp (OP_PARM_M+OP_PARM_p) 753 #define OP_PARM_Mq (OP_PARM_M+OP_PARM_q) 754 #define OP_PARM_Ms (OP_PARM_M+OP_PARM_s) 755 #define OP_PARM_Ob (OP_PARM_O+OP_PARM_b) 756 #define OP_PARM_Ov (OP_PARM_O+OP_PARM_v) 757 #define OP_PARM_Pq (OP_PARM_P+OP_PARM_q) 758 #define OP_PARM_Pd (OP_PARM_P+OP_PARM_d) 759 #define OP_PARM_Qd (OP_PARM_Q+OP_PARM_d) 760 #define OP_PARM_Qq (OP_PARM_Q+OP_PARM_q) 761 #define OP_PARM_Rd (OP_PARM_R+OP_PARM_d) 762 #define OP_PARM_Rw (OP_PARM_R+OP_PARM_w) 763 #define OP_PARM_Sw (OP_PARM_S+OP_PARM_w) 764 #define OP_PARM_Td (OP_PARM_T+OP_PARM_d) 765 #define OP_PARM_Vq (OP_PARM_V+OP_PARM_q) 766 #define OP_PARM_Wq (OP_PARM_W+OP_PARM_q) 767 #define OP_PARM_Ws (OP_PARM_W+OP_PARM_s) 768 #define OP_PARM_Xb (OP_PARM_X+OP_PARM_b) 769 #define OP_PARM_Xv (OP_PARM_X+OP_PARM_v) 770 #define OP_PARM_Yb (OP_PARM_Y+OP_PARM_b) 771 #define OP_PARM_Yv (OP_PARM_Y+OP_PARM_v) 772 773 774 #define OP_PARM_Vps (OP_PARM_V+OP_PARM_ps) 775 #define OP_PARM_Vss (OP_PARM_V+OP_PARM_ss) 776 #define OP_PARM_Vpd (OP_PARM_V+OP_PARM_pd) 777 #define OP_PARM_Vdq (OP_PARM_V+OP_PARM_dq) 778 #define OP_PARM_Wps (OP_PARM_W+OP_PARM_ps) 779 #define OP_PARM_Wpd (OP_PARM_W+OP_PARM_pd) 780 #define OP_PARM_Wss (OP_PARM_W+OP_PARM_ss) 781 #define OP_PARM_Wdq (OP_PARM_W+OP_PARM_dq) 782 #define OP_PARM_Ppi (OP_PARM_P+OP_PARM_pi) 783 #define OP_PARM_Qpi (OP_PARM_Q+OP_PARM_pi) 784 #define OP_PARM_Qdq (OP_PARM_Q+OP_PARM_dq) 785 #define OP_PARM_Vsd (OP_PARM_V+OP_PARM_sd) 786 #define OP_PARM_Wsd (OP_PARM_W+OP_PARM_sd) 787 #define OP_PARM_Vpq (OP_PARM_V+OP_PARM_pq) 788 #define OP_PARM_Pdq (OP_PARM_P+OP_PARM_dq) 719 #define IS_OP_PARM_RARE(a) ((a & 0xF00) == 0x300) 720 #define OP_PARM_C 0x300 /* control register */ 721 #define OP_PARM_D 0x320 /* debug register */ 722 #define OP_PARM_S 0x340 /* segment register */ 723 #define OP_PARM_T 0x360 /* test register */ 724 #define OP_PARM_P 0x380 /* mmx register */ 725 #define OP_PARM_W 0x3A0 /* xmm register */ 726 #define OP_PARM_V 0x3C0 727 728 #define OP_PARM_NONE 0 729 #define OP_PARM_a 0x1 730 #define OP_PARM_b 0x2 731 #define OP_PARM_d 0x3 732 #define OP_PARM_dq 0x4 733 #define OP_PARM_p 0x5 734 #define OP_PARM_pd 0x6 735 #define OP_PARM_pi 0x7 736 #define OP_PARM_ps 0x8 737 #define OP_PARM_pq 0x9 738 #define OP_PARM_q 0xA 739 #define OP_PARM_s 0xB 740 #define OP_PARM_sd 0xC 741 #define OP_PARM_ss 0xD 742 #define OP_PARM_v 0xE 743 #define OP_PARM_w 0xF 744 #define OP_PARM_z 0x10 745 746 747 #define OP_PARM_Ap (OP_PARM_A+OP_PARM_p) 748 #define OP_PARM_Cd (OP_PARM_C+OP_PARM_d) 749 #define OP_PARM_Dd (OP_PARM_D+OP_PARM_d) 750 #define OP_PARM_Eb (OP_PARM_E+OP_PARM_b) 751 #define OP_PARM_Ed (OP_PARM_E+OP_PARM_d) 752 #define OP_PARM_Ep (OP_PARM_E+OP_PARM_p) 753 #define OP_PARM_Ev (OP_PARM_E+OP_PARM_v) 754 #define OP_PARM_Ew (OP_PARM_E+OP_PARM_w) 755 #define OP_PARM_Fv (OP_PARM_F+OP_PARM_v) 756 #define OP_PARM_Gb (OP_PARM_G+OP_PARM_b) 757 #define OP_PARM_Gd (OP_PARM_G+OP_PARM_d) 758 #define OP_PARM_Gv (OP_PARM_G+OP_PARM_v) 759 #define OP_PARM_Gw (OP_PARM_G+OP_PARM_w) 760 #define OP_PARM_Ib (OP_PARM_I+OP_PARM_b) 761 #define OP_PARM_Id (OP_PARM_I+OP_PARM_d) 762 #define OP_PARM_Iq (OP_PARM_I+OP_PARM_q) 763 #define OP_PARM_Iw (OP_PARM_I+OP_PARM_w) 764 #define OP_PARM_Iv (OP_PARM_I+OP_PARM_v) 765 #define OP_PARM_Iz (OP_PARM_I+OP_PARM_z) 766 #define OP_PARM_Jb (OP_PARM_J+OP_PARM_b) 767 #define OP_PARM_Jv (OP_PARM_J+OP_PARM_v) 768 #define OP_PARM_Ma (OP_PARM_M+OP_PARM_a) 769 #define OP_PARM_Mb (OP_PARM_M+OP_PARM_b) 770 #define OP_PARM_Mw (OP_PARM_M+OP_PARM_w) 771 #define OP_PARM_Md (OP_PARM_M+OP_PARM_d) 772 #define OP_PARM_Mp (OP_PARM_M+OP_PARM_p) 773 #define OP_PARM_Mq (OP_PARM_M+OP_PARM_q) 774 #define OP_PARM_Ms (OP_PARM_M+OP_PARM_s) 775 #define OP_PARM_Ob (OP_PARM_O+OP_PARM_b) 776 #define OP_PARM_Ov (OP_PARM_O+OP_PARM_v) 777 #define OP_PARM_Pq (OP_PARM_P+OP_PARM_q) 778 #define OP_PARM_Pd (OP_PARM_P+OP_PARM_d) 779 #define OP_PARM_Qd (OP_PARM_Q+OP_PARM_d) 780 #define OP_PARM_Qq (OP_PARM_Q+OP_PARM_q) 781 #define OP_PARM_Rd (OP_PARM_R+OP_PARM_d) 782 #define OP_PARM_Rw (OP_PARM_R+OP_PARM_w) 783 #define OP_PARM_Sw (OP_PARM_S+OP_PARM_w) 784 #define OP_PARM_Td (OP_PARM_T+OP_PARM_d) 785 #define OP_PARM_Vq (OP_PARM_V+OP_PARM_q) 786 #define OP_PARM_Wq (OP_PARM_W+OP_PARM_q) 787 #define OP_PARM_Ws (OP_PARM_W+OP_PARM_s) 788 #define OP_PARM_Xb (OP_PARM_X+OP_PARM_b) 789 #define OP_PARM_Xv (OP_PARM_X+OP_PARM_v) 790 #define OP_PARM_Yb (OP_PARM_Y+OP_PARM_b) 791 #define OP_PARM_Yv (OP_PARM_Y+OP_PARM_v) 792 793 #define OP_PARM_Vps (OP_PARM_V+OP_PARM_ps) 794 #define OP_PARM_Vss (OP_PARM_V+OP_PARM_ss) 795 #define OP_PARM_Vpd (OP_PARM_V+OP_PARM_pd) 796 #define OP_PARM_Vdq (OP_PARM_V+OP_PARM_dq) 797 #define OP_PARM_Wps (OP_PARM_W+OP_PARM_ps) 798 #define OP_PARM_Wpd (OP_PARM_W+OP_PARM_pd) 799 #define OP_PARM_Wss (OP_PARM_W+OP_PARM_ss) 800 #define OP_PARM_Wdq (OP_PARM_W+OP_PARM_dq) 801 #define OP_PARM_Ppi (OP_PARM_P+OP_PARM_pi) 802 #define OP_PARM_Qpi (OP_PARM_Q+OP_PARM_pi) 803 #define OP_PARM_Qdq (OP_PARM_Q+OP_PARM_dq) 804 #define OP_PARM_Vsd (OP_PARM_V+OP_PARM_sd) 805 #define OP_PARM_Wsd (OP_PARM_W+OP_PARM_sd) 806 #define OP_PARM_Vpq (OP_PARM_V+OP_PARM_pq) 807 #define OP_PARM_Pdq (OP_PARM_P+OP_PARM_dq) 789 808 790 809 /** @} */ -
trunk/src/VBox/Disassembler/Disasm.cpp
r8155 r8299 219 219 prefixbytes += sizeof(uint8_t); 220 220 continue; //fetch the next byte 221 222 case OP_REX: 223 Assert(pCpu->mode == CPUMODE_64BIT); 224 /* REX prefix byte */ 225 pCpu->prefix |= PREFIX_REX; 226 pCpu->prefix_rex = PREFIX_REX_OP_2_FLAGS(opcode); 227 break; 221 228 } 222 229 } … … 229 236 pCpu->opaddr = pu8Instruction + idx + u32EipOffset - prefixbytes; 230 237 231 inc = ParseInstruction(pu8Instruction + i, &g_aOneByteMapX86[pCpu->opcode], pCpu); 238 if (pCpu->mode == CPUMODE_64BIT) 239 inc = ParseInstruction(pu8Instruction + i, &g_aOneByteMapX64[pCpu->opcode], pCpu); 240 else 241 inc = ParseInstruction(pu8Instruction + i, &g_aOneByteMapX86[pCpu->opcode], pCpu); 232 242 233 243 pCpu->opsize = prefixbytes + inc + sizeof(uint8_t); -
trunk/src/VBox/Disassembler/DisasmCore.cpp
r8234 r8299 258 258 * Parse byte by byte. 259 259 */ 260 unsigned iByte = 0; 260 unsigned iByte = 0; 261 unsigned cbInc; 261 262 262 263 while(1) … … 318 319 continue; //fetch the next byte 319 320 320 default: 321 if ( pCpu->mode == CPUMODE_64BIT 322 && opcode >= OP_REX 323 && opcode <= OP_REX_WRXB) 324 { 325 /* REX prefix byte */ 326 pCpu->prefix |= PREFIX_REX; 327 pCpu->prefix_rex = PREFIX_REX_OP_2_FLAGS(opcode); 328 } 321 case OP_REX: 322 Assert(pCpu->mode == CPUMODE_64BIT); 323 /* REX prefix byte */ 324 pCpu->prefix |= PREFIX_REX; 325 pCpu->prefix_rex = PREFIX_REX_OP_2_FLAGS(opcode); 329 326 break; 330 327 } … … 337 334 pCpu->opcode = codebyte; 338 335 339 int cbInc = ParseInstruction(InstructionAddr + iByte, &g_aOneByteMapX86[pCpu->opcode], pCpu); 336 if (pCpu->mode == CPUMODE_64BIT) 337 cbInc = ParseInstruction(InstructionAddr + iByte, &g_aOneByteMapX64[pCpu->opcode], pCpu); 338 else 339 cbInc = ParseInstruction(InstructionAddr + iByte, &g_aOneByteMapX86[pCpu->opcode], pCpu); 340 340 341 341 iByte += cbInc; -
trunk/src/VBox/Disassembler/DisasmTables.cpp
r8155 r8299 54 54 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 55 55 56 char SZINVALID_OPCODE[] = "Invalid Opcode";56 static char SZINVALID_OPCODE[] = "Invalid Opcode"; 57 57 58 58 #define INVALID_OPCODE \ … … 309 309 OP("les %Gv,%Mp", IDX_ParseModRM, IDX_UseModRM, 0, OP_LES, OP_PARM_Gv, OP_PARM_Mp, OP_PARM_NONE, OPTYPE_HARMLESS | OPTYPE_INVALID_64), 310 310 OP("lds %Gv,%Mp", IDX_ParseModRM, IDX_UseModRM, 0, OP_LDS, OP_PARM_Gv, OP_PARM_Mp, OP_PARM_NONE, OPTYPE_HARMLESS | OPTYPE_RRM_DANGEROUS | OPTYPE_INVALID_64), 311 /* @todo these two are groups */ 311 312 OP("mov %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_Eb, OP_PARM_Ib, OP_PARM_NONE, OPTYPE_HARMLESS), 312 313 OP("mov %Ev,%Iv", IDX_ParseModRM, IDX_ParseImmV, 0, OP_MOV, OP_PARM_Ev, OP_PARM_Iv, OP_PARM_NONE, OPTYPE_HARMLESS), … … 388 389 OP("lsl %Gv,%Ew", IDX_ParseModRM, IDX_UseModRM, 0, OP_LSL, OP_PARM_Gv, OP_PARM_Ew, OP_PARM_NONE, OPTYPE_DANGEROUS | OPTYPE_PRIVILEGED_NOTRAP), 389 390 INVALID_OPCODE, 390 OP("syscall", 0, 0, 0, OP_SYSCALL, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW ),391 OP("syscall", 0, 0, 0, OP_SYSCALL, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW | OPTYPE_ONLY_64), 391 392 OP("clts", 0, 0, 0, OP_CLTS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_PRIVILEGED), 392 OP("sysret", 0, 0, 0, OP_SYSRET, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW ),393 OP("sysret", 0, 0, 0, OP_SYSRET, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW | OPTYPE_ONLY_64), 393 394 OP("invd", 0, 0, 0, OP_INVD, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_PRIVILEGED), 394 395 OP("wbinvd", 0, 0, 0, OP_WBINVD, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_PRIVILEGED), … … 534 535 535 536 /* 8 */ 536 OP("jo %Jv", IDX_ParseImmVRel, 0, 0, OP_JO, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),537 OP("jno %Jv", IDX_ParseImmVRel, 0, 0, OP_JNO, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),538 OP("jc %Jv", IDX_ParseImmVRel, 0, 0, OP_JC, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),539 OP("jnc %Jv", IDX_ParseImmVRel, 0, 0, OP_JNC, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),540 OP("je %Jv", IDX_ParseImmVRel, 0, 0, OP_JE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),541 OP("jne %Jv", IDX_ParseImmVRel, 0, 0, OP_JNE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),542 OP("jbe %Jv", IDX_ParseImmVRel, 0, 0, OP_JBE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),543 OP("jnbe %Jv", IDX_ParseImmVRel, 0, 0, OP_JNBE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),544 OP("js %Jv", IDX_ParseImmVRel, 0, 0, OP_JS, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),545 OP("jns %Jv", IDX_ParseImmVRel, 0, 0, OP_JNS, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),546 OP("jp %Jv", IDX_ParseImmVRel, 0, 0, OP_JP, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),547 OP("jnp %Jv", IDX_ParseImmVRel, 0, 0, OP_JNP, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),548 OP("jl %Jv", IDX_ParseImmVRel, 0, 0, OP_JL, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),549 OP("jnl %Jv", IDX_ParseImmVRel, 0, 0, OP_JNL, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),550 OP("jle %Jv", IDX_ParseImmVRel, 0, 0, OP_JLE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),551 OP("jnle %Jv", IDX_ParseImmVRel, 0, 0, OP_JNLE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW ),537 OP("jo %Jv", IDX_ParseImmVRel, 0, 0, OP_JO, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 538 OP("jno %Jv", IDX_ParseImmVRel, 0, 0, OP_JNO, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 539 OP("jc %Jv", IDX_ParseImmVRel, 0, 0, OP_JC, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 540 OP("jnc %Jv", IDX_ParseImmVRel, 0, 0, OP_JNC, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 541 OP("je %Jv", IDX_ParseImmVRel, 0, 0, OP_JE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 542 OP("jne %Jv", IDX_ParseImmVRel, 0, 0, OP_JNE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 543 OP("jbe %Jv", IDX_ParseImmVRel, 0, 0, OP_JBE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 544 OP("jnbe %Jv", IDX_ParseImmVRel, 0, 0, OP_JNBE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 545 OP("js %Jv", IDX_ParseImmVRel, 0, 0, OP_JS, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 546 OP("jns %Jv", IDX_ParseImmVRel, 0, 0, OP_JNS, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 547 OP("jp %Jv", IDX_ParseImmVRel, 0, 0, OP_JP, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 548 OP("jnp %Jv", IDX_ParseImmVRel, 0, 0, OP_JNP, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 549 OP("jl %Jv", IDX_ParseImmVRel, 0, 0, OP_JL, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 550 OP("jnl %Jv", IDX_ParseImmVRel, 0, 0, OP_JNL, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 551 OP("jle %Jv", IDX_ParseImmVRel, 0, 0, OP_JLE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 552 OP("jnle %Jv", IDX_ParseImmVRel, 0, 0, OP_JNLE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE), 552 553 553 554 /* 9 */ … … 570 571 571 572 /* a */ 572 OP("push fs", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_FS, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS),573 OP("pop fs", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_FS, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS),574 OP("cpuid", 0, 0, 0, OP_CPUID, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_POTENTIALLY_DANGEROUS),573 OP("push fs", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_FS, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE), 574 OP("pop fs", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_FS, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE), 575 OP("cpuid", 0, 0, 0, OP_CPUID, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_POTENTIALLY_DANGEROUS), 575 576 OP("bt %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_BT, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, OPTYPE_HARMLESS), 576 577 OP("shld %Ev,%Gv,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_SHLD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_Ib, OPTYPE_HARMLESS), 577 OP("shld %Ev,%Gv,CL", IDX_ParseModRM, IDX_UseModRM, 0, OP_SHLD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_Ib, OPTYPE_HARMLESS),578 INVALID_OPCODE, 579 INVALID_OPCODE, 580 OP("push gs", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_GS, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS),581 OP("pop gs", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_GS, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS),582 OP("rsm", 0, 0,0, OP_RSM, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS),578 OP("shld %Ev,%Gv,CL", IDX_ParseModRM, IDX_UseModRM, 0, OP_SHLD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_Ib, OPTYPE_HARMLESS), 579 INVALID_OPCODE, 580 INVALID_OPCODE, 581 OP("push gs", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_GS, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE), 582 OP("pop gs", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_GS, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE), 583 OP("rsm", 0, 0, 0, OP_RSM, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS), 583 584 OP("bts %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_BTS, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, OPTYPE_HARMLESS), 584 585 OP("shrd %Ev,%Gv,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_SHRD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_Ib, OPTYPE_HARMLESS), 585 586 OP("shrd %Ev,%Gv,CL", IDX_ParseModRM, IDX_UseModRM, IDX_ParseFixedReg,OP_SHRD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_REG_CL, OPTYPE_HARMLESS), 586 OP("Grp15", IDX_ParseGrp15, 0, 0, OP_GRP15, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS),587 OP("Grp15", IDX_ParseGrp15, 0, 0, OP_GRP15, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS), 587 588 OP("imul %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_IMUL, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, OPTYPE_HARMLESS), 588 589 … … 597 598 OP("movzx %Gv,%Ew", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVZX, OP_PARM_Gv, OP_PARM_Ew, OP_PARM_NONE, OPTYPE_HARMLESS), 598 599 INVALID_OPCODE, 599 OP("Grp10 Invalid Op", IDX_ParseGrp10, 0, 0, OP_GRP10_INV,OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS),600 OP("Grp8", IDX_ParseGrp8, 0, 0, OP_GRP8, OP_PARM_Ev, OP_PARM_Ib, OP_PARM_NONE, OPTYPE_HARMLESS),600 OP("Grp10 Invalid Op", IDX_ParseGrp10, 0, 0, OP_GRP10_INV,OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS), 601 OP("Grp8", IDX_ParseGrp8, 0, 0, OP_GRP8, OP_PARM_Ev, OP_PARM_Ib, OP_PARM_NONE, OPTYPE_HARMLESS), 601 602 OP("btc %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_BTC, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, OPTYPE_HARMLESS), 602 603 OP("bsf %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_BSF, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, OPTYPE_HARMLESS), … … 2181 2182 OP("inc %Ev", IDX_ParseModRM, 0, 0, OP_INC, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS), 2182 2183 OP("dec %Ev", IDX_ParseModRM, 0, 0, OP_DEC, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS), 2183 OP("call %Ev", IDX_ParseModRM, 0, 0, OP_CALL, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW ),2184 OP("call %Ev", IDX_ParseModRM, 0, 0, OP_CALL, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE), 2184 2185 OP("call %Ep", IDX_ParseModRM, 0, 0, OP_CALL, OP_PARM_Ep, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW), 2185 OP("jmp %Ev", IDX_ParseModRM, 0, 0, OP_JMP, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW ),2186 OP("jmp %Ev", IDX_ParseModRM, 0, 0, OP_JMP, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE), 2186 2187 OP("jmp %Ep", IDX_ParseModRM, 0, 0, OP_JMP, OP_PARM_Ep, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW), 2187 OP("push %Ev", IDX_ParseModRM, 0, 0, OP_PUSH, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS ),2188 OP("push %Ev", IDX_ParseModRM, 0, 0, OP_PUSH, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE), 2188 2189 INVALID_OPCODE, 2189 2190 }; -
trunk/src/VBox/Disassembler/DisasmTables.h
r8155 r8299 27 27 28 28 extern const OPCODE g_aOneByteMapX86[256]; 29 extern const OPCODE g_aOneByteMapX64[256]; 29 30 extern const OPCODE g_aTwoByteMapX86[256]; 30 31 -
trunk/src/VBox/Disassembler/Makefile.kmk
r8155 r8299 35 35 endif 36 36 endif 37 DisasmR3_SOURCES = Disasm.cpp DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp 37 DisasmR3_SOURCES = Disasm.cpp DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp DisasmTablesX64.cpp 38 38 DisasmR3_DEFS = IN_DIS_R3 39 39 40 40 DisasmCoreR3_TEMPLATE = VBOXR3 41 DisasmCoreR3_SOURCES = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp 41 DisasmCoreR3_SOURCES = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp DisasmTablesX64.cpp 42 42 DisasmCoreR3_DEFS = IN_DIS_R3 DIS_CORE_ONLY 43 43 44 44 DisasmGC_TEMPLATE = VBOXGC 45 DisasmGC_SOURCES = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp 45 DisasmGC_SOURCES = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp DisasmTablesX64.cpp 46 46 DisasmGC_DEFS = IN_DIS_GC IN_RT_GC DIS_CORE_ONLY 47 47 48 48 DisasmR0_TEMPLATE = VBOXR0 49 DisasmR0_SOURCES = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp 49 DisasmR0_SOURCES = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp DisasmTablesX64.cpp 50 50 DisasmR0_DEFS = IN_DIS_R0 IN_RT_R0 DIS_CORE_ONLY 51 51
Note:
See TracChangeset
for help on using the changeset viewer.