VirtualBox

Changeset 8299

Show
Ignore:
Timestamp:
04/22/08 17:17:50 (9 months ago)
Author:
vboxsync
Message:

Updates for disassembling 64 bits instructions

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/include/VBox/dis.h

    r8234 r8299  
    6060#define PREFIX_NONE                     0 
    6161/** non-default address size. */ 
    62 #define PREFIX_ADDRSIZE                 1 
     62#define PREFIX_ADDRSIZE                 RT_BIT(0) 
    6363/** non-default operand size. */ 
    64 #define PREFIX_OPSIZE                   2 
     64#define PREFIX_OPSIZE                   RT_BIT(1) 
    6565/** lock prefix. */ 
    66 #define PREFIX_LOCK                     4 
     66#define PREFIX_LOCK                     RT_BIT(2) 
    6767/** segment prefix. */ 
    68 #define PREFIX_SEG                      8 
     68#define PREFIX_SEG                      RT_BIT(3) 
    6969/** rep(e) prefix (not a prefix, but we'll treat is as one). */ 
    70 #define PREFIX_REP                      16 
     70#define PREFIX_REP                      RT_BIT(4) 
    7171/** rep(e) prefix (not a prefix, but we'll treat is as one). */ 
    72 #define PREFIX_REPNE                    32 
     72#define PREFIX_REPNE                    RT_BIT(5) 
    7373/** REX prefix (64 bits) */ 
    74 #define PREFIX_REX                      64 
     74#define PREFIX_REX                      RT_BIT(6) 
    7575/** @} */ 
    7676 
     
    7878 * @{ 
    7979 */ 
    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) 
    9797/** @} */ 
    9898 
  • trunk/include/VBox/disopcode.h

    r8155 r8299  
    5050#define OP_REPNE        4 
    5151#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 
    241240 
    242241#define OP_PCMPEQB      196 
     
    597596#define OP_VMPTRST      659 
    598597 
    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 
    617600 
    618601/** @} */ 
     
    623606 */ 
    624607/* NOTE: Register order is important for translations!! */ 
    625 #define OP_PARM_NONE   
    626 #define OP_PARM_REG_EAX
    627 #define OP_PARM_REG_GEN32_START   OP_PARM_REG_EAX 
    628 #define OP_PARM_REG_ECX
    629 #define OP_PARM_REG_EDX
    630 #define OP_PARM_REG_EBX
    631 #define OP_PARM_REG_ESP
    632 #define OP_PARM_REG_EBP
    633 #define OP_PARM_REG_ESI
    634 #define OP_PARM_REG_EDI
    635  
    636 #define OP_PARM_REG_ES 
     608#define OP_PARM_NONE           
     609#define OP_PARM_REG_EAX        
     610#define OP_PARM_REG_GEN32_START OP_PARM_REG_EAX 
     611#define OP_PARM_REG_ECX        
     612#define OP_PARM_REG_EDX        
     613#define OP_PARM_REG_EBX        
     614#define OP_PARM_REG_ESP        
     615#define OP_PARM_REG_EBP        
     616#define OP_PARM_REG_ESI        
     617#define OP_PARM_REG_EDI        
     618 
     619#define OP_PARM_REG_ES         
    637620#define OP_PARM_REG_SEG_START   OP_PARM_REG_ES 
    638 #define OP_PARM_REG_CS  10 
    639 #define OP_PARM_REG_SS  11 
    640 #define OP_PARM_REG_DS  12 
    641 #define OP_PARM_REG_FS  13 
    642 #define OP_PARM_REG_GS  14 
    643  
    644 #define OP_PARM_REG_AX  15 
     621#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 
    645628#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 
    697717 
    698718/* 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) 
    789808 
    790809/** @} */ 
  • trunk/src/VBox/Disassembler/Disasm.cpp

    r8155 r8299  
    219219                    prefixbytes += sizeof(uint8_t); 
    220220                    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; 
    221228                } 
    222229            } 
     
    229236            pCpu->opaddr = pu8Instruction + idx + u32EipOffset - prefixbytes; 
    230237 
    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); 
    232242 
    233243            pCpu->opsize = prefixbytes + inc + sizeof(uint8_t); 
  • trunk/src/VBox/Disassembler/DisasmCore.cpp

    r8234 r8299  
    258258     * Parse byte by byte. 
    259259     */ 
    260     unsigned      iByte          = 0; 
     260    unsigned  iByte = 0; 
     261    unsigned  cbInc; 
    261262 
    262263    while(1) 
     
    318319                continue;   //fetch the next byte 
    319320 
    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); 
    329326                break; 
    330327            } 
     
    337334        pCpu->opcode = codebyte; 
    338335 
    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); 
    340340 
    341341        iByte += cbInc; 
  • trunk/src/VBox/Disassembler/DisasmTables.cpp

    r8155 r8299  
    5454//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    5555 
    56 char SZINVALID_OPCODE[] = "Invalid Opcode"; 
     56static char SZINVALID_OPCODE[] = "Invalid Opcode"; 
    5757 
    5858#define INVALID_OPCODE  \ 
     
    309309    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), 
    310310    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 */ 
    311312    OP("mov %Eb,%Ib",        IDX_ParseModRM,     IDX_ParseImmByte,  0,          OP_MOV,         OP_PARM_Eb,      OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS), 
    312313    OP("mov %Ev,%Iv",        IDX_ParseModRM,     IDX_ParseImmV,     0,          OP_MOV,         OP_PARM_Ev,      OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS), 
     
    388389    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), 
    389390    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), 
    391392    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), 
    393394    OP("invd",               0,                 0,              0,          OP_INVD,            OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_PRIVILEGED), 
    394395    OP("wbinvd",             0,                 0,              0,          OP_WBINVD,          OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_PRIVILEGED), 
     
    534535 
    535536    /* 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,      &nb