#include "x86instr.h"Go to the source code of this file.
Compounds | |
| struct | inst_3DNow |
| struct | inst_f3Xmm |
Defines | |
| #define | F3XMM(n) f3Xmm_instr[f3Xmm_offsets[n]] |
| #define | DEFINE_FPI(istr, type) ((istr<<8)|type) |
| #define | FPI_ISTR(i) (i>>8) |
| #define | FPI_TYPE(i) (i&255) |
| #define | DEFINE_FPIM3(istr, param) DEFINE_FPI(istr,param) |
| #define | FPIM3_ISTR(i) FPI_ISTR(i) |
| #define | FPIM3_PARAM(i) FPI_TYPE(i) |
Typedefs | |
| typedef inst_3DNow | INST_3DNOW |
| typedef inst_f3Xmm | INST_F3XMM |
Enumerations | |
| enum | Regs { regNone = 0, regAL, regCL, regDL, regBL, regAH, regCH, regDH, regBH, regAX, regCX, regDX, regBX, regSP, regBP, regSI, regDI, regES, regCS, regSS, regDS, regFS, regGS } |
| enum | Modreg { modregSize = 7, modregByte = 0, modregVar = 1, modregDword = 2, modregMmx = 3, modregXmm = 4, modregMemStartBit = 3, modregMemType = 15<<modregMemStartBit, modregMemByte = 1<<modregMemStartBit, modregMemWord = 2<<modregMemStartBit, modregMemDword = 3<<modregMemStartBit, modregMemQword = 4<<modregMemStartBit, modregMemPacketDword = 5<<modregMemStartBit, modregMemPointer = 6<<modregMemStartBit, modregMemBound = 7<<modregMemStartBit, modregMemDescriptor = 8<<modregMemStartBit, modregMemNone = 9<<modregMemStartBit, modregMemPacket = 10<<modregMemStartBit, modregMemFPacket = 11<<modregMemStartBit, modregMem2FPacket = 12<<modregMemStartBit, modregMem4FPacket = 13<<modregMemStartBit, modregTypeStartBit = 7, modregType = 3<<modregTypeStartBit, modregMemReg = 0<<modregTypeStartBit, modregRegMem = 1<<modregTypeStartBit, modregMem = 2<<modregTypeStartBit, modregReg = 3<<modregTypeStartBit, modregThirdStartBit = 9, modregThird = 7<<modregThirdStartBit, modregIsb = 1<<modregThirdStartBit, modregIub = 2<<modregThirdStartBit, modregIv = 3<<modregThirdStartBit, modreg1 = 4<<modregThirdStartBit, modregCL = 5<<modregThirdStartBit, modregEbGb = modregByte|modregMemReg, modregEvGv = modregVar |modregMemReg, modregGbEb = modregByte|modregRegMem, modregGvEv = modregVar |modregRegMem, modregEwSw = modregVar |modregMemReg|modregMemWord, modregSwEw = modregVar |modregRegMem|modregMemWord, modregEv = modregVar |modregMem, modregEb1 = modregByte|modregMem|modreg1, modregEv1 = modregVar |modregMem|modreg1, modregEbCL = modregByte|modregMem|modregCL, modregEvCL = modregVar |modregMem|modregCL, modregGvMa = modregVar |modregRegMem|modregMemBound, modregGvMp = modregVar |modregRegMem|modregMemPointer, modregEbIsb = modregByte|modregMem|modregIsb, modregEbIub = modregByte|modregMem|modregIub, modregEvIv = modregVar |modregMem|modregIv, modregGvEvIv = modregVar |modregRegMem|modregIv, modregGvEvIsb = modregVar |modregRegMem|modregIsb, modregGvEvIub = modregVar |modregRegMem|modregIub, modregEb = modregByte|modregMem, modregGvEb = modregVar |modregRegMem|modregMemByte, modregGvEw = modregVar |modregRegMem|modregMemWord, modregEvGvIsb = modregVar |modregMemReg|modregIsb, modregEvGvIub = modregVar |modregMemReg|modregIub, modregEvGvCL = modregVar |modregMemReg|modregCL, modregEvIsb = modregVar |modregMem|modregIsb, modregEvIub = modregVar |modregMem|modregIub, modregEp = modregMem|modregMemPointer, modregEw = modregMem|modregMemWord, modregMs = modregMem|modregMemDescriptor, modregMn = modregMem|modregMemNone, modregMq = modregMem|modregMemQword, modregGvMn = modregVar |modregRegMem|modregMemNone, modregPqQd = modregRegMem|modregMmx|modregMemPacketDword, modregPqQq = modregRegMem|modregMmx, modregPqQqIub = modregPqQq|modregIub, modregQqPq = modregMemReg|modregMmx, modregPqIsb = modregReg|modregMmx|modregIsb, modregPqIub = modregReg|modregMmx|modregIub, modregPdEd = modregRegMem|modregMmx|modregMemDword, modregEdPd = modregMemReg|modregMmx|modregMemDword, modregPqEdIub = modregPdEd|modregIub, modregPqEwIub = modregRegMem|modregMmx|modregMemWord|modregIub, modregGdQq = modregRegMem|modregDword|modregMemPacket, modregGdQqIub = modregGdQq|modregIub, modregWpsVps = modregMemReg|modregXmm, modregVpsWps = modregRegMem|modregXmm, modregVpsWpsIub = modregRegMem|modregXmm|modregIub, modregVpsQq = modregRegMem|modregXmm|modregMemPacket, modregPqWq = modregRegMem|modregMmx|modregMem2FPacket, modregVqWq = modregRegMem|modregXmm|modregMem2FPacket, modregWqVq = modregMemReg|modregXmm|modregMem2FPacket, modregVssWss = modregRegMem|modregXmm|modregMemFPacket, modregVssWssIub = modregRegMem|modregXmm|modregMemFPacket|modregIub, modregVssEd = modregRegMem|modregXmm|modregMemDword, modregGdWss = modregRegMem|modregDword|modregMem4FPacket, modregWssVss = modregMemReg|modregXmm|modregMemFPacket, modregEdVps = modregMemReg|modregXmm|modregMemDword } |
| enum | Movcregs { movcregR32CRx = 0, movcregCRxr32 = 1, movcregR32DRx = 2, movcregDRxr32 = 3, movcregR32TRx = 4, movcregTRxr32 = 5 } |
| enum | FpiTypes { fpiTypeWInt = 0, fpiTypeSInt, fpiTypeLInt, fpiTypeSingle, fpiTypeDouble, fpiTypeExtended, fpiTypeBCD, fpiTypeWord, fpiTypeEnv, fpiTypeStatus, fpiTypeCount, fpiTypeImplicitMemory = fpiTypeEnv } |
| enum | FpiParams { fpiParamNone, fpiParamStNSt, fpiParamStN, fpiParamStStN } |
Variables | |
| INST_3DNOW | k6_3DNow_instr [] |
| INST_F3XMM | f3Xmm_instr [] |
| uchar | f3Xmm_offsets [] |
| int | esc_inst [] |
| int | esc_inst_mod3 [] |
| int | esc_inst_special [][8] |
|
|
Definition at line 211 of file x86table.h. |
|
|
Definition at line 224 of file x86table.h. |
|
|
Definition at line 209 of file x86table.h. |
|
|
Definition at line 212 of file x86table.h. |
|
|
Definition at line 213 of file x86table.h. |
|
|
Definition at line 225 of file x86table.h. |
|
|
Definition at line 226 of file x86table.h. |
|
|
Definition at line 30 of file x86table.h. |
|
|
Definition at line 36 of file x86table.h. |
|
|
Definition at line 227 of file x86table.h.
00228 {
00229 fpiParamNone,fpiParamStNSt,fpiParamStN,fpiParamStStN
00230 };
|
|
|
Definition at line 214 of file x86table.h.
00215 {
00216 fpiTypeWInt=0,fpiTypeSInt,fpiTypeLInt, // interi
00217 fpiTypeSingle,fpiTypeDouble,fpiTypeExtended,fpiTypeBCD, // float
00218 fpiTypeWord,fpiTypeEnv,fpiTypeStatus, // altri
00219 fpiTypeCount,
00220 fpiTypeImplicitMemory = fpiTypeEnv
00221 };
|
|
|
Definition at line 69 of file x86table.h.
00070 {
00071 // flag per MOD_REG operands
00072 // bits 2-0 size of registry or memory (if not specified)
00073 modregSize =7,
00074 modregByte =0,
00075 modregVar =1,
00076 modregDword =2,
00077 modregMmx =3,
00078 // !!! warning: conflict with some memory type, not use now !!!
00079 modregXmm =4,
00080
00081 // bits 6-3 puntatori vari e tipo (solo per mem)
00082 modregMemStartBit =3,
00083 modregMemType =15<<modregMemStartBit,
00084 modregMemByte =1<<modregMemStartBit,
00085 modregMemWord =2<<modregMemStartBit,
00086 modregMemDword =3<<modregMemStartBit,
00087 modregMemQword =4<<modregMemStartBit,
00088 modregMemPacketDword =5<<modregMemStartBit, // MMX or 32bit memory
00089 modregMemPointer =6<<modregMemStartBit,
00090 modregMemBound =7<<modregMemStartBit,
00091 modregMemDescriptor =8<<modregMemStartBit,
00092 // only a pointer (LEA & INVLPG)
00093 modregMemNone =9<<modregMemStartBit,
00094 modregMemPacket =10<<modregMemStartBit,
00095 modregMemFPacket =11<<modregMemStartBit, // XMM or 32bit float
00096 modregMem2FPacket =12<<modregMemStartBit,
00097 modregMem4FPacket =13<<modregMemStartBit,
00098
00099 // bits 8-7 mem/reg, reg/mem or mem only
00100 modregTypeStartBit =7,
00101 modregType =3<<modregTypeStartBit,
00102 modregMemReg =0<<modregTypeStartBit,
00103 modregRegMem =1<<modregTypeStartBit,
00104 modregMem =2<<modregTypeStartBit,
00105 modregReg =3<<modregTypeStartBit,
00106
00107 // bits 11-9 third operand
00108 modregThirdStartBit =9,
00109 modregThird =7<<modregThirdStartBit,
00110 modregIsb =1<<modregThirdStartBit,
00111 modregIub =2<<modregThirdStartBit,
00112 modregIv =3<<modregThirdStartBit,
00113 modreg1 =4<<modregThirdStartBit,
00114 modregCL =5<<modregThirdStartBit,
00115
00116 // Manca Mp
00117 // per CR, DR e TR altra funzione
00118 // per EwsW SwEw altra funzione
00119
00120 // gruppi: funzione gruppo in instr passo numero gruppo, special il tipo
00121 // se non ha tipo passo -indice ad un vettore per i tipi
00122 // sdoppio mod_reg per passare il primo byte
00123
00124 modregEbGb =modregByte|modregMemReg,
00125 modregEvGv =modregVar |modregMemReg,
00126 modregGbEb =modregByte|modregRegMem,
00127 modregGvEv =modregVar |modregRegMem,
00128
00129 // segment
00130 modregEwSw =modregVar |modregMemReg|modregMemWord,
00131 modregSwEw =modregVar |modregRegMem|modregMemWord,
00132
00133 modregEv =modregVar |modregMem,
00134 modregEb1 =modregByte|modregMem|modreg1,
00135 modregEv1 =modregVar |modregMem|modreg1,
00136 modregEbCL =modregByte|modregMem|modregCL,
00137 modregEvCL =modregVar |modregMem|modregCL,
00138 modregGvMa =modregVar |modregRegMem|modregMemBound,
00139 modregGvMp =modregVar |modregRegMem|modregMemPointer,
00140 modregEbIsb =modregByte|modregMem|modregIsb,
00141 modregEbIub =modregByte|modregMem|modregIub,
00142 modregEvIv =modregVar |modregMem|modregIv,
00143 modregGvEvIv =modregVar |modregRegMem|modregIv,
00144 modregGvEvIsb =modregVar |modregRegMem|modregIsb,
00145 modregGvEvIub =modregVar |modregRegMem|modregIub,
00146 modregEb =modregByte|modregMem,
00147 modregGvEb =modregVar |modregRegMem|modregMemByte,
00148 modregGvEw =modregVar |modregRegMem|modregMemWord,
00149 modregEvGvIsb =modregVar |modregMemReg|modregIsb,
00150 modregEvGvIub =modregVar |modregMemReg|modregIub,
00151 modregEvGvCL =modregVar |modregMemReg|modregCL,
00152 modregEvIsb =modregVar |modregMem|modregIsb,
00153 modregEvIub =modregVar |modregMem|modregIub,
00154
00155 // Memory only
00156 modregEp =modregMem|modregMemPointer,
00157 modregEw =modregMem|modregMemWord,
00158 modregMs =modregMem|modregMemDescriptor,
00159 modregMn =modregMem|modregMemNone,
00160 modregMq =modregMem|modregMemQword,
00161 // LEA
00162 modregGvMn =modregVar |modregRegMem|modregMemNone,
00163
00164 // Mmx
00165 modregPqQd =modregRegMem|modregMmx|modregMemPacketDword,
00166 modregPqQq =modregRegMem|modregMmx,
00167 modregPqQqIub =modregPqQq|modregIub,
00168 modregQqPq =modregMemReg|modregMmx,
00169 modregPqIsb =modregReg|modregMmx|modregIsb,
00170 modregPqIub =modregReg|modregMmx|modregIub,
00171 modregPdEd =modregRegMem|modregMmx|modregMemDword,
00172 modregEdPd =modregMemReg|modregMmx|modregMemDword,
00173 modregPqEdIub =modregPdEd|modregIub,
00174 modregPqEwIub =modregRegMem|modregMmx|modregMemWord|modregIub,
00175 modregGdQq =modregRegMem|modregDword|modregMemPacket,
00176 modregGdQqIub =modregGdQq|modregIub,
00177
00178 // Xmm
00179 // difference from ps and ss raise from opcode
00180 modregWpsVps =modregMemReg|modregXmm,
00181 modregVpsWps =modregRegMem|modregXmm,
00182 modregVpsWpsIub =modregRegMem|modregXmm|modregIub,
00183 modregVpsQq =modregRegMem|modregXmm|modregMemPacket,
00184 modregPqWq =modregRegMem|modregMmx|modregMem2FPacket,
00185 modregVqWq =modregRegMem|modregXmm|modregMem2FPacket,
00186 modregWqVq =modregMemReg|modregXmm|modregMem2FPacket,
00187 modregVssWss =modregRegMem|modregXmm|modregMemFPacket,
00188 modregVssWssIub =modregRegMem|modregXmm|modregMemFPacket|modregIub,
00189 modregVssEd =modregRegMem|modregXmm|modregMemDword,
00190 modregGdWss =modregRegMem|modregDword|modregMem4FPacket,
00191 modregWssVss =modregMemReg|modregXmm|modregMemFPacket,
00192 modregEdVps =modregMemReg|modregXmm|modregMemDword
00193 };
|
|
|
Definition at line 196 of file x86table.h.
00197 {
00198 movcregR32CRx =0,
00199 movcregCRxr32 =1,
00200 movcregR32DRx =2,
00201 movcregDRxr32 =3,
00202 movcregR32TRx =4,
00203 movcregTRxr32 =5
00204 };
|
|
|
Definition at line 38 of file x86table.h.
00039 {
00040 regNone = 0,
00041
00042 regAL,
00043 regCL,
00044 regDL,
00045 regBL,
00046 regAH,
00047 regCH,
00048 regDH,
00049 regBH,
00050
00051 regAX, // Or EAX, etc. as may arise
00052 regCX,
00053 regDX,
00054 regBX,
00055 regSP,
00056 regBP,
00057 regSI,
00058 regDI,
00059
00060 regES, // Segment register identifiers
00061 regCS,
00062 regSS,
00063 regDS,
00064 regFS,
00065 regGS
00066 };
|
|
|
Definition at line 222 of file x86table.h. |
|
|
Definition at line 231 of file x86table.h. |
|
|
Definition at line 232 of file x86table.h. |
|
|
Definition at line 207 of file x86table.h. |
|
|
Definition at line 208 of file x86table.h. |
|
|
Definition at line 206 of file x86table.h. |
1.2.15