hexcore-capstone 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +26 -0
- package/README.md +191 -0
- package/binding.gyp +168 -0
- package/deps/capstone/LEB128.h +38 -0
- package/deps/capstone/MCDisassembler.h +14 -0
- package/deps/capstone/MCFixedLenDisassembler.h +32 -0
- package/deps/capstone/MCInst.c +270 -0
- package/deps/capstone/MCInst.h +165 -0
- package/deps/capstone/MCInstrDesc.c +41 -0
- package/deps/capstone/MCInstrDesc.h +167 -0
- package/deps/capstone/MCRegisterInfo.c +151 -0
- package/deps/capstone/MCRegisterInfo.h +116 -0
- package/deps/capstone/Mapping.c +254 -0
- package/deps/capstone/Mapping.h +174 -0
- package/deps/capstone/MathExtras.h +442 -0
- package/deps/capstone/SStream.c +181 -0
- package/deps/capstone/SStream.h +40 -0
- package/deps/capstone/arch/AArch64/AArch64AddressingModes.h +945 -0
- package/deps/capstone/arch/AArch64/AArch64BaseInfo.c +77 -0
- package/deps/capstone/arch/AArch64/AArch64BaseInfo.h +585 -0
- package/deps/capstone/arch/AArch64/AArch64Disassembler.c +2280 -0
- package/deps/capstone/arch/AArch64/AArch64Disassembler.h +18 -0
- package/deps/capstone/arch/AArch64/AArch64GenAsmWriter.inc +26589 -0
- package/deps/capstone/arch/AArch64/AArch64GenDisassemblerTables.inc +27322 -0
- package/deps/capstone/arch/AArch64/AArch64GenInstrInfo.inc +13194 -0
- package/deps/capstone/arch/AArch64/AArch64GenRegisterInfo.inc +3814 -0
- package/deps/capstone/arch/AArch64/AArch64GenRegisterName.inc +714 -0
- package/deps/capstone/arch/AArch64/AArch64GenRegisterV.inc +673 -0
- package/deps/capstone/arch/AArch64/AArch64GenSubtargetInfo.inc +229 -0
- package/deps/capstone/arch/AArch64/AArch64GenSystemOperands.inc +2863 -0
- package/deps/capstone/arch/AArch64/AArch64GenSystemOperands_enum.inc +21 -0
- package/deps/capstone/arch/AArch64/AArch64InstPrinter.c +3029 -0
- package/deps/capstone/arch/AArch64/AArch64InstPrinter.h +28 -0
- package/deps/capstone/arch/AArch64/AArch64Mapping.c +883 -0
- package/deps/capstone/arch/AArch64/AArch64Mapping.h +43 -0
- package/deps/capstone/arch/AArch64/AArch64MappingInsn.inc +37790 -0
- package/deps/capstone/arch/AArch64/AArch64MappingInsnName.inc +1282 -0
- package/deps/capstone/arch/AArch64/AArch64MappingInsnOp.inc +26994 -0
- package/deps/capstone/arch/AArch64/AArch64Module.c +44 -0
- package/deps/capstone/arch/AArch64/AArch64Module.h +12 -0
- package/deps/capstone/arch/ARM/ARMAddressingModes.h +698 -0
- package/deps/capstone/arch/ARM/ARMBaseInfo.h +486 -0
- package/deps/capstone/arch/ARM/ARMDisassembler.c +5763 -0
- package/deps/capstone/arch/ARM/ARMDisassembler.h +18 -0
- package/deps/capstone/arch/ARM/ARMGenAsmWriter.inc +9545 -0
- package/deps/capstone/arch/ARM/ARMGenDisassemblerTables.inc +15185 -0
- package/deps/capstone/arch/ARM/ARMGenInstrInfo.inc +6632 -0
- package/deps/capstone/arch/ARM/ARMGenRegisterInfo.inc +2102 -0
- package/deps/capstone/arch/ARM/ARMGenRegisterName.inc +231 -0
- package/deps/capstone/arch/ARM/ARMGenRegisterName_digit.inc +231 -0
- package/deps/capstone/arch/ARM/ARMGenSubtargetInfo.inc +162 -0
- package/deps/capstone/arch/ARM/ARMGenSystemRegister.inc +270 -0
- package/deps/capstone/arch/ARM/ARMInstPrinter.c +3364 -0
- package/deps/capstone/arch/ARM/ARMInstPrinter.h +43 -0
- package/deps/capstone/arch/ARM/ARMMapping.c +551 -0
- package/deps/capstone/arch/ARM/ARMMapping.h +40 -0
- package/deps/capstone/arch/ARM/ARMMappingInsn.inc +18772 -0
- package/deps/capstone/arch/ARM/ARMMappingInsnName.inc +475 -0
- package/deps/capstone/arch/ARM/ARMMappingInsnOp.inc +10729 -0
- package/deps/capstone/arch/ARM/ARMModule.c +63 -0
- package/deps/capstone/arch/ARM/ARMModule.h +12 -0
- package/deps/capstone/arch/BPF/BPFConstants.h +88 -0
- package/deps/capstone/arch/BPF/BPFDisassembler.c +464 -0
- package/deps/capstone/arch/BPF/BPFDisassembler.h +27 -0
- package/deps/capstone/arch/BPF/BPFInstPrinter.c +285 -0
- package/deps/capstone/arch/BPF/BPFInstPrinter.h +16 -0
- package/deps/capstone/arch/BPF/BPFMapping.c +513 -0
- package/deps/capstone/arch/BPF/BPFMapping.h +21 -0
- package/deps/capstone/arch/BPF/BPFModule.c +34 -0
- package/deps/capstone/arch/BPF/BPFModule.h +12 -0
- package/deps/capstone/arch/EVM/EVMDisassembler.c +379 -0
- package/deps/capstone/arch/EVM/EVMDisassembler.h +12 -0
- package/deps/capstone/arch/EVM/EVMInstPrinter.c +20 -0
- package/deps/capstone/arch/EVM/EVMInstPrinter.h +17 -0
- package/deps/capstone/arch/EVM/EVMMapping.c +344 -0
- package/deps/capstone/arch/EVM/EVMMapping.h +8 -0
- package/deps/capstone/arch/EVM/EVMMappingInsn.inc +259 -0
- package/deps/capstone/arch/EVM/EVMModule.c +33 -0
- package/deps/capstone/arch/EVM/EVMModule.h +12 -0
- package/deps/capstone/arch/M680X/M680XDisassembler.c +2307 -0
- package/deps/capstone/arch/M680X/M680XDisassembler.h +17 -0
- package/deps/capstone/arch/M680X/M680XDisassemblerInternals.h +57 -0
- package/deps/capstone/arch/M680X/M680XInstPrinter.c +360 -0
- package/deps/capstone/arch/M680X/M680XInstPrinter.h +25 -0
- package/deps/capstone/arch/M680X/M680XModule.c +77 -0
- package/deps/capstone/arch/M680X/M680XModule.h +12 -0
- package/deps/capstone/arch/M680X/cpu12.inc +335 -0
- package/deps/capstone/arch/M680X/hcs08.inc +60 -0
- package/deps/capstone/arch/M680X/hd6301.inc +15 -0
- package/deps/capstone/arch/M680X/hd6309.inc +259 -0
- package/deps/capstone/arch/M680X/insn_props.inc +367 -0
- package/deps/capstone/arch/M680X/m6800.inc +277 -0
- package/deps/capstone/arch/M680X/m6801.inc +39 -0
- package/deps/capstone/arch/M680X/m6805.inc +277 -0
- package/deps/capstone/arch/M680X/m6808.inc +91 -0
- package/deps/capstone/arch/M680X/m6809.inc +352 -0
- package/deps/capstone/arch/M680X/m6811.inc +105 -0
- package/deps/capstone/arch/M68K/M68KDisassembler.c +3668 -0
- package/deps/capstone/arch/M68K/M68KDisassembler.h +30 -0
- package/deps/capstone/arch/M68K/M68KInstPrinter.c +387 -0
- package/deps/capstone/arch/M68K/M68KInstPrinter.h +21 -0
- package/deps/capstone/arch/M68K/M68KInstructionTable.inc +65540 -0
- package/deps/capstone/arch/M68K/M68KModule.c +42 -0
- package/deps/capstone/arch/M68K/M68KModule.h +12 -0
- package/deps/capstone/arch/MOS65XX/MOS65XXDisassembler.c +544 -0
- package/deps/capstone/arch/MOS65XX/MOS65XXDisassembler.h +22 -0
- package/deps/capstone/arch/MOS65XX/MOS65XXDisassemblerInternals.h +23 -0
- package/deps/capstone/arch/MOS65XX/MOS65XXModule.c +79 -0
- package/deps/capstone/arch/MOS65XX/MOS65XXModule.h +12 -0
- package/deps/capstone/arch/MOS65XX/instruction_info.inc +106 -0
- package/deps/capstone/arch/MOS65XX/m6502.inc +256 -0
- package/deps/capstone/arch/MOS65XX/m65816.inc +256 -0
- package/deps/capstone/arch/MOS65XX/m65c02.inc +256 -0
- package/deps/capstone/arch/MOS65XX/mw65c02.inc +256 -0
- package/deps/capstone/arch/Mips/MipsDisassembler.c +1794 -0
- package/deps/capstone/arch/Mips/MipsDisassembler.h +16 -0
- package/deps/capstone/arch/Mips/MipsGenAsmWriter.inc +5725 -0
- package/deps/capstone/arch/Mips/MipsGenDisassemblerTables.inc +6942 -0
- package/deps/capstone/arch/Mips/MipsGenInstrInfo.inc +1805 -0
- package/deps/capstone/arch/Mips/MipsGenRegisterInfo.inc +1679 -0
- package/deps/capstone/arch/Mips/MipsGenSubtargetInfo.inc +52 -0
- package/deps/capstone/arch/Mips/MipsInstPrinter.c +424 -0
- package/deps/capstone/arch/Mips/MipsInstPrinter.h +25 -0
- package/deps/capstone/arch/Mips/MipsMapping.c +1070 -0
- package/deps/capstone/arch/Mips/MipsMapping.h +25 -0
- package/deps/capstone/arch/Mips/MipsMappingInsn.inc +9315 -0
- package/deps/capstone/arch/Mips/MipsModule.c +52 -0
- package/deps/capstone/arch/Mips/MipsModule.h +12 -0
- package/deps/capstone/arch/PowerPC/PPCDisassembler.c +627 -0
- package/deps/capstone/arch/PowerPC/PPCDisassembler.h +17 -0
- package/deps/capstone/arch/PowerPC/PPCGenAsmWriter.inc +11451 -0
- package/deps/capstone/arch/PowerPC/PPCGenDisassemblerTables.inc +6886 -0
- package/deps/capstone/arch/PowerPC/PPCGenInstrInfo.inc +4772 -0
- package/deps/capstone/arch/PowerPC/PPCGenRegisterInfo.inc +1122 -0
- package/deps/capstone/arch/PowerPC/PPCGenRegisterName.inc +278 -0
- package/deps/capstone/arch/PowerPC/PPCGenSubtargetInfo.inc +90 -0
- package/deps/capstone/arch/PowerPC/PPCInstPrinter.c +1238 -0
- package/deps/capstone/arch/PowerPC/PPCInstPrinter.h +15 -0
- package/deps/capstone/arch/PowerPC/PPCMapping.c +570 -0
- package/deps/capstone/arch/PowerPC/PPCMapping.h +40 -0
- package/deps/capstone/arch/PowerPC/PPCMappingInsn.inc +13220 -0
- package/deps/capstone/arch/PowerPC/PPCMappingInsnName.inc +1731 -0
- package/deps/capstone/arch/PowerPC/PPCModule.c +45 -0
- package/deps/capstone/arch/PowerPC/PPCModule.h +12 -0
- package/deps/capstone/arch/PowerPC/PPCPredicates.h +62 -0
- package/deps/capstone/arch/RISCV/RISCVBaseInfo.h +106 -0
- package/deps/capstone/arch/RISCV/RISCVDisassembler.c +433 -0
- package/deps/capstone/arch/RISCV/RISCVDisassembler.h +18 -0
- package/deps/capstone/arch/RISCV/RISCVGenAsmWriter.inc +2651 -0
- package/deps/capstone/arch/RISCV/RISCVGenDisassemblerTables.inc +1776 -0
- package/deps/capstone/arch/RISCV/RISCVGenInsnNameMaps.inc +275 -0
- package/deps/capstone/arch/RISCV/RISCVGenInstrInfo.inc +470 -0
- package/deps/capstone/arch/RISCV/RISCVGenRegisterInfo.inc +426 -0
- package/deps/capstone/arch/RISCV/RISCVGenSubtargetInfo.inc +33 -0
- package/deps/capstone/arch/RISCV/RISCVInstPrinter.c +447 -0
- package/deps/capstone/arch/RISCV/RISCVInstPrinter.h +24 -0
- package/deps/capstone/arch/RISCV/RISCVMapping.c +366 -0
- package/deps/capstone/arch/RISCV/RISCVMapping.h +22 -0
- package/deps/capstone/arch/RISCV/RISCVMappingInsn.inc +1635 -0
- package/deps/capstone/arch/RISCV/RISCVModule.c +42 -0
- package/deps/capstone/arch/RISCV/RISCVModule.h +12 -0
- package/deps/capstone/arch/SH/SHDisassembler.c +2221 -0
- package/deps/capstone/arch/SH/SHDisassembler.h +19 -0
- package/deps/capstone/arch/SH/SHInsnTable.inc +66 -0
- package/deps/capstone/arch/SH/SHInstPrinter.c +438 -0
- package/deps/capstone/arch/SH/SHInstPrinter.h +23 -0
- package/deps/capstone/arch/SH/SHModule.c +39 -0
- package/deps/capstone/arch/SH/SHModule.h +12 -0
- package/deps/capstone/arch/SH/mktable.rb +390 -0
- package/deps/capstone/arch/Sparc/Sparc.h +63 -0
- package/deps/capstone/arch/Sparc/SparcDisassembler.c +500 -0
- package/deps/capstone/arch/Sparc/SparcDisassembler.h +17 -0
- package/deps/capstone/arch/Sparc/SparcGenAsmWriter.inc +5709 -0
- package/deps/capstone/arch/Sparc/SparcGenDisassemblerTables.inc +2028 -0
- package/deps/capstone/arch/Sparc/SparcGenInstrInfo.inc +514 -0
- package/deps/capstone/arch/Sparc/SparcGenRegisterInfo.inc +451 -0
- package/deps/capstone/arch/Sparc/SparcGenSubtargetInfo.inc +27 -0
- package/deps/capstone/arch/Sparc/SparcInstPrinter.c +446 -0
- package/deps/capstone/arch/Sparc/SparcInstPrinter.h +17 -0
- package/deps/capstone/arch/Sparc/SparcMapping.c +665 -0
- package/deps/capstone/arch/Sparc/SparcMapping.h +34 -0
- package/deps/capstone/arch/Sparc/SparcMappingInsn.inc +2643 -0
- package/deps/capstone/arch/Sparc/SparcModule.c +45 -0
- package/deps/capstone/arch/Sparc/SparcModule.h +12 -0
- package/deps/capstone/arch/SystemZ/SystemZDisassembler.c +484 -0
- package/deps/capstone/arch/SystemZ/SystemZDisassembler.h +17 -0
- package/deps/capstone/arch/SystemZ/SystemZGenAsmWriter.inc +11575 -0
- package/deps/capstone/arch/SystemZ/SystemZGenDisassemblerTables.inc +10262 -0
- package/deps/capstone/arch/SystemZ/SystemZGenInsnNameMaps.inc +2348 -0
- package/deps/capstone/arch/SystemZ/SystemZGenInstrInfo.inc +2820 -0
- package/deps/capstone/arch/SystemZ/SystemZGenRegisterInfo.inc +741 -0
- package/deps/capstone/arch/SystemZ/SystemZGenSubtargetInfo.inc +49 -0
- package/deps/capstone/arch/SystemZ/SystemZInstPrinter.c +433 -0
- package/deps/capstone/arch/SystemZ/SystemZInstPrinter.h +15 -0
- package/deps/capstone/arch/SystemZ/SystemZMCTargetDesc.c +195 -0
- package/deps/capstone/arch/SystemZ/SystemZMCTargetDesc.h +51 -0
- package/deps/capstone/arch/SystemZ/SystemZMapping.c +479 -0
- package/deps/capstone/arch/SystemZ/SystemZMapping.h +23 -0
- package/deps/capstone/arch/SystemZ/SystemZMappingInsn.inc +14175 -0
- package/deps/capstone/arch/SystemZ/SystemZModule.c +44 -0
- package/deps/capstone/arch/SystemZ/SystemZModule.h +12 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xDisassembler.c +628 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xDisassembler.h +19 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xGenAsmWriter.inc +684 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xGenDisassemblerTables.inc +1352 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xGenInstrInfo.inc +298 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xGenRegisterInfo.inc +277 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xInstPrinter.c +572 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xInstPrinter.h +15 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xMapping.c +1926 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xMapping.h +26 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xModule.c +39 -0
- package/deps/capstone/arch/TMS320C64x/TMS320C64xModule.h +12 -0
- package/deps/capstone/arch/TriCore/TriCore.td +134 -0
- package/deps/capstone/arch/TriCore/TriCoreCallingConv.td +61 -0
- package/deps/capstone/arch/TriCore/TriCoreDisassembler.c +1655 -0
- package/deps/capstone/arch/TriCore/TriCoreDisassembler.h +18 -0
- package/deps/capstone/arch/TriCore/TriCoreGenAsmWriter.inc +3691 -0
- package/deps/capstone/arch/TriCore/TriCoreGenCSFeatureName.inc +22 -0
- package/deps/capstone/arch/TriCore/TriCoreGenCSMappingInsn.inc +8938 -0
- package/deps/capstone/arch/TriCore/TriCoreGenCSMappingInsnName.inc +404 -0
- package/deps/capstone/arch/TriCore/TriCoreGenCSMappingInsnOp.inc +7994 -0
- package/deps/capstone/arch/TriCore/TriCoreGenCSOpGroup.inc +32 -0
- package/deps/capstone/arch/TriCore/TriCoreGenDisassemblerTables.inc +4044 -0
- package/deps/capstone/arch/TriCore/TriCoreGenInstrInfo.inc +2693 -0
- package/deps/capstone/arch/TriCore/TriCoreGenRegisterInfo.inc +295 -0
- package/deps/capstone/arch/TriCore/TriCoreGenSubtargetInfo.inc +40 -0
- package/deps/capstone/arch/TriCore/TriCoreInstPrinter.c +488 -0
- package/deps/capstone/arch/TriCore/TriCoreInstrFormats.td +773 -0
- package/deps/capstone/arch/TriCore/TriCoreInstrInfo.td +1873 -0
- package/deps/capstone/arch/TriCore/TriCoreLinkage.h +21 -0
- package/deps/capstone/arch/TriCore/TriCoreMapping.c +241 -0
- package/deps/capstone/arch/TriCore/TriCoreMapping.h +32 -0
- package/deps/capstone/arch/TriCore/TriCoreModule.c +44 -0
- package/deps/capstone/arch/TriCore/TriCoreModule.h +11 -0
- package/deps/capstone/arch/TriCore/TriCoreRegisterInfo.td +153 -0
- package/deps/capstone/arch/WASM/WASMDisassembler.c +1009 -0
- package/deps/capstone/arch/WASM/WASMDisassembler.h +12 -0
- package/deps/capstone/arch/WASM/WASMInstPrinter.c +47 -0
- package/deps/capstone/arch/WASM/WASMInstPrinter.h +18 -0
- package/deps/capstone/arch/WASM/WASMMapping.c +333 -0
- package/deps/capstone/arch/WASM/WASMMapping.h +9 -0
- package/deps/capstone/arch/WASM/WASMModule.c +33 -0
- package/deps/capstone/arch/WASM/WASMModule.h +12 -0
- package/deps/capstone/arch/X86/X86ATTInstPrinter.c +997 -0
- package/deps/capstone/arch/X86/X86BaseInfo.h +50 -0
- package/deps/capstone/arch/X86/X86Disassembler.c +1033 -0
- package/deps/capstone/arch/X86/X86Disassembler.h +28 -0
- package/deps/capstone/arch/X86/X86DisassemblerDecoder.c +2358 -0
- package/deps/capstone/arch/X86/X86DisassemblerDecoder.h +725 -0
- package/deps/capstone/arch/X86/X86DisassemblerDecoderCommon.h +483 -0
- package/deps/capstone/arch/X86/X86GenAsmWriter.inc +49199 -0
- package/deps/capstone/arch/X86/X86GenAsmWriter1.inc +33196 -0
- package/deps/capstone/arch/X86/X86GenAsmWriter1_reduce.inc +2531 -0
- package/deps/capstone/arch/X86/X86GenAsmWriter_reduce.inc +2855 -0
- package/deps/capstone/arch/X86/X86GenDisassemblerTables.inc +112961 -0
- package/deps/capstone/arch/X86/X86GenDisassemblerTables2.inc +102151 -0
- package/deps/capstone/arch/X86/X86GenDisassemblerTables_reduce.inc +28047 -0
- package/deps/capstone/arch/X86/X86GenDisassemblerTables_reduce2.inc +18827 -0
- package/deps/capstone/arch/X86/X86GenInstrInfo.inc +15158 -0
- package/deps/capstone/arch/X86/X86GenInstrInfo_reduce.inc +1564 -0
- package/deps/capstone/arch/X86/X86GenRegisterInfo.inc +1549 -0
- package/deps/capstone/arch/X86/X86GenRegisterName.inc +292 -0
- package/deps/capstone/arch/X86/X86GenRegisterName1.inc +291 -0
- package/deps/capstone/arch/X86/X86ImmSize.inc +335 -0
- package/deps/capstone/arch/X86/X86InstPrinter.h +26 -0
- package/deps/capstone/arch/X86/X86InstPrinterCommon.c +116 -0
- package/deps/capstone/arch/X86/X86InstPrinterCommon.h +16 -0
- package/deps/capstone/arch/X86/X86IntelInstPrinter.c +1061 -0
- package/deps/capstone/arch/X86/X86Lookup16.inc +16874 -0
- package/deps/capstone/arch/X86/X86Lookup16_reduce.inc +2308 -0
- package/deps/capstone/arch/X86/X86Mapping.c +2266 -0
- package/deps/capstone/arch/X86/X86Mapping.h +96 -0
- package/deps/capstone/arch/X86/X86MappingInsn.inc +105977 -0
- package/deps/capstone/arch/X86/X86MappingInsnName.inc +1527 -0
- package/deps/capstone/arch/X86/X86MappingInsnName_reduce.inc +348 -0
- package/deps/capstone/arch/X86/X86MappingInsnOp.inc +75700 -0
- package/deps/capstone/arch/X86/X86MappingInsnOp_reduce.inc +7729 -0
- package/deps/capstone/arch/X86/X86MappingInsn_reduce.inc +10819 -0
- package/deps/capstone/arch/X86/X86MappingReg.inc +280 -0
- package/deps/capstone/arch/X86/X86Module.c +94 -0
- package/deps/capstone/arch/X86/X86Module.h +12 -0
- package/deps/capstone/arch/XCore/XCoreDisassembler.c +794 -0
- package/deps/capstone/arch/XCore/XCoreDisassembler.h +17 -0
- package/deps/capstone/arch/XCore/XCoreGenAsmWriter.inc +772 -0
- package/deps/capstone/arch/XCore/XCoreGenDisassemblerTables.inc +853 -0
- package/deps/capstone/arch/XCore/XCoreGenInstrInfo.inc +267 -0
- package/deps/capstone/arch/XCore/XCoreGenRegisterInfo.inc +110 -0
- package/deps/capstone/arch/XCore/XCoreInstPrinter.c +250 -0
- package/deps/capstone/arch/XCore/XCoreInstPrinter.h +18 -0
- package/deps/capstone/arch/XCore/XCoreMapping.c +297 -0
- package/deps/capstone/arch/XCore/XCoreMapping.h +26 -0
- package/deps/capstone/arch/XCore/XCoreMappingInsn.inc +1287 -0
- package/deps/capstone/arch/XCore/XCoreModule.c +41 -0
- package/deps/capstone/arch/XCore/XCoreModule.h +12 -0
- package/deps/capstone/cs.c +1664 -0
- package/deps/capstone/cs_priv.h +101 -0
- package/deps/capstone/cs_simple_types.h +886 -0
- package/deps/capstone/include/capstone/arm.h +991 -0
- package/deps/capstone/include/capstone/arm64.h +3159 -0
- package/deps/capstone/include/capstone/bpf.h +209 -0
- package/deps/capstone/include/capstone/capstone.h +875 -0
- package/deps/capstone/include/capstone/evm.h +188 -0
- package/deps/capstone/include/capstone/m680x.h +537 -0
- package/deps/capstone/include/capstone/m68k.h +613 -0
- package/deps/capstone/include/capstone/mips.h +956 -0
- package/deps/capstone/include/capstone/mos65xx.h +204 -0
- package/deps/capstone/include/capstone/platform.h +122 -0
- package/deps/capstone/include/capstone/ppc.h +2108 -0
- package/deps/capstone/include/capstone/riscv.h +531 -0
- package/deps/capstone/include/capstone/sh.h +465 -0
- package/deps/capstone/include/capstone/sparc.h +520 -0
- package/deps/capstone/include/capstone/systemz.h +2601 -0
- package/deps/capstone/include/capstone/tms320c64x.h +359 -0
- package/deps/capstone/include/capstone/tricore.h +567 -0
- package/deps/capstone/include/capstone/wasm.h +250 -0
- package/deps/capstone/include/capstone/x86.h +1986 -0
- package/deps/capstone/include/capstone/xcore.h +235 -0
- package/deps/capstone/include/platform.h +110 -0
- package/deps/capstone/include/windowsce/intrin.h +12 -0
- package/deps/capstone/include/windowsce/stdint.h +133 -0
- package/deps/capstone/utils.c +140 -0
- package/deps/capstone/utils.h +54 -0
- package/index.d.ts +448 -0
- package/index.js +64 -0
- package/index.mjs +25 -0
- package/package.json +82 -0
- package/prebuilds/win32-x64/hexcore-capstone.node +0 -0
- package/src/capstone_wrapper.cpp +910 -0
- package/src/capstone_wrapper.h +147 -0
- package/src/disasm_async_worker.h +215 -0
- package/src/main.cpp +145 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* Capstone Disassembly Engine */
|
|
2
|
+
/* By Dang Hoang Vu <danghvu@gmail.com> 2013 */
|
|
3
|
+
|
|
4
|
+
#ifdef CAPSTONE_HAS_MIPS
|
|
5
|
+
|
|
6
|
+
#include "../../utils.h"
|
|
7
|
+
#include "../../MCRegisterInfo.h"
|
|
8
|
+
#include "MipsDisassembler.h"
|
|
9
|
+
#include "MipsInstPrinter.h"
|
|
10
|
+
#include "MipsMapping.h"
|
|
11
|
+
#include "MipsModule.h"
|
|
12
|
+
|
|
13
|
+
// Returns mode value with implied bits set
|
|
14
|
+
static cs_mode updated_mode(cs_mode mode)
|
|
15
|
+
{
|
|
16
|
+
if (mode & CS_MODE_MIPS32R6) {
|
|
17
|
+
mode |= CS_MODE_32;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return mode;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
cs_err Mips_global_init(cs_struct *ud)
|
|
24
|
+
{
|
|
25
|
+
MCRegisterInfo *mri;
|
|
26
|
+
mri = cs_mem_malloc(sizeof(*mri));
|
|
27
|
+
|
|
28
|
+
Mips_init(mri);
|
|
29
|
+
ud->printer = Mips_printInst;
|
|
30
|
+
ud->printer_info = mri;
|
|
31
|
+
ud->getinsn_info = mri;
|
|
32
|
+
ud->reg_name = Mips_reg_name;
|
|
33
|
+
ud->insn_id = Mips_get_insn_id;
|
|
34
|
+
ud->insn_name = Mips_insn_name;
|
|
35
|
+
ud->group_name = Mips_group_name;
|
|
36
|
+
|
|
37
|
+
ud->disasm = Mips_getInstruction;
|
|
38
|
+
|
|
39
|
+
return CS_ERR_OK;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
cs_err Mips_option(cs_struct *handle, cs_opt_type type, size_t value)
|
|
43
|
+
{
|
|
44
|
+
if (type == CS_OPT_MODE) {
|
|
45
|
+
handle->mode = updated_mode(value);
|
|
46
|
+
return CS_ERR_OK;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return CS_ERR_OPTION;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
#endif
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* Capstone Disassembly Engine */
|
|
2
|
+
/* By Travis Finkenauer <tmfinken@gmail.com>, 2018 */
|
|
3
|
+
|
|
4
|
+
#ifndef CS_MIPS_MODULE_H
|
|
5
|
+
#define CS_MIPS_MODULE_H
|
|
6
|
+
|
|
7
|
+
#include "../../utils.h"
|
|
8
|
+
|
|
9
|
+
cs_err Mips_global_init(cs_struct *ud);
|
|
10
|
+
cs_err Mips_option(cs_struct *handle, cs_opt_type type, size_t value);
|
|
11
|
+
|
|
12
|
+
#endif
|
|
@@ -0,0 +1,627 @@
|
|
|
1
|
+
//===------ PPCDisassembler.cpp - Disassembler for PowerPC ------*- C++ -*-===//
|
|
2
|
+
//
|
|
3
|
+
// The LLVM Compiler Infrastructure
|
|
4
|
+
//
|
|
5
|
+
// This file is distributed under the University of Illinois Open Source
|
|
6
|
+
// License. See LICENSE.TXT for details.
|
|
7
|
+
//
|
|
8
|
+
//===----------------------------------------------------------------------===//
|
|
9
|
+
|
|
10
|
+
/* Capstone Disassembly Engine */
|
|
11
|
+
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
|
|
12
|
+
|
|
13
|
+
#ifdef CAPSTONE_HAS_POWERPC
|
|
14
|
+
|
|
15
|
+
#include <stdio.h> // DEBUG
|
|
16
|
+
#include <stdlib.h>
|
|
17
|
+
#include <string.h>
|
|
18
|
+
|
|
19
|
+
#include "../../cs_priv.h"
|
|
20
|
+
#include "../../utils.h"
|
|
21
|
+
|
|
22
|
+
#include "PPCDisassembler.h"
|
|
23
|
+
|
|
24
|
+
#include "../../MCInst.h"
|
|
25
|
+
#include "../../MCInstrDesc.h"
|
|
26
|
+
#include "../../MCFixedLenDisassembler.h"
|
|
27
|
+
#include "../../MCRegisterInfo.h"
|
|
28
|
+
#include "../../MCDisassembler.h"
|
|
29
|
+
#include "../../MathExtras.h"
|
|
30
|
+
|
|
31
|
+
#define GET_REGINFO_ENUM
|
|
32
|
+
#include "PPCGenRegisterInfo.inc"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
// FIXME: These can be generated by TableGen from the existing register
|
|
36
|
+
// encoding values!
|
|
37
|
+
|
|
38
|
+
static const unsigned CRRegs[] = {
|
|
39
|
+
PPC_CR0, PPC_CR1, PPC_CR2, PPC_CR3,
|
|
40
|
+
PPC_CR4, PPC_CR5, PPC_CR6, PPC_CR7
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
static const unsigned CRBITRegs[] = {
|
|
44
|
+
PPC_CR0LT, PPC_CR0GT, PPC_CR0EQ, PPC_CR0UN,
|
|
45
|
+
PPC_CR1LT, PPC_CR1GT, PPC_CR1EQ, PPC_CR1UN,
|
|
46
|
+
PPC_CR2LT, PPC_CR2GT, PPC_CR2EQ, PPC_CR2UN,
|
|
47
|
+
PPC_CR3LT, PPC_CR3GT, PPC_CR3EQ, PPC_CR3UN,
|
|
48
|
+
PPC_CR4LT, PPC_CR4GT, PPC_CR4EQ, PPC_CR4UN,
|
|
49
|
+
PPC_CR5LT, PPC_CR5GT, PPC_CR5EQ, PPC_CR5UN,
|
|
50
|
+
PPC_CR6LT, PPC_CR6GT, PPC_CR6EQ, PPC_CR6UN,
|
|
51
|
+
PPC_CR7LT, PPC_CR7GT, PPC_CR7EQ, PPC_CR7UN
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
static const unsigned FRegs[] = {
|
|
55
|
+
PPC_F0, PPC_F1, PPC_F2, PPC_F3,
|
|
56
|
+
PPC_F4, PPC_F5, PPC_F6, PPC_F7,
|
|
57
|
+
PPC_F8, PPC_F9, PPC_F10, PPC_F11,
|
|
58
|
+
PPC_F12, PPC_F13, PPC_F14, PPC_F15,
|
|
59
|
+
PPC_F16, PPC_F17, PPC_F18, PPC_F19,
|
|
60
|
+
PPC_F20, PPC_F21, PPC_F22, PPC_F23,
|
|
61
|
+
PPC_F24, PPC_F25, PPC_F26, PPC_F27,
|
|
62
|
+
PPC_F28, PPC_F29, PPC_F30, PPC_F31
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
static const unsigned VFRegs[] = {
|
|
66
|
+
PPC_VF0, PPC_VF1, PPC_VF2, PPC_VF3,
|
|
67
|
+
PPC_VF4, PPC_VF5, PPC_VF6, PPC_VF7,
|
|
68
|
+
PPC_VF8, PPC_VF9, PPC_VF10, PPC_VF11,
|
|
69
|
+
PPC_VF12, PPC_VF13, PPC_VF14, PPC_VF15,
|
|
70
|
+
PPC_VF16, PPC_VF17, PPC_VF18, PPC_VF19,
|
|
71
|
+
PPC_VF20, PPC_VF21, PPC_VF22, PPC_VF23,
|
|
72
|
+
PPC_VF24, PPC_VF25, PPC_VF26, PPC_VF27,
|
|
73
|
+
PPC_VF28, PPC_VF29, PPC_VF30, PPC_VF31
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
static const unsigned VRegs[] = {
|
|
77
|
+
PPC_V0, PPC_V1, PPC_V2, PPC_V3,
|
|
78
|
+
PPC_V4, PPC_V5, PPC_V6, PPC_V7,
|
|
79
|
+
PPC_V8, PPC_V9, PPC_V10, PPC_V11,
|
|
80
|
+
PPC_V12, PPC_V13, PPC_V14, PPC_V15,
|
|
81
|
+
PPC_V16, PPC_V17, PPC_V18, PPC_V19,
|
|
82
|
+
PPC_V20, PPC_V21, PPC_V22, PPC_V23,
|
|
83
|
+
PPC_V24, PPC_V25, PPC_V26, PPC_V27,
|
|
84
|
+
PPC_V28, PPC_V29, PPC_V30, PPC_V31
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
static const unsigned VSRegs[] = {
|
|
88
|
+
PPC_VSL0, PPC_VSL1, PPC_VSL2, PPC_VSL3,
|
|
89
|
+
PPC_VSL4, PPC_VSL5, PPC_VSL6, PPC_VSL7,
|
|
90
|
+
PPC_VSL8, PPC_VSL9, PPC_VSL10, PPC_VSL11,
|
|
91
|
+
PPC_VSL12, PPC_VSL13, PPC_VSL14, PPC_VSL15,
|
|
92
|
+
PPC_VSL16, PPC_VSL17, PPC_VSL18, PPC_VSL19,
|
|
93
|
+
PPC_VSL20, PPC_VSL21, PPC_VSL22, PPC_VSL23,
|
|
94
|
+
PPC_VSL24, PPC_VSL25, PPC_VSL26, PPC_VSL27,
|
|
95
|
+
PPC_VSL28, PPC_VSL29, PPC_VSL30, PPC_VSL31,
|
|
96
|
+
|
|
97
|
+
PPC_V0, PPC_V1, PPC_V2, PPC_V3,
|
|
98
|
+
PPC_V4, PPC_V5, PPC_V6, PPC_V7,
|
|
99
|
+
PPC_V8, PPC_V9, PPC_V10, PPC_V11,
|
|
100
|
+
PPC_V12, PPC_V13, PPC_V14, PPC_V15,
|
|
101
|
+
PPC_V16, PPC_V17, PPC_V18, PPC_V19,
|
|
102
|
+
PPC_V20, PPC_V21, PPC_V22, PPC_V23,
|
|
103
|
+
PPC_V24, PPC_V25, PPC_V26, PPC_V27,
|
|
104
|
+
PPC_V28, PPC_V29, PPC_V30, PPC_V31
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
static const unsigned VSFRegs[] = {
|
|
108
|
+
PPC_F0, PPC_F1, PPC_F2, PPC_F3,
|
|
109
|
+
PPC_F4, PPC_F5, PPC_F6, PPC_F7,
|
|
110
|
+
PPC_F8, PPC_F9, PPC_F10, PPC_F11,
|
|
111
|
+
PPC_F12, PPC_F13, PPC_F14, PPC_F15,
|
|
112
|
+
PPC_F16, PPC_F17, PPC_F18, PPC_F19,
|
|
113
|
+
PPC_F20, PPC_F21, PPC_F22, PPC_F23,
|
|
114
|
+
PPC_F24, PPC_F25, PPC_F26, PPC_F27,
|
|
115
|
+
PPC_F28, PPC_F29, PPC_F30, PPC_F31,
|
|
116
|
+
|
|
117
|
+
PPC_VF0, PPC_VF1, PPC_VF2, PPC_VF3,
|
|
118
|
+
PPC_VF4, PPC_VF5, PPC_VF6, PPC_VF7,
|
|
119
|
+
PPC_VF8, PPC_VF9, PPC_VF10, PPC_VF11,
|
|
120
|
+
PPC_VF12, PPC_VF13, PPC_VF14, PPC_VF15,
|
|
121
|
+
PPC_VF16, PPC_VF17, PPC_VF18, PPC_VF19,
|
|
122
|
+
PPC_VF20, PPC_VF21, PPC_VF22, PPC_VF23,
|
|
123
|
+
PPC_VF24, PPC_VF25, PPC_VF26, PPC_VF27,
|
|
124
|
+
PPC_VF28, PPC_VF29, PPC_VF30, PPC_VF31
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
static const unsigned VSSRegs[] = {
|
|
128
|
+
PPC_F0, PPC_F1, PPC_F2, PPC_F3,
|
|
129
|
+
PPC_F4, PPC_F5, PPC_F6, PPC_F7,
|
|
130
|
+
PPC_F8, PPC_F9, PPC_F10, PPC_F11,
|
|
131
|
+
PPC_F12, PPC_F13, PPC_F14, PPC_F15,
|
|
132
|
+
PPC_F16, PPC_F17, PPC_F18, PPC_F19,
|
|
133
|
+
PPC_F20, PPC_F21, PPC_F22, PPC_F23,
|
|
134
|
+
PPC_F24, PPC_F25, PPC_F26, PPC_F27,
|
|
135
|
+
PPC_F28, PPC_F29, PPC_F30, PPC_F31,
|
|
136
|
+
|
|
137
|
+
PPC_VF0, PPC_VF1, PPC_VF2, PPC_VF3,
|
|
138
|
+
PPC_VF4, PPC_VF5, PPC_VF6, PPC_VF7,
|
|
139
|
+
PPC_VF8, PPC_VF9, PPC_VF10, PPC_VF11,
|
|
140
|
+
PPC_VF12, PPC_VF13, PPC_VF14, PPC_VF15,
|
|
141
|
+
PPC_VF16, PPC_VF17, PPC_VF18, PPC_VF19,
|
|
142
|
+
PPC_VF20, PPC_VF21, PPC_VF22, PPC_VF23,
|
|
143
|
+
PPC_VF24, PPC_VF25, PPC_VF26, PPC_VF27,
|
|
144
|
+
PPC_VF28, PPC_VF29, PPC_VF30, PPC_VF31
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
static const unsigned GPRegs[] = {
|
|
148
|
+
PPC_R0, PPC_R1, PPC_R2, PPC_R3,
|
|
149
|
+
PPC_R4, PPC_R5, PPC_R6, PPC_R7,
|
|
150
|
+
PPC_R8, PPC_R9, PPC_R10, PPC_R11,
|
|
151
|
+
PPC_R12, PPC_R13, PPC_R14, PPC_R15,
|
|
152
|
+
PPC_R16, PPC_R17, PPC_R18, PPC_R19,
|
|
153
|
+
PPC_R20, PPC_R21, PPC_R22, PPC_R23,
|
|
154
|
+
PPC_R24, PPC_R25, PPC_R26, PPC_R27,
|
|
155
|
+
PPC_R28, PPC_R29, PPC_R30, PPC_R31
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
static const unsigned GP0Regs[] = {
|
|
159
|
+
PPC_ZERO, PPC_R1, PPC_R2, PPC_R3,
|
|
160
|
+
PPC_R4, PPC_R5, PPC_R6, PPC_R7,
|
|
161
|
+
PPC_R8, PPC_R9, PPC_R10, PPC_R11,
|
|
162
|
+
PPC_R12, PPC_R13, PPC_R14, PPC_R15,
|
|
163
|
+
PPC_R16, PPC_R17, PPC_R18, PPC_R19,
|
|
164
|
+
PPC_R20, PPC_R21, PPC_R22, PPC_R23,
|
|
165
|
+
PPC_R24, PPC_R25, PPC_R26, PPC_R27,
|
|
166
|
+
PPC_R28, PPC_R29, PPC_R30, PPC_R31
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
static const unsigned G8Regs[] = {
|
|
170
|
+
PPC_X0, PPC_X1, PPC_X2, PPC_X3,
|
|
171
|
+
PPC_X4, PPC_X5, PPC_X6, PPC_X7,
|
|
172
|
+
PPC_X8, PPC_X9, PPC_X10, PPC_X11,
|
|
173
|
+
PPC_X12, PPC_X13, PPC_X14, PPC_X15,
|
|
174
|
+
PPC_X16, PPC_X17, PPC_X18, PPC_X19,
|
|
175
|
+
PPC_X20, PPC_X21, PPC_X22, PPC_X23,
|
|
176
|
+
PPC_X24, PPC_X25, PPC_X26, PPC_X27,
|
|
177
|
+
PPC_X28, PPC_X29, PPC_X30, PPC_X31
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
static const unsigned G80Regs[] = {
|
|
181
|
+
PPC_ZERO8, PPC_X1, PPC_X2, PPC_X3,
|
|
182
|
+
PPC_X4, PPC_X5, PPC_X6, PPC_X7,
|
|
183
|
+
PPC_X8, PPC_X9, PPC_X10, PPC_X11,
|
|
184
|
+
PPC_X12, PPC_X13, PPC_X14, PPC_X15,
|
|
185
|
+
PPC_X16, PPC_X17, PPC_X18, PPC_X19,
|
|
186
|
+
PPC_X20, PPC_X21, PPC_X22, PPC_X23,
|
|
187
|
+
PPC_X24, PPC_X25, PPC_X26, PPC_X27,
|
|
188
|
+
PPC_X28, PPC_X29, PPC_X30, PPC_X31
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
static const unsigned QFRegs[] = {
|
|
192
|
+
PPC_QF0, PPC_QF1, PPC_QF2, PPC_QF3,
|
|
193
|
+
PPC_QF4, PPC_QF5, PPC_QF6, PPC_QF7,
|
|
194
|
+
PPC_QF8, PPC_QF9, PPC_QF10, PPC_QF11,
|
|
195
|
+
PPC_QF12, PPC_QF13, PPC_QF14, PPC_QF15,
|
|
196
|
+
PPC_QF16, PPC_QF17, PPC_QF18, PPC_QF19,
|
|
197
|
+
PPC_QF20, PPC_QF21, PPC_QF22, PPC_QF23,
|
|
198
|
+
PPC_QF24, PPC_QF25, PPC_QF26, PPC_QF27,
|
|
199
|
+
PPC_QF28, PPC_QF29, PPC_QF30, PPC_QF31
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
static const unsigned SPERegs[] = {
|
|
203
|
+
PPC_S0, PPC_S1, PPC_S2, PPC_S3,
|
|
204
|
+
PPC_S4, PPC_S5, PPC_S6, PPC_S7,
|
|
205
|
+
PPC_S8, PPC_S9, PPC_S10, PPC_S11,
|
|
206
|
+
PPC_S12, PPC_S13, PPC_S14, PPC_S15,
|
|
207
|
+
PPC_S16, PPC_S17, PPC_S18, PPC_S19,
|
|
208
|
+
PPC_S20, PPC_S21, PPC_S22, PPC_S23,
|
|
209
|
+
PPC_S24, PPC_S25, PPC_S26, PPC_S27,
|
|
210
|
+
PPC_S28, PPC_S29, PPC_S30, PPC_S31
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
#if 0
|
|
214
|
+
static uint64_t getFeatureBits(int feature)
|
|
215
|
+
{
|
|
216
|
+
// enable all features
|
|
217
|
+
return (uint64_t)-1;
|
|
218
|
+
}
|
|
219
|
+
#endif
|
|
220
|
+
|
|
221
|
+
static DecodeStatus decodeRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
222
|
+
const unsigned *Regs, size_t RegsLen)
|
|
223
|
+
{
|
|
224
|
+
if (RegNo >= RegsLen / sizeof(unsigned)) {
|
|
225
|
+
return MCDisassembler_Fail;
|
|
226
|
+
}
|
|
227
|
+
MCOperand_CreateReg0(Inst, Regs[RegNo]);
|
|
228
|
+
return MCDisassembler_Success;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
static DecodeStatus DecodeCRRCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
232
|
+
uint64_t Address, const void *Decoder)
|
|
233
|
+
{
|
|
234
|
+
return decodeRegisterClass(Inst, RegNo, CRRegs, sizeof(CRRegs));
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
#if 0
|
|
238
|
+
static DecodeStatus DecodeCRRC0RegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
239
|
+
uint64_t Address, const void *Decoder)
|
|
240
|
+
{
|
|
241
|
+
return decodeRegisterClass(Inst, RegNo, CRRegs, sizeof(CRRegs));
|
|
242
|
+
}
|
|
243
|
+
#endif
|
|
244
|
+
|
|
245
|
+
static DecodeStatus DecodeCRBITRCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
246
|
+
uint64_t Address, const void *Decoder)
|
|
247
|
+
{
|
|
248
|
+
return decodeRegisterClass(Inst, RegNo, CRBITRegs, sizeof(CRBITRegs));
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
static DecodeStatus DecodeF4RCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
252
|
+
uint64_t Address, const void *Decoder)
|
|
253
|
+
{
|
|
254
|
+
return decodeRegisterClass(Inst, RegNo, FRegs, sizeof(FRegs));
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
static DecodeStatus DecodeF8RCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
258
|
+
uint64_t Address, const void *Decoder)
|
|
259
|
+
{
|
|
260
|
+
return decodeRegisterClass(Inst, RegNo, FRegs, sizeof(FRegs));
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
static DecodeStatus DecodeVFRCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
264
|
+
uint64_t Address, const void *Decoder)
|
|
265
|
+
{
|
|
266
|
+
return decodeRegisterClass(Inst, RegNo, VFRegs, sizeof(VFRegs));
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
static DecodeStatus DecodeVRRCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
270
|
+
uint64_t Address, const void *Decoder)
|
|
271
|
+
{
|
|
272
|
+
return decodeRegisterClass(Inst, RegNo, VRegs, sizeof(VRegs));
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
static DecodeStatus DecodeVSRCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
276
|
+
uint64_t Address, const void *Decoder)
|
|
277
|
+
{
|
|
278
|
+
return decodeRegisterClass(Inst, RegNo, VSRegs, sizeof(VSRegs));
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
static DecodeStatus DecodeVSFRCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
282
|
+
uint64_t Address, const void *Decoder)
|
|
283
|
+
{
|
|
284
|
+
return decodeRegisterClass(Inst, RegNo, VSFRegs, sizeof(VSFRegs));
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
static DecodeStatus DecodeVSSRCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
288
|
+
uint64_t Address, const void *Decoder)
|
|
289
|
+
{
|
|
290
|
+
return decodeRegisterClass(Inst, RegNo, VSSRegs, sizeof(VSSRegs));
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
static DecodeStatus DecodeGPRCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
294
|
+
uint64_t Address, const void *Decoder)
|
|
295
|
+
{
|
|
296
|
+
return decodeRegisterClass(Inst, RegNo, GPRegs, sizeof(GPRegs));
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
static DecodeStatus DecodeGPRC_NOR0RegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
300
|
+
uint64_t Address, const void *Decoder)
|
|
301
|
+
{
|
|
302
|
+
return decodeRegisterClass(Inst, RegNo, GP0Regs, sizeof(GP0Regs));
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
static DecodeStatus DecodeG8RCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
306
|
+
uint64_t Address, const void *Decoder)
|
|
307
|
+
{
|
|
308
|
+
return decodeRegisterClass(Inst, RegNo, G8Regs, sizeof(G8Regs));
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
static DecodeStatus DecodeG8RC_NOX0RegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
312
|
+
uint64_t Address, const void *Decoder)
|
|
313
|
+
{
|
|
314
|
+
return decodeRegisterClass(Inst, RegNo, G80Regs, sizeof(G80Regs));
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
#define DecodePointerLikeRegClass0 DecodeGPRCRegisterClass
|
|
318
|
+
#define DecodePointerLikeRegClass1 DecodeGPRC_NOR0RegisterClass
|
|
319
|
+
|
|
320
|
+
static DecodeStatus DecodeQFRCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
321
|
+
uint64_t Address, const void *Decoder)
|
|
322
|
+
{
|
|
323
|
+
return decodeRegisterClass(Inst, RegNo, QFRegs, sizeof(QFRegs));
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
static DecodeStatus DecodeSPE4RCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
327
|
+
uint64_t Address, const void *Decoder)
|
|
328
|
+
{
|
|
329
|
+
return decodeRegisterClass(Inst, RegNo, GPRegs, sizeof(GPRegs));
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
static DecodeStatus DecodeSPERCRegisterClass(MCInst *Inst, uint64_t RegNo,
|
|
333
|
+
uint64_t Address, const void *Decoder)
|
|
334
|
+
{
|
|
335
|
+
return decodeRegisterClass(Inst, RegNo, SPERegs, sizeof(SPERegs));
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
#define DecodeQSRCRegisterClass DecodeQFRCRegisterClass
|
|
339
|
+
#define DecodeQBRCRegisterClass DecodeQFRCRegisterClass
|
|
340
|
+
|
|
341
|
+
static DecodeStatus decodeUImmOperand(MCInst *Inst, uint64_t Imm,
|
|
342
|
+
int64_t Address, const void *Decoder, unsigned N)
|
|
343
|
+
{
|
|
344
|
+
//assert(isUInt<N>(Imm) && "Invalid immediate");
|
|
345
|
+
MCOperand_CreateImm0(Inst, Imm);
|
|
346
|
+
|
|
347
|
+
return MCDisassembler_Success;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
static DecodeStatus decodeSImmOperand(MCInst *Inst, uint64_t Imm,
|
|
351
|
+
int64_t Address, const void *Decoder, unsigned N)
|
|
352
|
+
{
|
|
353
|
+
// assert(isUInt<N>(Imm) && "Invalid immediate");
|
|
354
|
+
MCOperand_CreateImm0(Inst, SignExtend64(Imm, N));
|
|
355
|
+
|
|
356
|
+
return MCDisassembler_Success;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
#define GET_INSTRINFO_ENUM
|
|
361
|
+
#include "PPCGenInstrInfo.inc"
|
|
362
|
+
|
|
363
|
+
static DecodeStatus decodeMemRIOperands(MCInst *Inst, uint64_t Imm,
|
|
364
|
+
int64_t Address, const void *Decoder)
|
|
365
|
+
{
|
|
366
|
+
// Decode the memri field (imm, reg), which has the low 16-bits as the
|
|
367
|
+
// displacement and the next 5 bits as the register #.
|
|
368
|
+
|
|
369
|
+
uint64_t Base = Imm >> 16;
|
|
370
|
+
uint64_t Disp = Imm & 0xFFFF;
|
|
371
|
+
|
|
372
|
+
// assert(Base < 32 && "Invalid base register");
|
|
373
|
+
if (Base >= 32)
|
|
374
|
+
return MCDisassembler_Fail;
|
|
375
|
+
|
|
376
|
+
switch (MCInst_getOpcode(Inst)) {
|
|
377
|
+
default: break;
|
|
378
|
+
case PPC_LBZU:
|
|
379
|
+
case PPC_LHAU:
|
|
380
|
+
case PPC_LHZU:
|
|
381
|
+
case PPC_LWZU:
|
|
382
|
+
case PPC_LFSU:
|
|
383
|
+
case PPC_LFDU:
|
|
384
|
+
// Add the tied output operand.
|
|
385
|
+
MCOperand_CreateReg0(Inst, GP0Regs[Base]);
|
|
386
|
+
break;
|
|
387
|
+
case PPC_STBU:
|
|
388
|
+
case PPC_STHU:
|
|
389
|
+
case PPC_STWU:
|
|
390
|
+
case PPC_STFSU:
|
|
391
|
+
case PPC_STFDU:
|
|
392
|
+
MCInst_insert0(Inst, 0, MCOperand_CreateReg1(Inst, GP0Regs[Base]));
|
|
393
|
+
break;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
MCOperand_CreateImm0(Inst, SignExtend64(Disp, 16));
|
|
397
|
+
MCOperand_CreateReg0(Inst, GP0Regs[Base]);
|
|
398
|
+
|
|
399
|
+
return MCDisassembler_Success;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
static DecodeStatus decodeMemRIXOperands(MCInst *Inst, uint64_t Imm,
|
|
403
|
+
int64_t Address, const void *Decoder)
|
|
404
|
+
{
|
|
405
|
+
// Decode the memrix field (imm, reg), which has the low 14-bits as the
|
|
406
|
+
// displacement and the next 5 bits as the register #.
|
|
407
|
+
|
|
408
|
+
uint64_t Base = Imm >> 14;
|
|
409
|
+
uint64_t Disp = Imm & 0x3FFF;
|
|
410
|
+
|
|
411
|
+
// assert(Base < 32 && "Invalid base register");
|
|
412
|
+
if (Base >= 32)
|
|
413
|
+
return MCDisassembler_Fail;
|
|
414
|
+
|
|
415
|
+
if (MCInst_getOpcode(Inst) == PPC_LDU)
|
|
416
|
+
// Add the tied output operand.
|
|
417
|
+
MCOperand_CreateReg0(Inst, GP0Regs[Base]);
|
|
418
|
+
else if (MCInst_getOpcode(Inst) == PPC_STDU)
|
|
419
|
+
MCInst_insert0(Inst, 0, MCOperand_CreateReg1(Inst, GP0Regs[Base]));
|
|
420
|
+
|
|
421
|
+
MCOperand_CreateImm0(Inst, SignExtend64(Disp << 2, 16));
|
|
422
|
+
MCOperand_CreateReg0(Inst, GP0Regs[Base]);
|
|
423
|
+
|
|
424
|
+
return MCDisassembler_Success;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
static DecodeStatus decodeMemRIX16Operands(MCInst *Inst, uint64_t Imm,
|
|
428
|
+
int64_t Address, const void *Decoder)
|
|
429
|
+
{
|
|
430
|
+
// Decode the memrix16 field (imm, reg), which has the low 12-bits as the
|
|
431
|
+
// displacement with 16-byte aligned, and the next 5 bits as the register #.
|
|
432
|
+
|
|
433
|
+
uint64_t Base = Imm >> 12;
|
|
434
|
+
uint64_t Disp = Imm & 0xFFF;
|
|
435
|
+
|
|
436
|
+
// assert(Base < 32 && "Invalid base register");
|
|
437
|
+
if (Base >= 32)
|
|
438
|
+
return MCDisassembler_Fail;
|
|
439
|
+
|
|
440
|
+
MCOperand_CreateImm0(Inst, SignExtend64(Disp << 4, 16));
|
|
441
|
+
MCOperand_CreateReg0(Inst, GP0Regs[Base]);
|
|
442
|
+
|
|
443
|
+
return MCDisassembler_Success;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
static DecodeStatus decodeSPE8Operands(MCInst *Inst, uint64_t Imm,
|
|
447
|
+
int64_t Address, const void *Decoder)
|
|
448
|
+
{
|
|
449
|
+
// Decode the spe8disp field (imm, reg), which has the low 5-bits as the
|
|
450
|
+
// displacement with 8-byte aligned, and the next 5 bits as the register #.
|
|
451
|
+
|
|
452
|
+
uint64_t Base = Imm >> 5;
|
|
453
|
+
uint64_t Disp = Imm & 0x1F;
|
|
454
|
+
|
|
455
|
+
// assert(Base < 32 && "Invalid base register");
|
|
456
|
+
if (Base >= 32)
|
|
457
|
+
return MCDisassembler_Fail;
|
|
458
|
+
|
|
459
|
+
MCOperand_CreateImm0(Inst, Disp << 3);
|
|
460
|
+
MCOperand_CreateReg0(Inst, GP0Regs[Base]);
|
|
461
|
+
|
|
462
|
+
return MCDisassembler_Success;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
static DecodeStatus decodeSPE4Operands(MCInst *Inst, uint64_t Imm,
|
|
466
|
+
int64_t Address, const void *Decoder)
|
|
467
|
+
{
|
|
468
|
+
// Decode the spe4disp field (imm, reg), which has the low 5-bits as the
|
|
469
|
+
// displacement with 4-byte aligned, and the next 5 bits as the register #.
|
|
470
|
+
|
|
471
|
+
uint64_t Base = Imm >> 5;
|
|
472
|
+
uint64_t Disp = Imm & 0x1F;
|
|
473
|
+
|
|
474
|
+
// assert(Base < 32 && "Invalid base register");
|
|
475
|
+
if (Base >= 32)
|
|
476
|
+
return MCDisassembler_Fail;
|
|
477
|
+
|
|
478
|
+
MCOperand_CreateImm0(Inst, Disp << 2);
|
|
479
|
+
MCOperand_CreateReg0(Inst, GP0Regs[Base]);
|
|
480
|
+
|
|
481
|
+
return MCDisassembler_Success;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
static DecodeStatus decodeSPE2Operands(MCInst *Inst, uint64_t Imm,
|
|
485
|
+
int64_t Address, const void *Decoder)
|
|
486
|
+
{
|
|
487
|
+
// Decode the spe2disp field (imm, reg), which has the low 5-bits as the
|
|
488
|
+
// displacement with 2-byte aligned, and the next 5 bits as the register #.
|
|
489
|
+
|
|
490
|
+
uint64_t Base = Imm >> 5;
|
|
491
|
+
uint64_t Disp = Imm & 0x1F;
|
|
492
|
+
|
|
493
|
+
// assert(Base < 32 && "Invalid base register");
|
|
494
|
+
if (Base >= 32)
|
|
495
|
+
return MCDisassembler_Fail;
|
|
496
|
+
|
|
497
|
+
MCOperand_CreateImm0(Inst, Disp << 1);
|
|
498
|
+
MCOperand_CreateReg0(Inst, GP0Regs[Base]);
|
|
499
|
+
|
|
500
|
+
return MCDisassembler_Success;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
static DecodeStatus decodeCRBitMOperand(MCInst *Inst, uint64_t Imm,
|
|
504
|
+
int64_t Address, const void *Decoder)
|
|
505
|
+
{
|
|
506
|
+
// The cr bit encoding is 0x80 >> cr_reg_num.
|
|
507
|
+
|
|
508
|
+
unsigned Zeros = CountTrailingZeros_64(Imm);
|
|
509
|
+
// assert(Zeros < 8 && "Invalid CR bit value");
|
|
510
|
+
if (Zeros >= 8)
|
|
511
|
+
return MCDisassembler_Fail;
|
|
512
|
+
|
|
513
|
+
MCOperand_CreateReg0(Inst, CRRegs[7 - Zeros]);
|
|
514
|
+
|
|
515
|
+
return MCDisassembler_Success;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
#include "PPCGenDisassemblerTables.inc"
|
|
519
|
+
|
|
520
|
+
static DecodeStatus getInstruction(MCInst *MI,
|
|
521
|
+
const uint8_t *code, size_t code_len,
|
|
522
|
+
uint16_t *Size,
|
|
523
|
+
uint64_t Address, MCRegisterInfo *MRI)
|
|
524
|
+
{
|
|
525
|
+
uint32_t insn;
|
|
526
|
+
DecodeStatus result;
|
|
527
|
+
|
|
528
|
+
// Get the four bytes of the instruction.
|
|
529
|
+
if (code_len < 4) {
|
|
530
|
+
// not enough data
|
|
531
|
+
*Size = 0;
|
|
532
|
+
return MCDisassembler_Fail;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
// The instruction is big-endian encoded.
|
|
536
|
+
if (MODE_IS_BIG_ENDIAN(MI->csh->mode))
|
|
537
|
+
insn = ((uint32_t) code[0] << 24) | (code[1] << 16) |
|
|
538
|
+
(code[2] << 8) | (code[3] << 0);
|
|
539
|
+
else // little endian
|
|
540
|
+
insn = ((uint32_t) code[3] << 24) | (code[2] << 16) |
|
|
541
|
+
(code[1] << 8) | (code[0] << 0);
|
|
542
|
+
|
|
543
|
+
if (MI->flat_insn->detail) {
|
|
544
|
+
memset(MI->flat_insn->detail, 0, offsetof(cs_detail, ppc) + sizeof(cs_ppc));
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
if (MI->csh->mode & CS_MODE_QPX) {
|
|
548
|
+
result = decodeInstruction_4(DecoderTableQPX32, MI, insn, Address);
|
|
549
|
+
if (result != MCDisassembler_Fail) {
|
|
550
|
+
*Size = 4;
|
|
551
|
+
|
|
552
|
+
return result;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
// failed to decode
|
|
556
|
+
MCInst_clear(MI);
|
|
557
|
+
} else if (MI->csh->mode & CS_MODE_SPE) {
|
|
558
|
+
result = decodeInstruction_4(DecoderTableSPE32, MI, insn, Address);
|
|
559
|
+
if (result != MCDisassembler_Fail) {
|
|
560
|
+
*Size = 4;
|
|
561
|
+
|
|
562
|
+
return result;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
// failed to decode
|
|
566
|
+
MCInst_clear(MI);
|
|
567
|
+
} else if (MI->csh->mode & CS_MODE_PS) {
|
|
568
|
+
result = decodeInstruction_4(DecoderTablePS32, MI, insn, Address);
|
|
569
|
+
if (result != MCDisassembler_Fail) {
|
|
570
|
+
*Size = 4;
|
|
571
|
+
|
|
572
|
+
return result;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
// failed to decode
|
|
576
|
+
MCInst_clear(MI);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
result = decodeInstruction_4(DecoderTable32, MI, insn, Address);
|
|
580
|
+
if (result != MCDisassembler_Fail) {
|
|
581
|
+
*Size = 4;
|
|
582
|
+
|
|
583
|
+
return result;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
// cannot decode, report error
|
|
587
|
+
MCInst_clear(MI);
|
|
588
|
+
*Size = 0;
|
|
589
|
+
|
|
590
|
+
return MCDisassembler_Fail;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
bool PPC_getInstruction(csh ud, const uint8_t *code, size_t code_len,
|
|
594
|
+
MCInst *instr, uint16_t *size, uint64_t address, void *info)
|
|
595
|
+
{
|
|
596
|
+
DecodeStatus status = getInstruction(instr,
|
|
597
|
+
code, code_len,
|
|
598
|
+
size,
|
|
599
|
+
address, (MCRegisterInfo *)info);
|
|
600
|
+
|
|
601
|
+
return status == MCDisassembler_Success;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
#define GET_REGINFO_MC_DESC
|
|
605
|
+
#include "PPCGenRegisterInfo.inc"
|
|
606
|
+
void PPC_init(MCRegisterInfo *MRI)
|
|
607
|
+
{
|
|
608
|
+
/*
|
|
609
|
+
InitMCRegisterInfo(PPCRegDesc, 344,
|
|
610
|
+
RA, PC,
|
|
611
|
+
PPCMCRegisterClasses, 36,
|
|
612
|
+
PPCRegUnitRoots, 171, PPCRegDiffLists, PPCLaneMaskLists, PPCRegStrings, PPCRegClassStrings,
|
|
613
|
+
PPCSubRegIdxLists, 7,
|
|
614
|
+
PPCSubRegIdxRanges, PPCRegEncodingTable);
|
|
615
|
+
*/
|
|
616
|
+
|
|
617
|
+
MCRegisterInfo_InitMCRegisterInfo(MRI, PPCRegDesc, 344,
|
|
618
|
+
0, 0,
|
|
619
|
+
PPCMCRegisterClasses, 36,
|
|
620
|
+
0, 0,
|
|
621
|
+
PPCRegDiffLists,
|
|
622
|
+
0,
|
|
623
|
+
PPCSubRegIdxLists, 7,
|
|
624
|
+
0);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
#endif
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* Capstone Disassembly Engine */
|
|
2
|
+
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
|
|
3
|
+
|
|
4
|
+
#ifndef CS_PPCDISASSEMBLER_H
|
|
5
|
+
#define CS_PPCDISASSEMBLER_H
|
|
6
|
+
|
|
7
|
+
#include "capstone/capstone.h"
|
|
8
|
+
#include "../../MCRegisterInfo.h"
|
|
9
|
+
#include "../../MCInst.h"
|
|
10
|
+
|
|
11
|
+
void PPC_init(MCRegisterInfo *MRI);
|
|
12
|
+
|
|
13
|
+
bool PPC_getInstruction(csh ud, const uint8_t *code, size_t code_len,
|
|
14
|
+
MCInst *instr, uint16_t *size, uint64_t address, void *info);
|
|
15
|
+
|
|
16
|
+
#endif
|
|
17
|
+
|