Capstone disassembly/disassembler framework: Core (Arm, Arm64, BPF, EVM, M68K, M680X, MOS65xx, Mips, PPC, RISCV, Sparc, SystemZ, TMS320C64x, Web Assembly, X86, X86_64, XCore) + bindings. (bloaty 依赖)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1251 lines
39 KiB

/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|* *|
|*Assembly Writer Source Fragment *|
|* *|
|* Automatically generated file, do not edit! *|
|* *|
\*===----------------------------------------------------------------------===*/
/* Capstone Disassembly Engine */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 */
#include <stdio.h> // debug
#include <inttypes.h>
/// printInstruction - This method is automatically generated by tablegen
/// from the instruction set description.
static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
{
static const uint32_t OpInfo[] = {
0U, // PHI
0U, // INLINEASM
0U, // CFI_INSTRUCTION
0U, // EH_LABEL
0U, // GC_LABEL
0U, // KILL
0U, // EXTRACT_SUBREG
0U, // INSERT_SUBREG
0U, // IMPLICIT_DEF
0U, // SUBREG_TO_REG
0U, // COPY_TO_REGCLASS
2452U, // DBG_VALUE
0U, // REG_SEQUENCE
0U, // COPY
2445U, // BUNDLE
2462U, // LIFETIME_START
2432U, // LIFETIME_END
0U, // STACKMAP
0U, // PATCHPOINT
4688U, // ADDCCri
4688U, // ADDCCrr
5925U, // ADDCri
5925U, // ADDCrr
4772U, // ADDEri
4772U, // ADDErr
4786U, // ADDXC
4678U, // ADDXCCC
4808U, // ADDXri
4808U, // ADDXrr
4808U, // ADDri
4808U, // ADDrr
74166U, // ADJCALLSTACKDOWN
74185U, // ADJCALLSTACKUP
5497U, // ALIGNADDR
5127U, // ALIGNADDRL
4695U, // ANDCCri
4695U, // ANDCCrr
4718U, // ANDNCCri
4718U, // ANDNCCrr
5182U, // ANDNri
5182U, // ANDNrr
5182U, // ANDXNrr
4876U, // ANDXri
4876U, // ANDXrr
4876U, // ANDri
4876U, // ANDrr
4502U, // ARRAY16
4255U, // ARRAY32
4526U, // ARRAY8
0U, // ATOMIC_LOAD_ADD_32
0U, // ATOMIC_LOAD_ADD_64
0U, // ATOMIC_LOAD_AND_32
0U, // ATOMIC_LOAD_AND_64
0U, // ATOMIC_LOAD_MAX_32
0U, // ATOMIC_LOAD_MAX_64
0U, // ATOMIC_LOAD_MIN_32
0U, // ATOMIC_LOAD_MIN_64
0U, // ATOMIC_LOAD_NAND_32
0U, // ATOMIC_LOAD_NAND_64
0U, // ATOMIC_LOAD_OR_32
0U, // ATOMIC_LOAD_OR_64
0U, // ATOMIC_LOAD_SUB_32
0U, // ATOMIC_LOAD_SUB_64
0U, // ATOMIC_LOAD_UMAX_32
0U, // ATOMIC_LOAD_UMAX_64
0U, // ATOMIC_LOAD_UMIN_32
0U, // ATOMIC_LOAD_UMIN_64
0U, // ATOMIC_LOAD_XOR_32
0U, // ATOMIC_LOAD_XOR_64
0U, // ATOMIC_SWAP_64
74271U, // BA
1194492U, // BCOND
1260028U, // BCONDA
17659U, // BINDri
17659U, // BINDrr
5065U, // BMASK
145915U, // BPFCC
211451U, // BPFCCA
276987U, // BPFCCANT
342523U, // BPFCCNT
2106465U, // BPGEZapn
2105838U, // BPGEZapt
2106532U, // BPGEZnapn
2107288U, // BPGEZnapt
2106489U, // BPGZapn
2105856U, // BPGZapt
2106552U, // BPGZnapn
2107384U, // BPGZnapt
1456636U, // BPICC
473596U, // BPICCA
539132U, // BPICCANT
604668U, // BPICCNT
2106477U, // BPLEZapn
2105847U, // BPLEZapt
2106542U, // BPLEZnapn
2107337U, // BPLEZnapt
2106500U, // BPLZapn
2105864U, // BPLZapt
2106561U, // BPLZnapn
2107428U, // BPLZnapt
2106511U, // BPNZapn
2105872U, // BPNZapt
2106570U, // BPNZnapn
2107472U, // BPNZnapt
1718780U, // BPXCC
735740U, // BPXCCA
801276U, // BPXCCANT
866812U, // BPXCCNT
2106522U, // BPZapn
2105880U, // BPZapt
2106579U, // BPZnapn
2107505U, // BPZnapt
4983U, // BSHUFFLE
74742U, // CALL
17398U, // CALLri
17398U, // CALLrr
924148U, // CASXrr
924129U, // CASrr
74001U, // CMASK16
73833U, // CMASK32
74150U, // CMASK8
2106607U, // CMPri
2106607U, // CMPrr
4332U, // EDGE16
5081U, // EDGE16L
5198U, // EDGE16LN
5165U, // EDGE16N
4164U, // EDGE32
5072U, // EDGE32L
5188U, // EDGE32LN
5156U, // EDGE32N
4511U, // EDGE8
5090U, // EDGE8L
5208U, // EDGE8LN
5174U, // EDGE8N
1053516U, // FABSD
1054031U, // FABSQ
1054376U, // FABSS
4813U, // FADDD
5383U, // FADDQ
5645U, // FADDS
4648U, // FALIGNADATA
4875U, // FAND
4112U, // FANDNOT1
5544U, // FANDNOT1S
4271U, // FANDNOT2
5591U, // FANDNOT2S
5677U, // FANDS
1194491U, // FBCOND
1260027U, // FBCONDA
4394U, // FCHKSM16
2106173U, // FCMPD
4413U, // FCMPEQ16
4226U, // FCMPEQ32
4432U, // FCMPGT16
4245U, // FCMPGT32
4340U, // FCMPLE16
4172U, // FCMPLE32
4350U, // FCMPNE16
4182U, // FCMPNE32
2106696U, // FCMPQ
2107005U, // FCMPS
4960U, // FDIVD
5475U, // FDIVQ
5815U, // FDIVS
5405U, // FDMULQ
1053620U, // FDTOI
1053996U, // FDTOQ
1054305U, // FDTOS
1054536U, // FDTOX
1053464U, // FEXPAND
4820U, // FHADDD
5652U, // FHADDS
4800U, // FHSUBD
5637U, // FHSUBS
1053473U, // FITOD
1054003U, // FITOQ
1054312U, // FITOS
6300484U, // FLCMPD
6301316U, // FLCMPS
2606U, // FLUSHW
4404U, // FMEAN16
1053543U, // FMOVD
1006078U, // FMOVD_FCC
23484926U, // FMOVD_ICC
23747070U, // FMOVD_XCC
1054058U, // FMOVQ
1006102U, // FMOVQ_FCC
23484950U, // FMOVQ_ICC
23747094U, // FMOVQ_XCC
6018U, // FMOVRGEZD
6029U, // FMOVRGEZQ
6056U, // FMOVRGEZS
6116U, // FMOVRGZD
6126U, // FMOVRGZQ
6150U, // FMOVRGZS
6067U, // FMOVRLEZD
6078U, // FMOVRLEZQ
6105U, // FMOVRLEZS
6160U, // FMOVRLZD
6170U, // FMOVRLZQ
6194U, // FMOVRLZS
6204U, // FMOVRNZD
6214U, // FMOVRNZQ
6238U, // FMOVRNZS
6009U, // FMOVRZD
6248U, // FMOVRZQ
6269U, // FMOVRZS
1054398U, // FMOVS
1006114U, // FMOVS_FCC
23484962U, // FMOVS_ICC
23747106U, // FMOVS_XCC
4490U, // FMUL8SUX16
4465U, // FMUL8ULX16
4442U, // FMUL8X16
5098U, // FMUL8X16AL
5849U, // FMUL8X16AU
4860U, // FMULD
4477U, // FMULD8SUX16
4452U, // FMULD8ULX16
5413U, // FMULQ
5714U, // FMULS
4837U, // FNADDD
5669U, // FNADDS
4881U, // FNAND
5684U, // FNANDS
1053429U, // FNEGD
1053974U, // FNEGQ
1054283U, // FNEGS
4828U, // FNHADDD
5660U, // FNHADDS
4828U, // FNMULD
5660U, // FNMULS
5513U, // FNOR
5778U, // FNORS
1052698U, // FNOT1
1054131U, // FNOT1S
1052857U, // FNOT2
1054178U, // FNOT2S
5660U, // FNSMULD
74625U, // FONE
75324U, // FONES
5508U, // FOR
4129U, // FORNOT1
5563U, // FORNOT1S
4288U, // FORNOT2
5610U, // FORNOT2S
5772U, // FORS
1052936U, // FPACK16
4192U, // FPACK32
1054507U, // FPACKFIX
4323U, // FPADD16
5620U, // FPADD16S
4155U, // FPADD32
5573U, // FPADD32S
4297U, // FPADD64
4974U, // FPMERGE
4314U, // FPSUB16
4580U, // FPSUB16S
4146U, // FPSUB32
4570U, // FPSUB32S
1053480U, // FQTOD
1053627U, // FQTOI
1054319U, // FQTOS
1054552U, // FQTOX
4423U, // FSLAS16
4236U, // FSLAS32
4378U, // FSLL16
4210U, // FSLL32
4867U, // FSMULD
1053523U, // FSQRTD
1054038U, // FSQRTQ
1054383U, // FSQRTS
4306U, // FSRA16
4138U, // FSRA32
1052681U, // FSRC1
1054112U, // FSRC1S
1052840U, // FSRC2
1054159U, // FSRC2S
4386U, // FSRL16
4218U, // FSRL32
1053487U, // FSTOD
1053634U, // FSTOI
1054010U, // FSTOQ
1054559U, // FSTOX
4793U, // FSUBD
5376U, // FSUBQ
5630U, // FSUBS
5519U, // FXNOR
5785U, // FXNORS
5526U, // FXOR
5793U, // FXORS
1053494U, // FXTOD
1054017U, // FXTOQ
1054326U, // FXTOS
74984U, // FZERO
75353U, // FZEROS
24584U, // GETPCX
1078273U, // JMPLri
1078273U, // JMPLrr
1997243U, // LDDFri
1997243U, // LDDFrr
1997249U, // LDFri
1997249U, // LDFrr
1997275U, // LDQFri
1997275U, // LDQFrr
1997229U, // LDSBri
1997229U, // LDSBrr
1997254U, // LDSHri
1997254U, // LDSHrr
1997287U, // LDSWri
1997287U, // LDSWrr
1997236U, // LDUBri
1997236U, // LDUBrr
1997261U, // LDUHri
1997261U, // LDUHrr
1997294U, // LDXri
1997294U, // LDXrr
1997249U, // LDri
1997249U, // LDrr
33480U, // LEAX_ADDri
33480U, // LEA_ADDri
1054405U, // LZCNT
75121U, // MEMBARi
1054543U, // MOVDTOX
1006122U, // MOVFCCri
1006122U, // MOVFCCrr
23484970U, // MOVICCri
23484970U, // MOVICCrr
6047U, // MOVRGEZri
6047U, // MOVRGEZrr
6142U, // MOVRGZri
6142U, // MOVRGZrr
6096U, // MOVRLEZri
6096U, // MOVRLEZrr
6186U, // MOVRLZri
6186U, // MOVRLZrr
6230U, // MOVRNZri
6230U, // MOVRNZrr
6262U, // MOVRRZri
6262U, // MOVRRZrr
1054469U, // MOVSTOSW
1054479U, // MOVSTOUW
1054543U, // MOVWTOS
23747114U, // MOVXCCri
23747114U, // MOVXCCrr
1054543U, // MOVXTOD
5954U, // MULXri
5954U, // MULXrr
2578U, // NOP
4735U, // ORCCri
4735U, // ORCCrr
4726U, // ORNCCri
4726U, // ORNCCrr
5339U, // ORNri
5339U, // ORNrr
5339U, // ORXNrr
5509U, // ORXri
5509U, // ORXrr
5509U, // ORri
5509U, // ORrr
5836U, // PDIST
5344U, // PDISTN
1053356U, // POPCrr
73729U, // RDY
4999U, // RESTOREri
4999U, // RESTORErr
76132U, // RET
76141U, // RETL
18131U, // RETTri
18131U, // RETTrr
5008U, // SAVEri
5008U, // SAVErr
4748U, // SDIVCCri
4748U, // SDIVCCrr
5995U, // SDIVXri
5995U, // SDIVXrr
5861U, // SDIVri
5861U, // SDIVrr
2182U, // SELECT_CC_DFP_FCC
2293U, // SELECT_CC_DFP_ICC
2238U, // SELECT_CC_FP_FCC
2349U, // SELECT_CC_FP_ICC
2265U, // SELECT_CC_Int_FCC
2376U, // SELECT_CC_Int_ICC
2210U, // SELECT_CC_QFP_FCC
2321U, // SELECT_CC_QFP_ICC
1053595U, // SETHIXi
1053595U, // SETHIi
2569U, // SHUTDOWN
2564U, // SIAM
5941U, // SLLXri
5941U, // SLLXrr
5116U, // SLLri
5116U, // SLLrr
4702U, // SMULCCri
4702U, // SMULCCrr
5144U, // SMULri
5144U, // SMULrr
5913U, // SRAXri
5913U, // SRAXrr
4643U, // SRAri
4643U, // SRArr
5947U, // SRLXri
5947U, // SRLXrr
5139U, // SRLri
5139U, // SRLrr
2588U, // STBAR
37428U, // STBri
37428U, // STBrr
37723U, // STDFri
37723U, // STDFrr
38607U, // STFri
38607U, // STFrr
37782U, // STHri
37782U, // STHrr
38238U, // STQFri
38238U, // STQFrr
38758U, // STXri
38758U, // STXrr
38607U, // STri
38607U, // STrr
4671U, // SUBCCri
4671U, // SUBCCrr
5919U, // SUBCri
5919U, // SUBCrr
4764U, // SUBEri
4764U, // SUBErr
4665U, // SUBXri
4665U, // SUBXrr
4665U, // SUBri
4665U, // SUBrr
1997268U, // SWAPri
1997268U, // SWAPrr
2422U, // TA3
2427U, // TA5
5883U, // TADDCCTVri
5883U, // TADDCCTVrr
4687U, // TADDCCri
4687U, // TADDCCrr
9873960U, // TICCri
9873960U, // TICCrr
37753544U, // TLS_ADDXrr
37753544U, // TLS_ADDrr
2106358U, // TLS_CALL
39746030U, // TLS_LDXrr
39745985U, // TLS_LDrr
5873U, // TSUBCCTVri
5873U, // TSUBCCTVrr
4670U, // TSUBCCri
4670U, // TSUBCCrr
10136104U, // TXCCri
10136104U, // TXCCrr
4756U, // UDIVCCri
4756U, // UDIVCCrr
6002U, // UDIVXri
6002U, // UDIVXrr
5867U, // UDIVri
5867U, // UDIVrr
4710U, // UMULCCri
4710U, // UMULCCrr
5026U, // UMULXHI
5150U, // UMULri
5150U, // UMULrr
74996U, // UNIMP
6300477U, // V9FCMPD
6300397U, // V9FCMPED
6300942U, // V9FCMPEQ
6301251U, // V9FCMPES
6301000U, // V9FCMPQ
6301309U, // V9FCMPS
47614U, // V9FMOVD_FCC
47638U, // V9FMOVQ_FCC
47650U, // V9FMOVS_FCC
47658U, // V9MOVFCCri
47658U, // V9MOVFCCrr
14689692U, // WRYri
14689692U, // WRYrr
5953U, // XMULX
5035U, // XMULXHI
4733U, // XNORCCri
4733U, // XNORCCrr
5520U, // XNORXrr
5520U, // XNORri
5520U, // XNORrr
4741U, // XORCCri
4741U, // XORCCrr
5527U, // XORXri
5527U, // XORXrr
5527U, // XORri
5527U, // XORrr
0U
};
#ifndef CAPSTONE_DIET
static char AsmStrs[] = {
/* 0 */ 'r', 'd', 32, '%', 'y', ',', 32, 0,
/* 8 */ 'f', 's', 'r', 'c', '1', 32, 0,
/* 15 */ 'f', 'a', 'n', 'd', 'n', 'o', 't', '1', 32, 0,
/* 25 */ 'f', 'n', 'o', 't', '1', 32, 0,
/* 32 */ 'f', 'o', 'r', 'n', 'o', 't', '1', 32, 0,
/* 41 */ 'f', 's', 'r', 'a', '3', '2', 32, 0,
/* 49 */ 'f', 'p', 's', 'u', 'b', '3', '2', 32, 0,
/* 58 */ 'f', 'p', 'a', 'd', 'd', '3', '2', 32, 0,
/* 67 */ 'e', 'd', 'g', 'e', '3', '2', 32, 0,
/* 75 */ 'f', 'c', 'm', 'p', 'l', 'e', '3', '2', 32, 0,
/* 85 */ 'f', 'c', 'm', 'p', 'n', 'e', '3', '2', 32, 0,
/* 95 */ 'f', 'p', 'a', 'c', 'k', '3', '2', 32, 0,
/* 104 */ 'c', 'm', 'a', 's', 'k', '3', '2', 32, 0,
/* 113 */ 'f', 's', 'l', 'l', '3', '2', 32, 0,
/* 121 */ 'f', 's', 'r', 'l', '3', '2', 32, 0,
/* 129 */ 'f', 'c', 'm', 'p', 'e', 'q', '3', '2', 32, 0,
/* 139 */ 'f', 's', 'l', 'a', 's', '3', '2', 32, 0,
/* 148 */ 'f', 'c', 'm', 'p', 'g', 't', '3', '2', 32, 0,
/* 158 */ 'a', 'r', 'r', 'a', 'y', '3', '2', 32, 0,
/* 167 */ 'f', 's', 'r', 'c', '2', 32, 0,
/* 174 */ 'f', 'a', 'n', 'd', 'n', 'o', 't', '2', 32, 0,
/* 184 */ 'f', 'n', 'o', 't', '2', 32, 0,
/* 191 */ 'f', 'o', 'r', 'n', 'o', 't', '2', 32, 0,
/* 200 */ 'f', 'p', 'a', 'd', 'd', '6', '4', 32, 0,
/* 209 */ 'f', 's', 'r', 'a', '1', '6', 32, 0,
/* 217 */ 'f', 'p', 's', 'u', 'b', '1', '6', 32, 0,
/* 226 */ 'f', 'p', 'a', 'd', 'd', '1', '6', 32, 0,
/* 235 */ 'e', 'd', 'g', 'e', '1', '6', 32, 0,
/* 243 */ 'f', 'c', 'm', 'p', 'l', 'e', '1', '6', 32, 0,
/* 253 */ 'f', 'c', 'm', 'p', 'n', 'e', '1', '6', 32, 0,
/* 263 */ 'f', 'p', 'a', 'c', 'k', '1', '6', 32, 0,
/* 272 */ 'c', 'm', 'a', 's', 'k', '1', '6', 32, 0,
/* 281 */ 'f', 's', 'l', 'l', '1', '6', 32, 0,
/* 289 */ 'f', 's', 'r', 'l', '1', '6', 32, 0,
/* 297 */ 'f', 'c', 'h', 'k', 's', 'm', '1', '6', 32, 0,
/* 307 */ 'f', 'm', 'e', 'a', 'n', '1', '6', 32, 0,
/* 316 */ 'f', 'c', 'm', 'p', 'e', 'q', '1', '6', 32, 0,
/* 326 */ 'f', 's', 'l', 'a', 's', '1', '6', 32, 0,
/* 335 */ 'f', 'c', 'm', 'p', 'g', 't', '1', '6', 32, 0,
/* 345 */ 'f', 'm', 'u', 'l', '8', 'x', '1', '6', 32, 0,
/* 355 */ 'f', 'm', 'u', 'l', 'd', '8', 'u', 'l', 'x', '1', '6', 32, 0,
/* 368 */ 'f', 'm', 'u', 'l', '8', 'u', 'l', 'x', '1', '6', 32, 0,
/* 380 */ 'f', 'm', 'u', 'l', 'd', '8', 's', 'u', 'x', '1', '6', 32, 0,
/* 393 */ 'f', 'm', 'u', 'l', '8', 's', 'u', 'x', '1', '6', 32, 0,
/* 405 */ 'a', 'r', 'r', 'a', 'y', '1', '6', 32, 0,
/* 414 */ 'e', 'd', 'g', 'e', '8', 32, 0,
/* 421 */ 'c', 'm', 'a', 's', 'k', '8', 32, 0,
/* 429 */ 'a', 'r', 'r', 'a', 'y', '8', 32, 0,
/* 437 */ '!', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'D', 'O', 'W', 'N', 32, 0,
/* 456 */ '!', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'U', 'P', 32, 0,
/* 473 */ 'f', 'p', 's', 'u', 'b', '3', '2', 'S', 32, 0,
/* 483 */ 'f', 'p', 's', 'u', 'b', '1', '6', 'S', 32, 0,
/* 493 */ 'b', 'r', 'g', 'e', 'z', ',', 'a', 32, 0,
/* 502 */ 'b', 'r', 'l', 'e', 'z', ',', 'a', 32, 0,
/* 511 */ 'b', 'r', 'g', 'z', ',', 'a', 32, 0,
/* 519 */ 'b', 'r', 'l', 'z', ',', 'a', 32, 0,
/* 527 */ 'b', 'r', 'n', 'z', ',', 'a', 32, 0,
/* 535 */ 'b', 'r', 'z', ',', 'a', 32, 0,
/* 542 */ 'b', 'a', 32, 0,
/* 546 */ 's', 'r', 'a', 32, 0,
/* 551 */ 'f', 'a', 'l', 'i', 'g', 'n', 'd', 'a', 't', 'a', 32, 0,
/* 563 */ 's', 't', 'b', 32, 0,
/* 568 */ 's', 'u', 'b', 32, 0,
/* 573 */ 't', 's', 'u', 'b', 'c', 'c', 32, 0,
/* 581 */ 'a', 'd', 'd', 'x', 'c', 'c', 'c', 32, 0,
/* 590 */ 't', 'a', 'd', 'd', 'c', 'c', 32, 0,
/* 598 */ 'a', 'n', 'd', 'c', 'c', 32, 0,
/* 605 */ 's', 'm', 'u', 'l', 'c', 'c', 32, 0,
/* 613 */ 'u', 'm', 'u', 'l', 'c', 'c', 32, 0,
/* 621 */ 'a', 'n', 'd', 'n', 'c', 'c', 32, 0,
/* 629 */ 'o', 'r', 'n', 'c', 'c', 32, 0,
/* 636 */ 'x', 'n', 'o', 'r', 'c', 'c', 32, 0,
/* 644 */ 'x', 'o', 'r', 'c', 'c', 32, 0,
/* 651 */ 's', 'd', 'i', 'v', 'c', 'c', 32, 0,
/* 659 */ 'u', 'd', 'i', 'v', 'c', 'c', 32, 0,
/* 667 */ 's', 'u', 'b', 'x', 'c', 'c', 32, 0,
/* 675 */ 'a', 'd', 'd', 'x', 'c', 'c', 32, 0,
/* 683 */ 'p', 'o', 'p', 'c', 32, 0,
/* 689 */ 'a', 'd', 'd', 'x', 'c', 32, 0,
/* 696 */ 'f', 's', 'u', 'b', 'd', 32, 0,
/* 703 */ 'f', 'h', 's', 'u', 'b', 'd', 32, 0,
/* 711 */ 'a', 'd', 'd', 32, 0,
/* 716 */ 'f', 'a', 'd', 'd', 'd', 32, 0,
/* 723 */ 'f', 'h', 'a', 'd', 'd', 'd', 32, 0,
/* 731 */ 'f', 'n', 'h', 'a', 'd', 'd', 'd', 32, 0,
/* 740 */ 'f', 'n', 'a', 'd', 'd', 'd', 32, 0,
/* 748 */ 'f', 'c', 'm', 'p', 'e', 'd', 32, 0,
/* 756 */ 'f', 'n', 'e', 'g', 'd', 32, 0,
/* 763 */ 'f', 'm', 'u', 'l', 'd', 32, 0,
/* 770 */ 'f', 's', 'm', 'u', 'l', 'd', 32, 0,
/* 778 */ 'f', 'a', 'n', 'd', 32, 0,
/* 784 */ 'f', 'n', 'a', 'n', 'd', 32, 0,
/* 791 */ 'f', 'e', 'x', 'p', 'a', 'n', 'd', 32, 0,
/* 800 */ 'f', 'i', 't', 'o', 'd', 32, 0,
/* 807 */ 'f', 'q', 't', 'o', 'd', 32, 0,
/* 814 */ 'f', 's', 't', 'o', 'd', 32, 0,
/* 821 */ 'f', 'x', 't', 'o', 'd', 32, 0,
/* 828 */ 'f', 'c', 'm', 'p', 'd', 32, 0,
/* 835 */ 'f', 'l', 'c', 'm', 'p', 'd', 32, 0,
/* 843 */ 'f', 'a', 'b', 's', 'd', 32, 0,
/* 850 */ 'f', 's', 'q', 'r', 't', 'd', 32, 0,
/* 858 */ 's', 't', 'd', 32, 0,
/* 863 */ 'f', 'd', 'i', 'v', 'd', 32, 0,
/* 870 */ 'f', 'm', 'o', 'v', 'd', 32, 0,
/* 877 */ 'f', 'p', 'm', 'e', 'r', 'g', 'e', 32, 0,
/* 886 */ 'b', 's', 'h', 'u', 'f', 'f', 'l', 'e', 32, 0,
/* 896 */ 'f', 'o', 'n', 'e', 32, 0,
/* 902 */ 'r', 'e', 's', 't', 'o', 'r', 'e', 32, 0,
/* 911 */ 's', 'a', 'v', 'e', 32, 0,
/* 917 */ 's', 't', 'h', 32, 0,
/* 922 */ 's', 'e', 't', 'h', 'i', 32, 0,
/* 929 */ 'u', 'm', 'u', 'l', 'x', 'h', 'i', 32, 0,
/* 938 */ 'x', 'm', 'u', 'l', 'x', 'h', 'i', 32, 0,
/* 947 */ 'f', 'd', 't', 'o', 'i', 32, 0,
/* 954 */ 'f', 'q', 't', 'o', 'i', 32, 0,
/* 961 */ 'f', 's', 't', 'o', 'i', 32, 0,
/* 968 */ 'b', 'm', 'a', 's', 'k', 32, 0,
/* 975 */ 'e', 'd', 'g', 'e', '3', '2', 'l', 32, 0,
/* 984 */ 'e', 'd', 'g', 'e', '1', '6', 'l', 32, 0,
/* 993 */ 'e', 'd', 'g', 'e', '8', 'l', 32, 0,
/* 1001 */ 'f', 'm', 'u', 'l', '8', 'x', '1', '6', 'a', 'l', 32, 0,
/* 1013 */ 'c', 'a', 'l', 'l', 32, 0,
/* 1019 */ 's', 'l', 'l', 32, 0,
/* 1024 */ 'j', 'm', 'p', 'l', 32, 0,
/* 1030 */ 'a', 'l', 'i', 'g', 'n', 'a', 'd', 'd', 'r', 'l', 32, 0,
/* 1042 */ 's', 'r', 'l', 32, 0,
/* 1047 */ 's', 'm', 'u', 'l', 32, 0,
/* 1053 */ 'u', 'm', 'u', 'l', 32, 0,
/* 1059 */ 'e', 'd', 'g', 'e', '3', '2', 'n', 32, 0,
/* 1068 */ 'e', 'd', 'g', 'e', '1', '6', 'n', 32, 0,
/* 1077 */ 'e', 'd', 'g', 'e', '8', 'n', 32, 0,
/* 1085 */ 'a', 'n', 'd', 'n', 32, 0,
/* 1091 */ 'e', 'd', 'g', 'e', '3', '2', 'l', 'n', 32, 0,
/* 1101 */ 'e', 'd', 'g', 'e', '1', '6', 'l', 'n', 32, 0,
/* 1111 */ 'e', 'd', 'g', 'e', '8', 'l', 'n', 32, 0,
/* 1120 */ 'b', 'r', 'g', 'e', 'z', ',', 'a', ',', 'p', 'n', 32, 0,
/* 1132 */ 'b', 'r', 'l', 'e', 'z', ',', 'a', ',', 'p', 'n', 32, 0,
/* 1144 */ 'b', 'r', 'g', 'z', ',', 'a', ',', 'p', 'n', 32, 0,
/* 1155 */ 'b', 'r', 'l', 'z', ',', 'a', ',', 'p', 'n', 32, 0,
/* 1166 */ 'b', 'r', 'n', 'z', ',', 'a', ',', 'p', 'n', 32, 0,
/* 1177 */ 'b', 'r', 'z', ',', 'a', ',', 'p', 'n', 32, 0,
/* 1187 */ 'b', 'r', 'g', 'e', 'z', ',', 'p', 'n', 32, 0,
/* 1197 */ 'b', 'r', 'l', 'e', 'z', ',', 'p', 'n', 32, 0,
/* 1207 */ 'b', 'r', 'g', 'z', ',', 'p', 'n', 32, 0,
/* 1216 */ 'b', 'r', 'l', 'z', ',', 'p', 'n', 32, 0,
/* 1225 */ 'b', 'r', 'n', 'z', ',', 'p', 'n', 32, 0,
/* 1234 */ 'b', 'r', 'z', ',', 'p', 'n', 32, 0,
/* 1242 */ 'o', 'r', 'n', 32, 0,
/* 1247 */ 'p', 'd', 'i', 's', 't', 'n', 32, 0,
/* 1255 */ 'f', 'z', 'e', 'r', 'o', 32, 0,
/* 1262 */ 'c', 'm', 'p', 32, 0,
/* 1267 */ 'u', 'n', 'i', 'm', 'p', 32, 0,
/* 1274 */ 'j', 'm', 'p', 32, 0,
/* 1279 */ 'f', 's', 'u', 'b', 'q', 32, 0,
/* 1286 */ 'f', 'a', 'd', 'd', 'q', 32, 0,
/* 1293 */ 'f', 'c', 'm', 'p', 'e', 'q', 32, 0,
/* 1301 */ 'f', 'n', 'e', 'g', 'q', 32, 0,
/* 1308 */ 'f', 'd', 'm', 'u', 'l', 'q', 32, 0,
/* 1316 */ 'f', 'm', 'u', 'l', 'q', 32, 0,
/* 1323 */ 'f', 'd', 't', 'o', 'q', 32, 0,
/* 1330 */ 'f', 'i', 't', 'o', 'q', 32, 0,
/* 1337 */ 'f', 's', 't', 'o', 'q', 32, 0,
/* 1344 */ 'f', 'x', 't', 'o', 'q', 32, 0,
/* 1351 */ 'f', 'c', 'm', 'p', 'q', 32, 0,
/* 1358 */ 'f', 'a', 'b', 's', 'q', 32, 0,
/* 1365 */ 'f', 's', 'q', 'r', 't', 'q', 32, 0,
/* 1373 */ 's', 't', 'q', 32, 0,
/* 1378 */ 'f', 'd', 'i', 'v', 'q', 32, 0,
/* 1385 */ 'f', 'm', 'o', 'v', 'q', 32, 0,
/* 1392 */ 'm', 'e', 'm', 'b', 'a', 'r', 32, 0,
/* 1400 */ 'a', 'l', 'i', 'g', 'n', 'a', 'd', 'd', 'r', 32, 0,
/* 1411 */ 'f', 'o', 'r', 32, 0,
/* 1416 */ 'f', 'n', 'o', 'r', 32, 0,
/* 1422 */ 'f', 'x', 'n', 'o', 'r', 32, 0,
/* 1429 */ 'f', 'x', 'o', 'r', 32, 0,
/* 1435 */ 'w', 'r', 32, 0,
/* 1439 */ 'f', 's', 'r', 'c', '1', 's', 32, 0,
/* 1447 */ 'f', 'a', 'n', 'd', 'n', 'o', 't', '1', 's', 32, 0,
/* 1458 */ 'f', 'n', 'o', 't', '1', 's', 32, 0,
/* 1466 */ 'f', 'o', 'r', 'n', 'o', 't', '1', 's', 32, 0,
/* 1476 */ 'f', 'p', 'a', 'd', 'd', '3', '2', 's', 32, 0,
/* 1486 */ 'f', 's', 'r', 'c', '2', 's', 32, 0,
/* 1494 */ 'f', 'a', 'n', 'd', 'n', 'o', 't', '2', 's', 32, 0,
/* 1505 */ 'f', 'n', 'o', 't', '2', 's', 32, 0,
/* 1513 */ 'f', 'o', 'r', 'n', 'o', 't', '2', 's', 32, 0,
/* 1523 */ 'f', 'p', 'a', 'd', 'd', '1', '6', 's', 32, 0,
/* 1533 */ 'f', 's', 'u', 'b', 's', 32, 0,
/* 1540 */ 'f', 'h', 's', 'u', 'b', 's', 32, 0,
/* 1548 */ 'f', 'a', 'd', 'd', 's', 32, 0,
/* 1555 */ 'f', 'h', 'a', 'd', 'd', 's', 32, 0,
/* 1563 */ 'f', 'n', 'h', 'a', 'd', 'd', 's', 32, 0,
/* 1572 */ 'f', 'n', 'a', 'd', 'd', 's', 32, 0,
/* 1580 */ 'f', 'a', 'n', 'd', 's', 32, 0,
/* 1587 */ 'f', 'n', 'a', 'n', 'd', 's', 32, 0,
/* 1595 */ 'f', 'o', 'n', 'e', 's', 32, 0,
/* 1602 */ 'f', 'c', 'm', 'p', 'e', 's', 32, 0,
/* 1610 */ 'f', 'n', 'e', 'g', 's', 32, 0,
/* 1617 */ 'f', 'm', 'u', 'l', 's', 32, 0,
/* 1624 */ 'f', 'z', 'e', 'r', 'o', 's', 32, 0,
/* 1632 */ 'f', 'd', 't', 'o', 's', 32, 0,
/* 1639 */ 'f', 'i', 't', 'o', 's', 32, 0,
/* 1646 */ 'f', 'q', 't', 'o', 's', 32, 0,
/* 1653 */ 'f', 'x', 't', 'o', 's', 32, 0,
/* 1660 */ 'f', 'c', 'm', 'p', 's', 32, 0,
/* 1667 */ 'f', 'l', 'c', 'm', 'p', 's', 32, 0,
/* 1675 */ 'f', 'o', 'r', 's', 32, 0,
/* 1681 */ 'f', 'n', 'o', 'r', 's', 32, 0,
/* 1688 */ 'f', 'x', 'n', 'o', 'r', 's', 32, 0,
/* 1696 */ 'f', 'x', 'o', 'r', 's', 32, 0,
/* 1703 */ 'f', 'a', 'b', 's', 's', 32, 0,
/* 1710 */ 'f', 's', 'q', 'r', 't', 's', 32, 0,
/* 1718 */ 'f', 'd', 'i', 'v', 's', 32, 0,
/* 1725 */ 'f', 'm', 'o', 'v', 's', 32, 0,
/* 1732 */ 'l', 'z', 'c', 'n', 't', 32, 0,
/* 1739 */ 'p', 'd', 'i', 's', 't', 32, 0,
/* 1746 */ 'r', 'e', 't', 't', 32, 0,
/* 1752 */ 'f', 'm', 'u', 'l', '8', 'x', '1', '6', 'a', 'u', 32, 0,
/* 1764 */ 's', 'd', 'i', 'v', 32, 0,
/* 1770 */ 'u', 'd', 'i', 'v', 32, 0,
/* 1776 */ 't', 's', 'u', 'b', 'c', 'c', 't', 'v', 32, 0,
/* 1786 */ 't', 'a', 'd', 'd', 'c', 'c', 't', 'v', 32, 0,
/* 1796 */ 'm', 'o', 'v', 's', 't', 'o', 's', 'w', 32, 0,
/* 1806 */ 'm', 'o', 'v', 's', 't', 'o', 'u', 'w', 32, 0,
/* 1816 */ 's', 'r', 'a', 'x', 32, 0,
/* 1822 */ 's', 'u', 'b', 'x', 32, 0,
/* 1828 */ 'a', 'd', 'd', 'x', 32, 0,
/* 1834 */ 'f', 'p', 'a', 'c', 'k', 'f', 'i', 'x', 32, 0,
/* 1844 */ 's', 'l', 'l', 'x', 32, 0,
/* 1850 */ 's', 'r', 'l', 'x', 32, 0,
/* 1856 */ 'x', 'm', 'u', 'l', 'x', 32, 0,
/* 1863 */ 'f', 'd', 't', 'o', 'x', 32, 0,
/* 1870 */ 'm', 'o', 'v', 'd', 't', 'o', 'x', 32, 0,
/* 1879 */ 'f', 'q', 't', 'o', 'x', 32, 0,
/* 1886 */ 'f', 's', 't', 'o', 'x', 32, 0,
/* 1893 */ 's', 't', 'x', 32, 0,
/* 1898 */ 's', 'd', 'i', 'v', 'x', 32, 0,
/* 1905 */ 'u', 'd', 'i', 'v', 'x', 32, 0,
/* 1912 */ 'f', 'm', 'o', 'v', 'r', 'd', 'z', 32, 0,
/* 1921 */ 'f', 'm', 'o', 'v', 'r', 'd', 'g', 'e', 'z', 32, 0,
/* 1932 */ 'f', 'm', 'o', 'v', 'r', 'q', 'g', 'e', 'z', 32, 0,
/* 1943 */ 'b', 'r', 'g', 'e', 'z', 32, 0,
/* 1950 */ 'm', 'o', 'v', 'r', 'g', 'e', 'z', 32, 0,
/* 1959 */ 'f', 'm', 'o', 'v', 'r', 's', 'g', 'e', 'z', 32, 0,
/* 1970 */ 'f', 'm', 'o', 'v', 'r', 'd', 'l', 'e', 'z', 32, 0,
/* 1981 */ 'f', 'm', 'o', 'v', 'r', 'q', 'l', 'e', 'z', 32, 0,
/* 1992 */ 'b', 'r', 'l', 'e', 'z', 32, 0,
/* 1999 */ 'm', 'o', 'v', 'r', 'l', 'e', 'z', 32, 0,
/* 2008 */ 'f', 'm', 'o', 'v', 'r', 's', 'l', 'e', 'z', 32, 0,
/* 2019 */ 'f', 'm', 'o', 'v', 'r', 'd', 'g', 'z', 32, 0,
/* 2029 */ 'f', 'm', 'o', 'v', 'r', 'q', 'g', 'z', 32, 0,
/* 2039 */ 'b', 'r', 'g', 'z', 32, 0,
/* 2045 */ 'm', 'o', 'v', 'r', 'g', 'z', 32, 0,
/* 2053 */ 'f', 'm', 'o', 'v', 'r', 's', 'g', 'z', 32, 0,
/* 2063 */ 'f', 'm', 'o', 'v', 'r', 'd', 'l', 'z', 32, 0,
/* 2073 */ 'f', 'm', 'o', 'v', 'r', 'q', 'l', 'z', 32, 0,
/* 2083 */ 'b', 'r', 'l', 'z', 32, 0,
/* 2089 */ 'm', 'o', 'v', 'r', 'l', 'z', 32, 0,
/* 2097 */ 'f', 'm', 'o', 'v', 'r', 's', 'l', 'z', 32, 0,
/* 2107 */ 'f', 'm', 'o', 'v', 'r', 'd', 'n', 'z', 32, 0,
/* 2117 */ 'f', 'm', 'o', 'v', 'r', 'q', 'n', 'z', 32, 0,
/* 2127 */ 'b', 'r', 'n', 'z', 32, 0,
/* 2133 */ 'm', 'o', 'v', 'r', 'n', 'z', 32, 0,
/* 2141 */ 'f', 'm', 'o', 'v', 'r', 's', 'n', 'z', 32, 0,
/* 2151 */ 'f', 'm', 'o', 'v', 'r', 'q', 'z', 32, 0,
/* 2160 */ 'b', 'r', 'z', 32, 0,
/* 2165 */ 'm', 'o', 'v', 'r', 'z', 32, 0,
/* 2172 */ 'f', 'm', 'o', 'v', 'r', 's', 'z', 32, 0,
/* 2181 */ ';', 32, 'S', 'E', 'L', 'E', 'C', 'T', '_', 'C', 'C', '_', 'D', 'F', 'P', '_', 'F', 'C', 'C', 32, 'P', 'S', 'E', 'U', 'D', 'O', '!', 0,
/* 2209 */ ';', 32, 'S', 'E', 'L', 'E', 'C', 'T', '_', 'C', 'C', '_', 'Q', 'F', 'P', '_', 'F', 'C', 'C', 32, 'P', 'S', 'E', 'U', 'D', 'O', '!', 0,
/* 2237 */ ';', 32, 'S', 'E', 'L', 'E', 'C', 'T', '_', 'C', 'C', '_', 'F', 'P', '_', 'F', 'C', 'C', 32, 'P', 'S', 'E', 'U', 'D', 'O', '!', 0,
/* 2264 */ ';', 32, 'S', 'E', 'L', 'E', 'C', 'T', '_', 'C', 'C', '_', 'I', 'n', 't', '_', 'F', 'C', 'C', 32, 'P', 'S', 'E', 'U', 'D', 'O', '!', 0,
/* 2292 */ ';', 32, 'S', 'E', 'L', 'E', 'C', 'T', '_', 'C', 'C', '_', 'D', 'F', 'P', '_', 'I', 'C', 'C', 32, 'P', 'S', 'E', 'U', 'D', 'O', '!', 0,
/* 2320 */ ';', 32, 'S', 'E', 'L', 'E', 'C', 'T', '_', 'C', 'C', '_', 'Q', 'F', 'P', '_', 'I', 'C', 'C', 32, 'P', 'S', 'E', 'U', 'D', 'O', '!', 0,
/* 2348 */ ';', 32, 'S', 'E', 'L', 'E', 'C', 'T', '_', 'C', 'C', '_', 'F', 'P', '_', 'I', 'C', 'C', 32, 'P', 'S', 'E', 'U', 'D', 'O', '!', 0,
/* 2375 */ ';', 32, 'S', 'E', 'L', 'E', 'C', 'T', '_', 'C', 'C', '_', 'I', 'n', 't', '_', 'I', 'C', 'C', 32, 'P', 'S', 'E', 'U', 'D', 'O', '!', 0,
/* 2403 */ 'j', 'm', 'p', 32, '%', 'i', '7', '+', 0,
/* 2412 */ 'j', 'm', 'p', 32, '%', 'o', '7', '+', 0,
/* 2421 */ 't', 'a', 32, '3', 0,
/* 2426 */ 't', 'a', 32, '5', 0,
/* 2431 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
/* 2444 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
/* 2451 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
/* 2461 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
/* 2476 */ 'l', 'd', 's', 'b', 32, '[', 0,
/* 2483 */ 'l', 'd', 'u', 'b', 32, '[', 0,
/* 2490 */ 'l', 'd', 'd', 32, '[', 0,
/* 2496 */ 'l', 'd', 32, '[', 0,
/* 2501 */ 'l', 'd', 's', 'h', 32, '[', 0,
/* 2508 */ 'l', 'd', 'u', 'h', 32, '[', 0,
/* 2515 */ 's', 'w', 'a', 'p', 32, '[', 0,
/* 2522 */ 'l', 'd', 'q', 32, '[', 0,
/* 2528 */ 'c', 'a', 's', 32, '[', 0,
/* 2534 */ 'l', 'd', 's', 'w', 32, '[', 0,
/* 2541 */ 'l', 'd', 'x', 32, '[', 0,
/* 2547 */ 'c', 'a', 's', 'x', 32, '[', 0,
/* 2554 */ 'f', 'b', 0,
/* 2557 */ 'f', 'm', 'o', 'v', 'd', 0,
/* 2563 */ 's', 'i', 'a', 'm', 0,
/* 2568 */ 's', 'h', 'u', 't', 'd', 'o', 'w', 'n', 0,
/* 2577 */ 'n', 'o', 'p', 0,
/* 2581 */ 'f', 'm', 'o', 'v', 'q', 0,
/* 2587 */ 's', 't', 'b', 'a', 'r', 0,
/* 2593 */ 'f', 'm', 'o', 'v', 's', 0,
/* 2599 */ 't', 0,
/* 2601 */ 'm', 'o', 'v', 0,
/* 2605 */ 'f', 'l', 'u', 's', 'h', 'w', 0,
};
#endif
// Emit the opcode for the instruction.
uint32_t Bits = OpInfo[MCInst_getOpcode(MI)];
#ifndef CAPSTONE_DIET
// assert(Bits != 0 && "Cannot print this instruction.");
SStream_concat(O, "%s", AsmStrs+(Bits & 4095)-1);
#endif
// Fragment 0 encoded into 4 bits for 12 unique commands.
// printf("Frag-0: %u\n", (Bits >> 12) & 15);
switch ((Bits >> 12) & 15) {
default: // unreachable.
case 0:
// DBG_VALUE, BUNDLE, LIFETIME_START, LIFETIME_END, FLUSHW, NOP, SELECT_C...
return;
break;
case 1:
// ADDCCri, ADDCCrr, ADDCri, ADDCrr, ADDEri, ADDErr, ADDXC, ADDXCCC, ADDX...
printOperand(MI, 1, O);
break;
case 2:
// ADJCALLSTACKDOWN, ADJCALLSTACKUP, BA, BPGEZapn, BPGEZapt, BPGEZnapn, B...
printOperand(MI, 0, O);
break;
case 3:
// BCOND, BCONDA, BPFCC, BPFCCA, BPFCCANT, BPFCCNT, BPICC, BPICCA, BPICCA...
printCCOperand(MI, 1, O);
break;
case 4:
// BINDri, BINDrr, CALLri, CALLrr, RETTri, RETTrr
printMemOperand(MI, 0, O, NULL);
return;
break;
case 5:
// FMOVD_FCC, FMOVD_ICC, FMOVD_XCC, FMOVQ_FCC, FMOVQ_ICC, FMOVQ_XCC, FMOV...
printCCOperand(MI, 3, O);
break;
case 6:
// GETPCX
printGetPCX(MI, 0, O);
return;
break;
case 7:
// JMPLri, JMPLrr, LDDFri, LDDFrr, LDFri, LDFrr, LDQFri, LDQFrr, LDSBri, ...
printMemOperand(MI, 1, O, NULL);
break;
case 8:
// LEAX_ADDri, LEA_ADDri
printMemOperand(MI, 1, O, "arith");
SStream_concat(O, "%s", ", ");
printOperand(MI, 0, O);
return;
break;
case 9:
// STBri, STBrr, STDFri, STDFrr, STFri, STFrr, STHri, STHrr, STQFri, STQF...
printOperand(MI, 2, O);
SStream_concat(O, "%s", ", [");
printMemOperand(MI, 0, O, NULL);
SStream_concat(O, "%s", "]");
return;
break;
case 10:
// TICCri, TICCrr, TXCCri, TXCCrr
printCCOperand(MI, 2, O);
break;
case 11:
// V9FMOVD_FCC, V9FMOVQ_FCC, V9FMOVS_FCC, V9MOVFCCri, V9MOVFCCrr
printCCOperand(MI, 4, O);
SStream_concat(O, "%s", " ");
printOperand(MI, 1, O);
SStream_concat(O, "%s", ", ");
printOperand(MI, 2, O);
SStream_concat(O, "%s", ", ");
printOperand(MI, 0, O);
return;
break;
}
// Fragment 1 encoded into 4 bits for 16 unique commands.
// printf("Frag-1: %u\n", (Bits >> 16) & 15);
switch ((Bits >> 16) & 15) {
default: // unreachable.
case 0:
// ADDCCri, ADDCCrr, ADDCri, ADDCrr, ADDEri, ADDErr, ADDXC, ADDXCCC, ADDX...
SStream_concat(O, "%s", ", ");
break;
case 1:
// ADJCALLSTACKDOWN, ADJCALLSTACKUP, BA, CALL, CMASK16, CMASK32, CMASK8, ...
return;
break;
case 2:
// BCOND, BPFCC, FBCOND
SStream_concat(O, "%s", " ");
break;
case 3:
// BCONDA, BPFCCA, FBCONDA
SStream_concat(O, "%s", ",a ");
break;
case 4:
// BPFCCANT
SStream_concat(O, "%s", ",a,pn ");
printOperand(MI, 2, O);
SStream_concat(O, "%s", ", ");
printOperand(MI, 0, O);
return;
break;
case 5:
// BPFCCNT
SStream_concat(O, "%s", ",pn ");
printOperand(MI, 2, O);
SStream_concat(O, "%s", ", ");
printOperand(MI, 0, O);
return;
break;
case 6:
// BPICC, FMOVD_ICC, FMOVQ_ICC, FMOVS_ICC, MOVICCri, MOVICCrr, TICCri, TI...
SStream_concat(O, "%s", " %icc, ");
break;
case 7:
// BPICCA
SStream_concat(O, "%s", ",a %icc, ");
printOperand(MI, 0, O);
return;
break;
case 8:
// BPICCANT
SStream_concat(O, "%s", ",a,pn %icc, ");
printOperand(MI, 0, O);
return;
break;
case 9:
// BPICCNT
SStream_concat(O, "%s", ",pn %icc, ");
printOperand(MI, 0, O);
return;
break;
case 10:
// BPXCC, FMOVD_XCC, FMOVQ_XCC, FMOVS_XCC, MOVXCCri, MOVXCCrr, TXCCri, TX...
SStream_concat(O, "%s", " %xcc, ");
break;
case 11:
// BPXCCA
SStream_concat(O, "%s", ",a %xcc, ");
printOperand(MI, 0, O);
return;
break;
case 12:
// BPXCCANT
SStream_concat(O, "%s", ",a,pn %xcc, ");
printOperand(MI, 0, O);
return;
break;
case 13:
// BPXCCNT
SStream_concat(O, "%s", ",pn %xcc, ");
printOperand(MI, 0, O);
return;
break;
case 14:
// CASXrr, CASrr, LDDFri, LDDFrr, LDFri, LDFrr, LDQFri, LDQFrr, LDSBri, L...
SStream_concat(O, "%s", "], ");
break;
case 15:
// FMOVD_FCC, FMOVQ_FCC, FMOVS_FCC, MOVFCCri, MOVFCCrr
SStream_concat(O, "%s", " %fcc0, ");
printOperand(MI, 1, O);
SStream_concat(O, "%s", ", ");
printOperand(MI, 0, O);
return;
break;
}
// Fragment 2 encoded into 2 bits for 3 unique commands.
// printf("Frag-2: %u\n", (Bits >> 20) & 3);
switch ((Bits >> 20) & 3) {
default: // unreachable.
case 0:
// ADDCCri, ADDCCrr, ADDCri, ADDCrr, ADDEri, ADDErr, ADDXC, ADDXCCC, ADDX...
printOperand(MI, 2, O);
SStream_concat(O, "%s", ", ");
printOperand(MI, 0, O);
break;
case 1:
// BCOND, BCONDA, BPICC, BPXCC, FABSD, FABSQ, FABSS, FBCOND, FBCONDA, FDT...
printOperand(MI, 0, O);
break;
case 2:
// BPGEZapn, BPGEZapt, BPGEZnapn, BPGEZnapt, BPGZapn, BPGZapt, BPGZnapn, ...
printOperand(MI, 1, O);
break;
}
// Fragment 3 encoded into 2 bits for 4 unique commands.
// printf("Frag-3: %u\n", (Bits >> 22) & 3);
switch ((Bits >> 22) & 3) {
default: // unreachable.
case 0:
// ADDCCri, ADDCCrr, ADDCri, ADDCrr, ADDEri, ADDErr, ADDXC, ADDXCCC, ADDX...
return;
break;
case 1:
// FLCMPD, FLCMPS, FMOVD_ICC, FMOVD_XCC, FMOVQ_ICC, FMOVQ_XCC, FMOVS_ICC,...
SStream_concat(O, "%s", ", ");
break;
case 2:
// TICCri, TICCrr, TXCCri, TXCCrr
SStream_concat(O, "%s", " + ");
printOperand(MI, 1, O);
return;
break;
case 3:
// WRYri, WRYrr
SStream_concat(O, "%s", ", %y");
return;
break;
}
// Fragment 4 encoded into 2 bits for 3 unique commands.
// printf("Frag-4: %u\n", (Bits >> 24) & 3);
switch ((Bits >> 24) & 3) {
default: // unreachable.
case 0:
// FLCMPD, FLCMPS, V9FCMPD, V9FCMPED, V9FCMPEQ, V9FCMPES, V9FCMPQ, V9FCMP...
printOperand(MI, 2, O);
return;
break;
case 1:
// FMOVD_ICC, FMOVD_XCC, FMOVQ_ICC, FMOVQ_XCC, FMOVS_ICC, FMOVS_XCC, MOVI...
printOperand(MI, 0, O);
return;
break;
case 2:
// TLS_ADDXrr, TLS_ADDrr, TLS_LDXrr, TLS_LDrr
printOperand(MI, 3, O);
return;
break;
}
}
/// getRegisterName - This method is automatically generated by tblgen
/// from the register set description. This returns the assembler name
/// for the specified register.
static const char *getRegisterName(unsigned RegNo)
{
// assert(RegNo && RegNo < 119 && "Invalid register number!");
#ifndef CAPSTONE_DIET
static const char AsmStrs[] = {
/* 0 */ 'f', '1', '0', 0,
/* 4 */ 'f', '2', '0', 0,
/* 8 */ 'f', '3', '0', 0,
/* 12 */ 'f', '4', '0', 0,
/* 16 */ 'f', '5', '0', 0,
/* 20 */ 'f', '6', '0', 0,
/* 24 */ 'f', 'c', 'c', '0', 0,
/* 29 */ 'f', '0', 0,
/* 32 */ 'g', '0', 0,
/* 35 */ 'i', '0', 0,
/* 38 */ 'l', '0', 0,
/* 41 */ 'o', '0', 0,
/* 44 */ 'f', '1', '1', 0,
/* 48 */ 'f', '2', '1', 0,
/* 52 */ 'f', '3', '1', 0,
/* 56 */ 'f', 'c', 'c', '1', 0,
/* 61 */ 'f', '1', 0,
/* 64 */ 'g', '1', 0,
/* 67 */ 'i', '1', 0,
/* 70 */ 'l', '1', 0,
/* 73 */ 'o', '1', 0,
/* 76 */ 'f', '1', '2', 0,
/* 80 */ 'f', '2', '2', 0,
/* 84 */ 'f', '3', '2', 0,
/* 88 */ 'f', '4', '2', 0,
/* 92 */ 'f', '5', '2', 0,
/* 96 */ 'f', '6', '2', 0,
/* 100 */ 'f', 'c', 'c', '2', 0,
/* 105 */ 'f', '2', 0,
/* 108 */ 'g', '2', 0,
/* 111 */ 'i', '2', 0,
/* 114 */ 'l', '2', 0,
/* 117 */ 'o', '2', 0,
/* 120 */ 'f', '1', '3', 0,
/* 124 */ 'f', '2', '3', 0,
/* 128 */ 'f', 'c', 'c', '3', 0,
/* 133 */ 'f', '3', 0,
/* 136 */ 'g', '3', 0,
/* 139 */ 'i', '3', 0,
/* 142 */ 'l', '3', 0,
/* 145 */ 'o', '3', 0,
/* 148 */ 'f', '1', '4', 0,
/* 152 */ 'f', '2', '4', 0,
/* 156 */ 'f', '3', '4', 0,
/* 160 */ 'f', '4', '4', 0,
/* 164 */ 'f', '5', '4', 0,
/* 168 */ 'f', '4', 0,
/* 171 */ 'g', '4', 0,
/* 174 */ 'i', '4', 0,
/* 177 */ 'l', '4', 0,
/* 180 */ 'o', '4', 0,
/* 183 */ 'f', '1', '5', 0,
/* 187 */ 'f', '2', '5', 0,
/* 191 */ 'f', '5', 0,
/* 194 */ 'g', '5', 0,
/* 197 */ 'i', '5', 0,
/* 200 */ 'l', '5', 0,
/* 203 */ 'o', '5', 0,
/* 206 */ 'f', '1', '6', 0,
/* 210 */ 'f', '2', '6', 0,
/* 214 */ 'f', '3', '6', 0,
/* 218 */ 'f', '4', '6', 0,
/* 222 */ 'f', '5', '6', 0,
/* 226 */ 'f', '6', 0,
/* 229 */ 'g', '6', 0,
/* 232 */ 'l', '6', 0,
/* 235 */ 'f', '1', '7', 0,
/* 239 */ 'f', '2', '7', 0,
/* 243 */ 'f', '7', 0,
/* 246 */ 'g', '7', 0,
/* 249 */ 'i', '7', 0,
/* 252 */ 'l', '7', 0,
/* 255 */ 'o', '7', 0,
/* 258 */ 'f', '1', '8', 0,
/* 262 */ 'f', '2', '8', 0,
/* 266 */ 'f', '3', '8', 0,
/* 270 */ 'f', '4', '8', 0,
/* 274 */ 'f', '5', '8', 0,
/* 278 */ 'f', '8', 0,
/* 281 */ 'f', '1', '9', 0,
/* 285 */ 'f', '2', '9', 0,
/* 289 */ 'f', '9', 0,
/* 292 */ 'i', 'c', 'c', 0,
/* 296 */ 'f', 'p', 0,
/* 299 */ 's', 'p', 0,
/* 302 */ 'y', 0,
};
static const uint32_t RegAsmOffset[] = {
292, 302, 29, 105, 168, 226, 278, 0, 76, 148, 206, 258, 4, 80,
152, 210, 262, 8, 84, 156, 214, 266, 12, 88, 160, 218, 270, 16,
92, 164, 222, 274, 20, 96, 29, 61, 105, 133, 168, 191, 226, 243,
278, 289, 0, 44, 76, 120, 148, 183, 206, 235, 258, 281, 4, 48,
80, 124, 152, 187, 210, 239, 262, 285, 8, 52, 24, 56, 100, 128,
32, 64, 108, 136, 171, 194, 229, 246, 35, 67, 111, 139, 174, 197,
296, 249, 38, 70, 114, 142, 177, 200, 232, 252, 41, 73, 117, 145,
180, 203, 299, 255, 29, 168, 278, 76, 206, 4, 152, 262, 84, 214,
12, 160, 270, 92, 222, 20,
};
//int i;
//for (i = 0; i < sizeof(RegAsmOffset)/4; i++)
// printf("%s = %u\n", AsmStrs+RegAsmOffset[i], i + 1);
//printf("*************************\n");
return AsmStrs+RegAsmOffset[RegNo-1];
#else
return NULL;
#endif
}
#ifdef PRINT_ALIAS_INSTR
#undef PRINT_ALIAS_INSTR
static char *printAliasInstr(MCInst *MI, SStream *OS, void *info)
{
#define GETREGCLASS_CONTAIN(_class, _reg) MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, _class), MCOperand_getReg(MCInst_getOperand(MI, _reg)))
const char *AsmString;
char *tmp, *AsmMnem, *AsmOps, *c;
switch (MCInst_getOpcode(MI)) {
default: return NULL;
case SP_RESTORErr:
if (MCInst_getNumOperands(MI) == 3 &&
MCOperand_getReg(MCInst_getOperand(MI, 0)) == SP_G0 &&
MCOperand_getReg(MCInst_getOperand(MI, 1)) == SP_G0 &&
MCOperand_getReg(MCInst_getOperand(MI, 2)) == SP_G0) {
// (RESTORErr G0, G0, G0)
AsmString = "restore";
break;
}
return NULL;
case SP_RET:
if (MCInst_getNumOperands(MI) == 1 &&
MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
MCOperand_getImm(MCInst_getOperand(MI, 0)) == 8) {
// (RET 8)
AsmString = "ret";
break;
}
return NULL;
case SP_RETL:
if (MCInst_getNumOperands(MI) == 1 &&
MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
MCOperand_getImm(MCInst_getOperand(MI, 0)) == 8) {
// (RETL 8)
AsmString = "retl";
break;
}
return NULL;
}
tmp = cs_strdup(AsmString);
AsmMnem = tmp;
AsmOps = strchr(tmp, ' ');
if (AsmOps) {
*AsmOps = '\0';
AsmOps += 1;
}
SStream_concat(OS, "%s", AsmMnem);
if (AsmOps) {
SStream_concat(OS, "\t");
for (c = AsmOps; *c; c++) {
if (*c == '$') {
c += 1;
printOperand(MI, *c - 1, OS);
} else {
SStream_concat(OS, "%c", *c);
}
}
}
return tmp;
}
#endif // PRINT_ALIAS_INSTR