FoxAMD64InstructionSet.SymW 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. MODULE FoxAMD64InstructionSet;
  2. IMPORT KernelLog;
  3. CONST
  4. maxCPUs* = 30;
  5. maxNumberOperands* = 5;
  6. maxNumberMnemonics = 1012;
  7. maxNumberInstructions = 3380;
  8. maxMnemonicNameLength = 20;
  9. maxCodeLength* = 12;
  10. none* = -1;
  11. bitsDefault* = 0;
  12. bits8* = 1;
  13. bits16* = 2;
  14. bits32* = 4;
  15. bits64* = 8;
  16. bits128* = 16;
  17. cpu8086* = 0;
  18. cpu186* = 1;
  19. cpu286* = 2;
  20. cpu386* = 3;
  21. cpu486* = 4;
  22. cpuPentium* = 5;
  23. cpuP6* = 6;
  24. cpuKatmai* = 7;
  25. cpuWillamette* = 8;
  26. cpuPrescott* = 9;
  27. cpuAMD64* = 10;
  28. cpuSW = 11;
  29. cpuSB = 11;
  30. cpuSMM = 11;
  31. cpuAR1 = 11;
  32. cpuAR2 = 11;
  33. cpuND = 11;
  34. cpuPrivileged* = 20;
  35. cpuProtected* = 21;
  36. cpuSSE* = 22;
  37. cpuSSE2* = 23;
  38. cpuSSE3* = 24;
  39. cpu3DNow* = 25;
  40. cpuMMX* = 26;
  41. cpuFPU* = 27;
  42. cpuOptions* = {cpuPrivileged .. cpuFPU};
  43. optO16* = 0;
  44. optO32* = 1;
  45. optO64* = 2;
  46. optD64* = 3;
  47. optNot64* = 4;
  48. optA16* = 5;
  49. optA32* = 6;
  50. optPOP* = 7;
  51. optPLOCK* = 8;
  52. optPREP* = 9;
  53. optPREPN* = 10;
  54. reg8* = 0;
  55. reg16* = 1;
  56. reg32* = 2;
  57. reg64* = 3;
  58. CRn* = 4;
  59. DRn* = 5;
  60. segReg* = 6;
  61. mmx* = 7;
  62. xmm* = 8;
  63. ymm* = 9;
  64. sti* = 10;
  65. mem* = 11;
  66. imm* = 12;
  67. ioffset* = 13;
  68. pntr1616* = 14;
  69. pntr1632* = 15;
  70. AL* = 16;
  71. AX* = 17;
  72. CL* = 18;
  73. CR8* = 19;
  74. CS* = 20;
  75. DS* = 21;
  76. DX* = 22;
  77. EAX* = 23;
  78. ECX* = 24;
  79. ES* = 25;
  80. FS* = 26;
  81. GS* = 27;
  82. RAX* = 28;
  83. SS* = 29;
  84. rAX* = 30;
  85. st0* = 31;
  86. imm16* = 32;
  87. imm32* = 33;
  88. imm64* = 34;
  89. imm8* = 35;
  90. uimm16* = 36;
  91. uimm32* = 37;
  92. uimm8* = 38;
  93. simm16* = 39;
  94. simm32* = 40;
  95. simm8* = 41;
  96. mem256* = 42;
  97. mem128* = 43;
  98. mem16* = 44;
  99. mem32* = 45;
  100. mem64* = 46;
  101. mem8* = 47;
  102. moffset16* = 48;
  103. moffset32* = 49;
  104. moffset64* = 50;
  105. moffset8* = 51;
  106. rel16off* = 52;
  107. rel32off* = 53;
  108. rel8off* = 54;
  109. reg3264* = 55;
  110. regmem16* = 56;
  111. regmem32* = 57;
  112. regmem64* = 58;
  113. regmem8* = 59;
  114. reg32mem16* = 60;
  115. mmxmem32* = 61;
  116. mmxmem64* = 62;
  117. xmmmem256* = 63;
  118. xmmmem128* = 64;
  119. xmmmem32* = 65;
  120. xmmmem64* = 66;
  121. xmmmem8* = 67;
  122. xmmmem16* = 68;
  123. ymmmem128* = 69;
  124. ymmmem256* = 70;
  125. one* = 71;
  126. three* = 72;
  127. vm32x* = 73;
  128. vm32y* = 74;
  129. vm64x* = 75;
  130. vm64y* = 76;
  131. m2z* = 77;
  132. prfOP* = 102;
  133. prfADR* = 103;
  134. prfCS* = 46;
  135. prfDS* = 62;
  136. prfES* = 38;
  137. prfFS* = 100;
  138. prfGS* = 101;
  139. prfSS* = 54;
  140. prfLOCK* = 240;
  141. prfREP* = 243;
  142. prfREPE* = 243;
  143. prfREPZ* = 243;
  144. prfREPNE* = 242;
  145. prfREPNZ* = 242;
  146. regAL* = 0;
  147. regCL* = 1;
  148. regDL* = 2;
  149. regBL* = 3;
  150. regSPL* = 4;
  151. regBPL* = 5;
  152. regSIL* = 6;
  153. regDIL* = 7;
  154. regAH* = 16;
  155. regCH* = 17;
  156. regDH* = 18;
  157. regBH* = 19;
  158. regR8B* = 8;
  159. regR9B* = 9;
  160. regR10B* = 10;
  161. regR11B* = 11;
  162. regR12B* = 12;
  163. regR13B* = 13;
  164. regR14B* = 14;
  165. regR15B* = 15;
  166. regAX* = 32;
  167. regCX* = 33;
  168. regDX* = 34;
  169. regBX* = 35;
  170. regSP* = 36;
  171. regBP* = 37;
  172. regSI* = 38;
  173. regDI* = 39;
  174. regR8W* = 40;
  175. regR9W* = 41;
  176. regR10W* = 42;
  177. regR11W* = 43;
  178. regR12W* = 44;
  179. regR13W* = 45;
  180. regR14W* = 46;
  181. regR15W* = 47;
  182. regEAX* = 64;
  183. regECX* = 65;
  184. regEDX* = 66;
  185. regEBX* = 67;
  186. regESP* = 68;
  187. regEBP* = 69;
  188. regESI* = 70;
  189. regEDI* = 71;
  190. regR8D* = 72;
  191. regR9D* = 73;
  192. regR10D* = 74;
  193. regR11D* = 75;
  194. regR12D* = 76;
  195. regR13D* = 77;
  196. regR14D* = 78;
  197. regR15D* = 79;
  198. regRAX* = 96;
  199. regRCX* = 97;
  200. regRDX* = 98;
  201. regRBX* = 99;
  202. regRSP* = 100;
  203. regRBP* = 101;
  204. regRSI* = 102;
  205. regRDI* = 103;
  206. regR8* = 104;
  207. regR9* = 105;
  208. regR10* = 106;
  209. regR11* = 107;
  210. regR12* = 108;
  211. regR13* = 109;
  212. regR14* = 110;
  213. regR15* = 111;
  214. regRIP* = 112;
  215. regES* = 128;
  216. regCS* = 129;
  217. regSS* = 130;
  218. regDS* = 131;
  219. regFS* = 132;
  220. regGS* = 133;
  221. regCR0* = 134;
  222. regCR1* = 135;
  223. regCR2* = 136;
  224. regCR3* = 137;
  225. regCR4* = 138;
  226. regCR5* = 139;
  227. regCR6* = 140;
  228. regCR7* = 141;
  229. regCR8* = 142;
  230. regCR9* = 143;
  231. regCR10* = 144;
  232. regCR11* = 145;
  233. regCR12* = 146;
  234. regCR13* = 147;
  235. regCR14* = 148;
  236. regCR15* = 149;
  237. regDR0* = 150;
  238. regDR1* = 151;
  239. regDR2* = 152;
  240. regDR3* = 153;
  241. regDR4* = 154;
  242. regDR5* = 155;
  243. regDR6* = 156;
  244. regDR7* = 157;
  245. regDR8* = 158;
  246. regDR9* = 159;
  247. regDR10* = 160;
  248. regDR11* = 161;
  249. regDR12* = 162;
  250. regDR13* = 163;
  251. regDR14* = 164;
  252. regDR15* = 165;
  253. regST0* = 166;
  254. regST1* = 167;
  255. regST2* = 168;
  256. regST3* = 169;
  257. regST4* = 170;
  258. regST5* = 171;
  259. regST6* = 172;
  260. regST7* = 173;
  261. regXMM0* = 174;
  262. regXMM1* = 175;
  263. regXMM2* = 176;
  264. regXMM3* = 177;
  265. regXMM4* = 178;
  266. regXMM5* = 179;
  267. regXMM6* = 180;
  268. regXMM7* = 181;
  269. regXMM8* = 182;
  270. regXMM9* = 183;
  271. regXMM10* = 184;
  272. regXMM11* = 185;
  273. regXMM12* = 186;
  274. regXMM13* = 187;
  275. regXMM14* = 188;
  276. regXMM15* = 189;
  277. regMMX0* = 190;
  278. regMMX1* = 191;
  279. regMMX2* = 192;
  280. regMMX3* = 193;
  281. regMMX4* = 194;
  282. regMMX5* = 195;
  283. regMMX6* = 196;
  284. regMMX7* = 197;
  285. regYMM0* = 198;
  286. regYMM1* = 199;
  287. regYMM2* = 200;
  288. regYMM3* = 201;
  289. regYMM4* = 202;
  290. regYMM5* = 203;
  291. regYMM6* = 204;
  292. regYMM7* = 205;
  293. regYMM8* = 206;
  294. regYMM9* = 207;
  295. regYMM10* = 208;
  296. regYMM11* = 209;
  297. regYMM12* = 210;
  298. regYMM13* = 211;
  299. regYMM14* = 212;
  300. regYMM15* = 213;
  301. numberRegisters* = 214;
  302. opCode* = 0;
  303. modRMExtension* = 1;
  304. modRMBoth* = 2;
  305. cb* = 3;
  306. cw* = 4;
  307. cd* = 5;
  308. cp* = 6;
  309. ib* = 7;
  310. iw* = 8;
  311. id* = 9;
  312. iq* = 10;
  313. rb* = 11;
  314. rw* = 12;
  315. rd* = 13;
  316. rq* = 14;
  317. mem64Operand* = 15;
  318. mem128Operand* = 16;
  319. fpStackOperand* = 17;
  320. directMemoryOffset* = 18;
  321. Src1Prefix* = 19;
  322. Src2Prefix* = 20;
  323. CountPrefix* = 21;
  324. DestPrefix* = 22;
  325. RXB* = 23;
  326. TYPE
  327. Name = ARRAY 20 OF CHAR;
  328. OperandType* = SHORTINT;
  329. CPUOptions* = SET;
  330. Code* = CHAR;
  331. Instruction* = RECORD
  332. code-: ARRAY maxCodeLength OF Code;
  333. operands-: ARRAY maxNumberOperands OF OperandType;
  334. bitwidthOptions-: SET;
  335. cpuOptions-: SET;
  336. END;
  337. Mnemonic* = RECORD
  338. name-: ARRAY maxMnemonicNameLength OF CHAR;
  339. firstInstruction-, lastInstruction-: LONGINT;
  340. END;
  341. CPUType* = RECORD
  342. name-: Name;
  343. cpuOptions-: SET;
  344. END;
  345. Register* = RECORD
  346. name-: Name;
  347. type-: OperandType;
  348. index-: SHORTINT;
  349. sizeInBytes-: SHORTINT;
  350. END;
  351. VAR
  352. opAAA*, opAAD*, opAAM*, opAAS*, opADC*, opADD*, opADDPD*, opADDPS*, opADDSD*, opADDSS*, opADDSUBPD*, opADDSUBPS*, opAND*, opANDNPD*, opANDNPS*, opANDPD*, opANDPS*, opARPL*, opBOUND*, opBSF*, opBSR*, opBSWAP*, opBT*, opBTC*, opBTR*, opBTS*, opCALL*, opCALLFAR*, opCBW*, opCDQ*, opCDQE*, opCLC*, opCLD*, opCLFLUSH*, opCLGI*, opCLI*, opCLTS*, opCMC*, opCMOVA*, opCMOVAE*, opCMOVB*, opCMOVBE*, opCMOVC*, opCMOVE*, opCMOVG*, opCMOVGE*, opCMOVL*, opCMOVLE*, opCMOVNA*, opCMOVNAE*, opCMOVNB*, opCMOVNBE*, opCMOVNC*, opCMOVNE*, opCMOVNG*, opCMOVNGE*, opCMOVNL*, opCMOVNLE*, opCMOVNO*, opCMOVNP*, opCMOVNS*, opCMOVNZ*, opCMOVO*, opCMOVP*, opCMOVPE*, opCMOVPO*, opCMOVS*, opCMOVZ*, opCMP*, opCMPPD*, opCMPPS*, opCMPS*, opCMPSB*, opCMPSD*, opCMPSQ*, opCMPSS*, opCMPSW*, opCMPXCHG*, opCMPXCHG16B*, opCMPXCHG8B*, opCOMISD*, opCOMISS*, opCPUID*, opCQO*, opCVTDQ2PD*, opCVTDQ2PS*, opCVTPD2DQ*, opCVTPD2PI*, opCVTPD2PS*, opCVTPI2PD*, opCVTPI2PS*, opCVTPS2DQ*, opCVTPS2PD*, opCVTPS2PI*, opCVTSD2SI*, opCVTSD2SS*, opCVTSI2SD*, opCVTSI2SS*, opCVTSS2SD*, opCVTSS2SI*, opCVTTPD2DQ*, opCVTTPD2PI*, opCVTTPS2DQ*, opCVTTPS2PI*, opCVTTSD2SI*, opCVTTSS2SI*, opCWD*, opCWDE*, opDAA*, opDAS*, opDEC*, opDIV*, opDIVPD*, opDIVPS*, opDIVSD*, opDIVSS*, opEMMS*, opENTER*, opF2XM1*, opFABS*, opFADD*, opFADDP*, opFBLD*, opFBSTP*, opFCHS*, opFCLEX*, opFCMOVB*, opFCMOVBE*, opFCMOVE*, opFCMOVNB*, opFCMOVNBE*, opFCMOVNE*, opFCMOVNU*, opFCMOVU*, opFCOM*, opFCOMI*, opFCOMIP*, opFCOMP*, opFCOMPP*, opFCOS*, opFDECSTP*, opFDIV*, opFDIVP*, opFDIVR*, opFDIVRP*, opFEMMS*, opFFREE*, opFIADD*, opFICOM*, opFICOMP*, opFIDIV*, opFIDIVR*, opFILD*, opFIMUL*, opFINCSTP*, opFINIT*, opFIST*, opFISTP*, opFISTTP*, opFISUB*, opFISUBR*, opFLD*, opFLD1*, opFLDCW*, opFLDENV*, opFLDL2E*, opFLDL2T*, opFLDLG2*, opFLDLN2*, opFLDPI*, opFLDZ*, opFMUL*, opFMULP*, opFNCLEX*, opFNINIT*, opFNOP*, opFNSAVE*, opFNSTCW*, opFNSTENV*, opFNSTSW*, opFPATAN*, opFPREM*, opFPREM1*, opFPTAN*, opFRNDINT*, opFRSTOR*, opFSAVE*, opFSCALE*, opFSIN*, opFSINCOS*, opFSQRT*, opFST*, opFSTCW*, opFSTENV*, opFSTP*, opFSTSW*, opFSUB*, opFSUBP*, opFSUBR*, opFSUBRP*, opFTST*, opFUCOM*, opFUCOMI*, opFUCOMIP*, opFUCOMP*, opFUCOMPP*, opFWAIT*, opFXAM*, opFXCH*, opFXRSTOR*, opFXSAVE*, opFXTRACT*, opFYL2X*, opFYL2XP1*, opHADDPD*, opHADDPS*, opHLT*, opHSUBPD*, opHSUBPS*, opIDIV*, opIMUL*, opIN*, opINC*, opINS*, opINSB*, opINSD*, opINSW*, opINT*, opINT3*, opINTO*, opINVD*, opINVLPG*, opINVLPGA*, opIRET*, opIRETD*, opIRETQ*, opJA*, opJAE*, opJB*, opJBE*, opJC*, opJCXZ*, opJE*, opJECXZ*, opJG*, opJGE*, opJL*, opJLE*, opJMP*, opJMPFAR*, opJNA*, opJNAE*, opJNB*, opJNBE*, opJNC*, opJNE*, opJNG*, opJNGE*, opJNL*, opJNLE*, opJNO*, opJNP*, opJNS*, opJNZ*, opJO*, opJP*, opJPE*, opJPO*, opJRCXZ*, opJS*, opJZ*, opLAHF*, opLAR*, opLDDQU*, opLDMXCSR*, opLDS*, opLEA*, opLEAVE*, opLES*, opLFENCE*, opLFS*, opLGDT*, opLGS*, opLIDT*, opLLDT*, opLMSW*, opLODS*, opLODSB*, opLODSD*, opLODSQ*, opLODSW*, opLOOP*, opLOOPE*, opLOOPNE*, opLOOPNZ*, opLOOPZ*, opLSL*, opLSS*, opLTR*, opMASKMOVDQU*, opMASKMOVQ*, opMAXPD*, opMAXPS*, opMAXSD*, opMAXSS*, opMFENCE*, opMINPD*, opMINPS*, opMINSD*, opMINSS*, opMOV*, opMOVAPD*, opMOVAPS*, opMOVD*, opMOVDDUP*, opMOVDQ2Q*, opMOVDQA*, opMOVDQU*, opMOVHLPS*, opMOVHPD*, opMOVHPS*, opMOVLHPS*, opMOVLPD*, opMOVLPS*, opMOVMSKPD*, opMOVMSKPS*, opMOVNTDQ*, opMOVNTI*, opMOVNTPD*, opMOVNTPS*, opMOVNTQ*, opMOVQ*, opMOVQ2DQ*, opMOVS*, opMOVSB*, opMOVSD*, opMOVSHDUP*, opMOVSLDUP*, opMOVSQ*, opMOVSS*, opMOVSW*, opMOVSX*, opMOVSXD*, opMOVUPD*, opMOVUPS*, opMOVZX*, opMUL*, opMULPD*, opMULPS*, opMULSD*, opMULSS*, opNEG*, opNOP*, opNOT*, opOR*, opORPD*, opORPS*, opOUT*, opOUTS*, opOUTSB*, opOUTSD*, opOUTSW*, opPACKSSDW*, opPACKSSWB*, opPACKUSWB*, opPADDB*, opPADDD*, opPADDQ*, opPADDSB*, opPADDSW*, opPADDUSB*, opPADDUSW*, opPADDW*, opPAND*, opPANDN*, opPAUSE*, opPAVGB*, opPAVGUSB*, opPAVGW*, opPCMPEQB*, opPCMPEQD*, opPCMPEQW*, opPCMPGTB*, opPCMPGTD*, opPCMPGTW*, opPEXTRW*, opPF2ID*, opPF2IW*, opPFACC*, opPFADD*, opPFCMPEQ*, opPFCMPGE*, opPFCMPGT*, opPFMAX*, opPFMIN*, opPFMUL*, opPFNACC*, opPFPNACC*, opPFRCP*, opPFRCPIT1*, opPFRCPIT2*, opPFRSQIT1*, opPFRSQRT*, opPFSUB*, opPFSUBR*, opPI2FD*, opPI2FW*, opPINSRW*, opPMADDWD*, opPMAXSW*, opPMAXUB*, opPMINSW*, opPMINUB*, opPMOVMSKB*, opPMULHRW*, opPMULHUW*, opPMULHW*, opPMULLW*, opPMULUDQ*, opPOP*, opPOPA*, opPOPAD*, opPOPAW*, opPOPF*, opPOPFD*, opPOPFQ*, opPOR*, opPREFETCH*, opPREFETCHNTA*, opPREFETCHT0*, opPREFETCHT1*, opPREFETCHT2*, opPREFETCHW*, opPSADBW*, opPSHUFD*, opPSHUFHW*, opPSHUFLW*, opPSHUFW*, opPSLLD*, opPSLLDQ*, opPSLLQ*, opPSLLW*, opPSRAD*, opPSRAW*, opPSRLD*, opPSRLDQ*, opPSRLQ*, opPSRLW*, opPSUBB*, opPSUBD*, opPSUBQ*, opPSUBSB*, opPSUBSW*, opPSUBUSB*, opPSUBUSW*, opPSUBW*, opPSWAPD*, opPUNPCKHBW*, opPUNPCKHDQ*, opPUNPCKHQDQ*, opPUNPCKHWD*, opPUNPCKLBW*, opPUNPCKLDQ*, opPUNPCKLQDQ*, opPUNPCKLWD*, opPUSH*, opPUSHA*, opPUSHAD*, opPUSHF*, opPUSHFD*, opPUSHFQ*, opPXOR*, opRCL*, opRCPPS*, opRCPSS*, opRCR*, opRDMSR*, opRDPMC*, opRDTSC*, opRDTSCP*, opRET*, opRETF*, opROL*, opROR*, opRSM*, opRSQRTPS*, opRSQRTSS*, opSAHF*, opSAL*, opSAR*, opSBB*, opSCAS*, opSCASB*, opSCASD*, opSCASQ*, opSCASW*, opSETA*, opSETAE*, opSETB*, opSETBE*, opSETC*, opSETE*, opSETG*, opSETGE*, opSETL*, opSETLE*, opSETNA*, opSETNAE*, opSETNB*, opSETNBE*, opSETNC*, opSETNE*, opSETNG*, opSETNGE*, opSETNL*, opSETNLE*, opSETNO*, opSETNP*, opSETNS*, opSETNZ*, opSETO*, opSETP*, opSETPE*, opSETPO*, opSETS*, opSETZ*, opSFENCE*, opSGDT*, opSHL*, opSHLD*, opSHR*, opSHRD*, opSHUFPD*, opSHUFPS*, opSIDT*, opSKINIT*, opSLDT*, opSMSW*, opSQRTPD*, opSQRTPS*, opSQRTSD*, opSQRTSS*, opSTC*, opSTD*, opSTGI*, opSTI*, opSTMXCSR*, opSTOS*, opSTOSB*, opSTOSD*, opSTOSQ*, opSTOSW*, opSTR*, opSUB*, opSUBPD*, opSUBPS*, opSUBSD*, opSUBSS*, opSWAPGS*, opSYSCALL*, opSYSENTER*, opSYSEXIT*, opSYSRET*, opTEST*, opUCOMISD*, opUCOMISS*, opUD2*, opUNPCKHPD*, opUNPCKHPS*, opUNPCKLPD*, opUNPCKLPS*, opVERR*, opVERW*, opVMLOAD*, opVMMCALL*, opVMRUN*, opVMSAVE*, opWBINVD*, opWRMSR*, opXADD*, opXCHG*, opXLAT*, opXLATB*, opXOR*, opXORPD*, opXORPS*: LONGINT;
  353. opVAESKEYGENASSIST*, opVPMADCSWD*, opVADDPD*, opVADDPS*, opVADDSD*, opVADDSS*, opVADDSUBPD*, opVADDSUBPS*, opVAESDEC*, opVAESDECLAST*, opVAESENC*, opVAESENCLAST*, opVAESIMC*, opVANDNPD*, opVANDNPS*, opVANDPD*, opVANDPS*, opVBLENDPD*, opVBLENDPS*, opVBLENDVPD*, opVBLENDVPS*, opVBROADCASTF128*, opVBROADCASTI128*, opVBROADCASTSD*, opVBROADCASTSS*, opVCMPPD*, opVCMPPS*, opVCMPSD*, opVCMPSS*, opVCOMISD*, opVCOMISS*, opVCVTDQ2PD*, opVCVTDQ2PS*, opVCVTPD2DQ*, opVCVTPD2PS*, opVCVTPH2PS*, opVCVTPS2DQ*, opVCVTPS2PD*, opVCVTPS2PH*, opVCVTSD2SI*, opVCVTSD2SS*, opVCVTSI2SD*, opVCVTSI2SS*, opVCVTSS2SD*, opVCVTSS2SI*, opVCVTTPD2DQ*, opVCVTTPS2DQ*, opVCVTTSD2SI*, opVCVTTSS2SI*, opVDIVPD*, opVDIVPS*, opVDIVSD*, opVDIVSS*, opVDPPD*, opVDPPS*, opVEXTRACTF128*, opVEXTRACTI128*, opVEXTRACTPS*, opVFMADD132PD*, opVFMADD132PS*, opVFMADD132SD*, opVFMADD132SS*, opVFMADD213PD*, opVFMADD213PS*, opVFMADD213SD*, opVFMADD213SS*, opVFMADD231PD*, opVFMADD231PS*, opVFMADD231SD*, opVFMADD231SS*, opVFMADDPD*, opVFMADDPS*, opVFMADDSD*, opVFMADDSS*, opVFMADDSUB132PD*, opVFMADDSUB132PS*, opVFMADDSUB213PD*, opVFMADDSUB213PS*, opVFMADDSUB231PD*, opVFMADDSUB231PS*, opVFMADDSUBPD*, opVFMADDSUBPS*, opVFMSUB132PD*, opVFMSUB132PS*, opVFMSUB132SD*, opVFMSUB132SS*, opVFMSUB213PD*, opVFMSUB213PS*, opVFMSUB213SD*, opVFMSUB213SS*, opVFMSUB231PD*, opVFMSUB231PS*, opVFMSUB231SD*, opVFMSUB231SS*, opVFMSUBADD132PD*, opVFMSUBADD132PS*, opVFMSUBADD213PD*, opVFMSUBADD213PS*, opVFMSUBADD231PD*, opVFMSUBADD231PS*, opVFMSUBADDPD*, opVFMSUBADDPS*, opVFMSUBPD*, opVFMSUBPS*, opVFMSUBSD*, opVFMSUBSS*, opVFNMADD132PD*, opVFNMADD132PS*, opVFNMADD132SD*, opVFNMADD132SS*, opVFNMADD213PD*, opVFNMADD213PS*, opVFNMADD213SD*, opVFNMADD213SS*, opVFNMADD231PD*, opVFNMADD231PS*, opVFNMADD231SD*, opVFNMADD231SS*, opVFNMADDPD*, opVFNMADDPS*, opVFNMADDSD*, opVFNMADDSS*, opVFNMSUB132PD*, opVFNMSUB132PS*, opVFNMSUB132SD*, opVFNMSUB132SS*, opVFNMSUB213PD*, opVFNMSUB213PS*, opVFNMSUB213SD*, opVFNMSUB213SS*, opVFNMSUB231PD*, opVFNMSUB231PS*, opVFNMSUB231SD*, opVFNMSUB231SS*, opVFNMSUBPD*, opVFNMSUBPS*, opVFNMSUBSD*, opVFNMSUBSS*, opVFRCZPD*, opVFRCZPS*, opVFRCZSD*, opVFRCZSS*, opVGATHERDPD*, opVGATHERDPS*, opVGATHERQPD*, opVGATHERQPS*, opVHADDPD*, opVHADDPS*, opVHSUBPD*, opVHSUBPS*, opVINSERTF128*, opVINSERTI128*, opVINSERTPS*, opVLDDQU*, opVLDMXCSR*, opVMASKMOVDQU*, opVMASKMOVPD*, opVMASKMOVPS*, opVMAXPD*, opVMAXPS*, opVMAXSD*, opVMAXSS*, opVMINPD*, opVMINPS*, opVMINSD*, opVMINSS*, opVMOVAPD*, opVMOVAPS*, opVMOVD*, opVMOVDDUP*, opVMOVDQA*, opVMOVDQU*, opVMOVHLPS*, opVMOVHPD*, opVMOVHPS*, opVMOVLHPS*, opVMOVLPD*, opVMOVLPS*, opVPMOVMSKB*, opVMOVMSKPD*, opVMOVMSKPS*, opVMOVNTDQ*, opVMOVNTDQA*, opVMOVNTPD*, opVMOVNTPS*, opVMOVQ*, opVMOVSD*, opVMOVSHDUP*, opVMOVSLDUP*, opVMOVSS*, opVMOVUPD*, opVMOVUPS*, opVMPSADBW*, opVMULPD*, opVMULPS*, opVMULSD*, opVMULSS*, opVORPD*, opVORPS*, opVPABSB*, opVPABSD*, opVPABSW*, opVPACKSSDW*, opVPACKSSWB*, opVPACKUSDW*, opVPACKUSWB*, opVPADDB*, opVPADDD*, opVPADDQ*, opVPADDSB*, opVPADDSW*, opVPADDUSB*, opVPADDUSW*, opVPADDW*, opVPALIGNR*, opVPAND*, opVPANDN*, opVPAVGB*, opVPAVGW*, opVPBLENDD*, opVPBLENDVB*, opVPBLENDW*, opVPBROADCASTB*, opVPBROADCASTD*, opVPBROADCASTQ*, opVPBROADCASTW*, opVPCLMULQDQ*, opVPCMOV*, opVPCMPEQB*, opVPCMPEQD*, opVPCMPEQQ*, opVPCMPEQW*, opVPCMPESTRI*, opVPCMPESTRM*, opVPCMPGTB*, opVPCMPGTD*, opVPCMPGTQ*, opVPCMPGTW*, opVPCMPISTRI*, opVPCMPISTRM*, opVPCOMB*, opVPCOMD*, opVPCOMQ*, opVPCOMUB*, opVPCOMUD*, opVPCOMUQ*, opVPCOMUW*, opVPCOMW*, opVPERM2F128*, opVPERM2I128*, opVPERMD*, opVPERMIL2PD*, opVPERMIL2PS*, opVPERMILPD*, opVPERMILPS*, opVPERMPD*, opVPERMPS*, opVPERMQ*, opVPEXTRB*, opVPEXTRD*, opVPEXTRQ*, opVPEXTRW*, opVPGATHERDD*, opVPGATHERDQ*, opVPGATHERQD*, opVPGATHERQQ*, opVPHADDBD*, opVPHADDBQ*, opVPHADDBW*, opVPHADDD*, opVPHADDDQ*, opVPHADDSW*, opVPHADDUBD*, opVPHADDUBQ*, opVPHADDUBW*, opVPHADDUDQ*, opVPHADDUWD*, opVPHADDUWQ*, opVPHADDW*, opVPHADDWD*, opVPHADDWQ*, opVPHMINPOSUW*, opVPHSUBBW*, opVPHSUBD*, opVPHSUBDQ*, opVPHSUBSW*, opVPHSUBW*, opVPHSUBWD*, opVPINSRB*, opVPINSRD*, opVPINSRQ*, opVPINSRW*, opVPMACSDD*, opVPMACSDQH*, opVPMACSDQL*, opVPMACSSDD*, opVPMACSSDQH*, opVPMACSSDQL*, opVPMACSSWD*, opVPMACSSWW*, opVPMACSWD*, opVPMACSWW*, opVPMADCSSWD*, opVPMADDUBSW*, opVPMADDWD*, opVPMASKMOVD*, opVPMASKMOVQ*, opVPMAXSB*, opVPMAXSD*, opVPMAXSW*, opVPMAXUB*, opVPMAXUD*, opVPMAXUW*, opVPMINSB*, opVPMINSD*, opVPMINSW*, opVPMINUB*, opVPMINUD*, opVPMINUW*, opVPMOVSXBD*, opVPMOVSXBQ*, opVPMOVSXBW*, opVPMOVSXDQ*, opVPMOVSXWD*, opVPMOVSXWQ*, opVPMOVZXBD*, opVPMOVZXBQ*, opVPMOVZXBW*, opVPMOVZXDQ*, opVPMOVZXWD*, opVPMOVZXWQ*, opVPMULDQ*, opVPMULHRSW*, opVPMULHUW*, opVPMULHW*, opVPMULLD*, opVPMULLW*, opVPMULUDQ*, opVPOR*, opVPPERM*, opVPROTB*, opVPROTD*, opVPROTQ*, opVPROTW*, opVPSADBW*, opVPSHAB*, opVPSHAD*, opVPSHAQ*, opVPSHAW*, opVPSHLB*, opVPSHLD*, opVPSHLQ*, opVPSHLW*, opVPSHUFB*, opVPSHUFD*, opVPSHUFHW*, opVPSHUFLW*, opVPSIGNB*, opVPSIGND*, opVPSIGNW*, opVPSLLD*, opVPSLLDQ*, opVPSLLQ*, opVPSLLVD*, opVPSLLVQ*, opVPSLLW*, opVPSRAD*, opVPSRAVD*, opVPSRAW*, opVPSRLD*, opVPSRLDQ*, opVPSRLQ*, opVPSRLVD*, opVPSRLVQ*, opVPSRLW*, opVPSUBB*, opVPSUBD*, opVPSUBQ*, opVPSUBSB*, opVPSUBSW*, opVPSUBUSB*, opVPSUBUSW*, opVPSUBW*, opVPTEST*, opVPUNPCKHBW*, opVPUNPCKHDQ*, opVPUNPCKHQDQ*, opVPUNPCKHWD*, opVPUNPCKLBW*, opVPUNPCKLDQ*, opVPUNPCKLQDQ*, opVPUNPCKLWD*, opVPXOR*, opVRCPPS*, opVRCPSS*, opVROUNDPD*, opVROUNDPS*, opVROUNDSD*, opVROUNDSS*, opVRSQRTPS*, opVRSQRTSS*, opVSHUFPD*, opVSHUFPS*, opVSQRTPD*, opVSQRTPS*, opVSQRTSD*, opVSQRTSS*, opVSTMXCSR*, opVSUBPD*, opVSUBPS*, opVSUBSD*, opVSUBSS*, opVTESTPD*, opVTESTPS*, opVUCOMISD*, opVUCOMISS*, opVUNPCKHPD*, opVUNPCKHPS*, opVUNPCKLPD*, opVUNPCKLPS*, opVXORPD*, opVXORPS*, opVZEROALL*, opVZEROUPPER*: LONGINT;
  354. mnemonics-: ARRAY maxNumberMnemonics OF Mnemonic;
  355. numberMnemonics: LONGINT;
  356. instructions-: ARRAY maxNumberInstructions OF Instruction;
  357. numberInstructions: LONGINT;
  358. registers-: ARRAY numberRegisters OF Register;
  359. registersByClass-: ARRAY (sti + 1) OF ARRAY 17 OF LONGINT;
  360. cpus-: ARRAY maxCPUs OF CPUType;
  361. cpuCount: LONGINT;
  362. PROCEDURE ^ FindMnemonic*(CONST mnem: ARRAY OF CHAR): LONGINT;
  363. PROCEDURE ^ FindRegister*(CONST reg: ARRAY OF CHAR): LONGINT;
  364. PROCEDURE ^ RegisterType*(regNumber: LONGINT): OperandType;
  365. PROCEDURE ^ RegisterIndex*(regNumber: LONGINT): SHORTINT;
  366. PROCEDURE ^ FindCPU*(CONST cpu: ARRAY OF CHAR): LONGINT;
  367. PROCEDURE ^ StringToOperand(CONST name: ARRAY OF CHAR): SHORTINT;
  368. PROCEDURE ^ ParseOperand(CONST op: ARRAY OF CHAR; VAR at: LONGINT): SHORTINT;
  369. PROCEDURE ^ InitInstructions;
  370. PROCEDURE ^ IsImmediate8*(operandType: OperandType): BOOLEAN;
  371. PROCEDURE ^ IsImmediate16*(operandType: OperandType): BOOLEAN;
  372. PROCEDURE ^ IsImmediate32*(operandType: OperandType): BOOLEAN;
  373. PROCEDURE ^ IsImmediate64*(operandType: OperandType): BOOLEAN;
  374. PROCEDURE ^ InitRegisters;
  375. PROCEDURE ^ InitCPUs;
  376. PROCEDURE ^ Trace*;
  377. BEGIN
  378. END FoxAMD64InstructionSet.