123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386 |
- MODULE FoxAMD64InstructionSet;
- IMPORT KernelLog;
- CONST
- maxCPUs* = 30;
- maxNumberOperands* = 5;
- maxNumberMnemonics = 1012;
- maxNumberInstructions = 3380;
- maxMnemonicNameLength = 20;
- maxCodeLength* = 12;
- none* = -1;
- bitsDefault* = 0;
- bits8* = 1;
- bits16* = 2;
- bits32* = 4;
- bits64* = 8;
- bits128* = 16;
- cpu8086* = 0;
- cpu186* = 1;
- cpu286* = 2;
- cpu386* = 3;
- cpu486* = 4;
- cpuPentium* = 5;
- cpuP6* = 6;
- cpuKatmai* = 7;
- cpuWillamette* = 8;
- cpuPrescott* = 9;
- cpuAMD64* = 10;
- cpuSW = 11;
- cpuSB = 11;
- cpuSMM = 11;
- cpuAR1 = 11;
- cpuAR2 = 11;
- cpuND = 11;
- cpuPrivileged* = 20;
- cpuProtected* = 21;
- cpuSSE* = 22;
- cpuSSE2* = 23;
- cpuSSE3* = 24;
- cpu3DNow* = 25;
- cpuMMX* = 26;
- cpuFPU* = 27;
- cpuOptions* = {cpuPrivileged .. cpuFPU};
- optO16* = 0;
- optO32* = 1;
- optO64* = 2;
- optD64* = 3;
- optNot64* = 4;
- optA16* = 5;
- optA32* = 6;
- optPOP* = 7;
- optPLOCK* = 8;
- optPREP* = 9;
- optPREPN* = 10;
- reg8* = 0;
- reg16* = 1;
- reg32* = 2;
- reg64* = 3;
- CRn* = 4;
- DRn* = 5;
- segReg* = 6;
- mmx* = 7;
- xmm* = 8;
- ymm* = 9;
- sti* = 10;
- mem* = 11;
- imm* = 12;
- ioffset* = 13;
- pntr1616* = 14;
- pntr1632* = 15;
- AL* = 16;
- AX* = 17;
- CL* = 18;
- CR8* = 19;
- CS* = 20;
- DS* = 21;
- DX* = 22;
- EAX* = 23;
- ECX* = 24;
- ES* = 25;
- FS* = 26;
- GS* = 27;
- RAX* = 28;
- SS* = 29;
- rAX* = 30;
- st0* = 31;
- imm16* = 32;
- imm32* = 33;
- imm64* = 34;
- imm8* = 35;
- uimm16* = 36;
- uimm32* = 37;
- uimm8* = 38;
- simm16* = 39;
- simm32* = 40;
- simm8* = 41;
- mem256* = 42;
- mem128* = 43;
- mem16* = 44;
- mem32* = 45;
- mem64* = 46;
- mem8* = 47;
- moffset16* = 48;
- moffset32* = 49;
- moffset64* = 50;
- moffset8* = 51;
- rel16off* = 52;
- rel32off* = 53;
- rel8off* = 54;
- reg3264* = 55;
- regmem16* = 56;
- regmem32* = 57;
- regmem64* = 58;
- regmem8* = 59;
- reg32mem16* = 60;
- mmxmem32* = 61;
- mmxmem64* = 62;
- xmmmem256* = 63;
- xmmmem128* = 64;
- xmmmem32* = 65;
- xmmmem64* = 66;
- xmmmem8* = 67;
- xmmmem16* = 68;
- ymmmem128* = 69;
- ymmmem256* = 70;
- one* = 71;
- three* = 72;
- vm32x* = 73;
- vm32y* = 74;
- vm64x* = 75;
- vm64y* = 76;
- m2z* = 77;
- prfOP* = 102;
- prfADR* = 103;
- prfCS* = 46;
- prfDS* = 62;
- prfES* = 38;
- prfFS* = 100;
- prfGS* = 101;
- prfSS* = 54;
- prfLOCK* = 240;
- prfREP* = 243;
- prfREPE* = 243;
- prfREPZ* = 243;
- prfREPNE* = 242;
- prfREPNZ* = 242;
- regAL* = 0;
- regCL* = 1;
- regDL* = 2;
- regBL* = 3;
- regSPL* = 4;
- regBPL* = 5;
- regSIL* = 6;
- regDIL* = 7;
- regAH* = 16;
- regCH* = 17;
- regDH* = 18;
- regBH* = 19;
- regR8B* = 8;
- regR9B* = 9;
- regR10B* = 10;
- regR11B* = 11;
- regR12B* = 12;
- regR13B* = 13;
- regR14B* = 14;
- regR15B* = 15;
- regAX* = 32;
- regCX* = 33;
- regDX* = 34;
- regBX* = 35;
- regSP* = 36;
- regBP* = 37;
- regSI* = 38;
- regDI* = 39;
- regR8W* = 40;
- regR9W* = 41;
- regR10W* = 42;
- regR11W* = 43;
- regR12W* = 44;
- regR13W* = 45;
- regR14W* = 46;
- regR15W* = 47;
- regEAX* = 64;
- regECX* = 65;
- regEDX* = 66;
- regEBX* = 67;
- regESP* = 68;
- regEBP* = 69;
- regESI* = 70;
- regEDI* = 71;
- regR8D* = 72;
- regR9D* = 73;
- regR10D* = 74;
- regR11D* = 75;
- regR12D* = 76;
- regR13D* = 77;
- regR14D* = 78;
- regR15D* = 79;
- regRAX* = 96;
- regRCX* = 97;
- regRDX* = 98;
- regRBX* = 99;
- regRSP* = 100;
- regRBP* = 101;
- regRSI* = 102;
- regRDI* = 103;
- regR8* = 104;
- regR9* = 105;
- regR10* = 106;
- regR11* = 107;
- regR12* = 108;
- regR13* = 109;
- regR14* = 110;
- regR15* = 111;
- regRIP* = 112;
- regES* = 128;
- regCS* = 129;
- regSS* = 130;
- regDS* = 131;
- regFS* = 132;
- regGS* = 133;
- regCR0* = 134;
- regCR1* = 135;
- regCR2* = 136;
- regCR3* = 137;
- regCR4* = 138;
- regCR5* = 139;
- regCR6* = 140;
- regCR7* = 141;
- regCR8* = 142;
- regCR9* = 143;
- regCR10* = 144;
- regCR11* = 145;
- regCR12* = 146;
- regCR13* = 147;
- regCR14* = 148;
- regCR15* = 149;
- regDR0* = 150;
- regDR1* = 151;
- regDR2* = 152;
- regDR3* = 153;
- regDR4* = 154;
- regDR5* = 155;
- regDR6* = 156;
- regDR7* = 157;
- regDR8* = 158;
- regDR9* = 159;
- regDR10* = 160;
- regDR11* = 161;
- regDR12* = 162;
- regDR13* = 163;
- regDR14* = 164;
- regDR15* = 165;
- regST0* = 166;
- regST1* = 167;
- regST2* = 168;
- regST3* = 169;
- regST4* = 170;
- regST5* = 171;
- regST6* = 172;
- regST7* = 173;
- regXMM0* = 174;
- regXMM1* = 175;
- regXMM2* = 176;
- regXMM3* = 177;
- regXMM4* = 178;
- regXMM5* = 179;
- regXMM6* = 180;
- regXMM7* = 181;
- regXMM8* = 182;
- regXMM9* = 183;
- regXMM10* = 184;
- regXMM11* = 185;
- regXMM12* = 186;
- regXMM13* = 187;
- regXMM14* = 188;
- regXMM15* = 189;
- regMMX0* = 190;
- regMMX1* = 191;
- regMMX2* = 192;
- regMMX3* = 193;
- regMMX4* = 194;
- regMMX5* = 195;
- regMMX6* = 196;
- regMMX7* = 197;
- regYMM0* = 198;
- regYMM1* = 199;
- regYMM2* = 200;
- regYMM3* = 201;
- regYMM4* = 202;
- regYMM5* = 203;
- regYMM6* = 204;
- regYMM7* = 205;
- regYMM8* = 206;
- regYMM9* = 207;
- regYMM10* = 208;
- regYMM11* = 209;
- regYMM12* = 210;
- regYMM13* = 211;
- regYMM14* = 212;
- regYMM15* = 213;
- numberRegisters* = 214;
- opCode* = 0;
- modRMExtension* = 1;
- modRMBoth* = 2;
- cb* = 3;
- cw* = 4;
- cd* = 5;
- cp* = 6;
- ib* = 7;
- iw* = 8;
- id* = 9;
- iq* = 10;
- rb* = 11;
- rw* = 12;
- rd* = 13;
- rq* = 14;
- mem64Operand* = 15;
- mem128Operand* = 16;
- fpStackOperand* = 17;
- directMemoryOffset* = 18;
- Src1Prefix* = 19;
- Src2Prefix* = 20;
- CountPrefix* = 21;
- DestPrefix* = 22;
- RXB* = 23;
- TYPE
- Name = ARRAY 20 OF CHAR;
- OperandType* = SHORTINT;
- CPUOptions* = SET;
- Code* = CHAR;
- Instruction* = RECORD
- code-: ARRAY maxCodeLength OF Code;
- operands-: ARRAY maxNumberOperands OF OperandType;
- bitwidthOptions-: SET;
- cpuOptions-: SET;
- END;
- Mnemonic* = RECORD
- name-: ARRAY maxMnemonicNameLength OF CHAR;
- firstInstruction-, lastInstruction-: LONGINT;
- END;
- CPUType* = RECORD
- name-: Name;
- cpuOptions-: SET;
- END;
- Register* = RECORD
- name-: Name;
- type-: OperandType;
- index-: SHORTINT;
- sizeInBytes-: SHORTINT;
- END;
- VAR
- 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;
- 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;
- mnemonics-: ARRAY maxNumberMnemonics OF Mnemonic;
- numberMnemonics: LONGINT;
- instructions-: ARRAY maxNumberInstructions OF Instruction;
- numberInstructions: LONGINT;
- registers-: ARRAY numberRegisters OF Register;
- registersByClass-: ARRAY (sti + 1) OF ARRAY 17 OF LONGINT;
- cpus-: ARRAY maxCPUs OF CPUType;
- cpuCount: LONGINT;
- PROCEDURE ^ FindMnemonic*(CONST mnem: ARRAY OF CHAR): LONGINT;
- PROCEDURE ^ FindRegister*(CONST reg: ARRAY OF CHAR): LONGINT;
- PROCEDURE ^ RegisterType*(regNumber: LONGINT): OperandType;
- PROCEDURE ^ RegisterIndex*(regNumber: LONGINT): SHORTINT;
- PROCEDURE ^ FindCPU*(CONST cpu: ARRAY OF CHAR): LONGINT;
- PROCEDURE ^ StringToOperand(CONST name: ARRAY OF CHAR): SHORTINT;
- PROCEDURE ^ ParseOperand(CONST op: ARRAY OF CHAR; VAR at: LONGINT): SHORTINT;
- PROCEDURE ^ InitInstructions;
- PROCEDURE ^ IsImmediate8*(operandType: OperandType): BOOLEAN;
- PROCEDURE ^ IsImmediate16*(operandType: OperandType): BOOLEAN;
- PROCEDURE ^ IsImmediate32*(operandType: OperandType): BOOLEAN;
- PROCEDURE ^ IsImmediate64*(operandType: OperandType): BOOLEAN;
- PROCEDURE ^ InitRegisters;
- PROCEDURE ^ InitCPUs;
- PROCEDURE ^ Trace*;
- BEGIN
- END FoxAMD64InstructionSet.
|