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,147 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* HexCore Capstone - Native Node.js Bindings
|
|
3
|
+
* Capstone Wrapper Header
|
|
4
|
+
* Copyright (c) HikariSystem. All rights reserved.
|
|
5
|
+
* Licensed under MIT License.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef CAPSTONE_WRAPPER_H
|
|
9
|
+
#define CAPSTONE_WRAPPER_H
|
|
10
|
+
|
|
11
|
+
#include <napi.h>
|
|
12
|
+
#include <capstone/capstone.h>
|
|
13
|
+
#include <vector>
|
|
14
|
+
#include <string>
|
|
15
|
+
|
|
16
|
+
// Forward declaration
|
|
17
|
+
class DisasmAsyncWorker;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* CapstoneWrapper - N-API class wrapping Capstone disassembler
|
|
21
|
+
*
|
|
22
|
+
* JavaScript usage:
|
|
23
|
+
* const cs = new Capstone(ARCH.X86, MODE.MODE_64);
|
|
24
|
+
* const instructions = cs.disasm(buffer, 0x1000);
|
|
25
|
+
* const instructionsAsync = await cs.disasmAsync(buffer, 0x1000);
|
|
26
|
+
* cs.close();
|
|
27
|
+
*/
|
|
28
|
+
class CapstoneWrapper : public Napi::ObjectWrap<CapstoneWrapper> {
|
|
29
|
+
public:
|
|
30
|
+
/**
|
|
31
|
+
* Initialize the class in the module exports
|
|
32
|
+
*/
|
|
33
|
+
static Napi::Object Init(Napi::Env env, Napi::Object exports);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Constructor called from JavaScript
|
|
37
|
+
* @param info Contains arch and mode arguments
|
|
38
|
+
*/
|
|
39
|
+
CapstoneWrapper(const Napi::CallbackInfo& info);
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Destructor - ensures handle is closed
|
|
43
|
+
*/
|
|
44
|
+
~CapstoneWrapper();
|
|
45
|
+
|
|
46
|
+
// Accessors for async worker
|
|
47
|
+
csh GetHandle() const { return handle_; }
|
|
48
|
+
cs_arch GetArch() const { return arch_; }
|
|
49
|
+
bool IsOpened() const { return opened_; }
|
|
50
|
+
|
|
51
|
+
private:
|
|
52
|
+
// Capstone handle
|
|
53
|
+
csh handle_;
|
|
54
|
+
bool opened_;
|
|
55
|
+
cs_arch arch_;
|
|
56
|
+
cs_mode mode_;
|
|
57
|
+
bool detailEnabled_;
|
|
58
|
+
|
|
59
|
+
// Class reference for preventing garbage collection during async ops
|
|
60
|
+
static Napi::FunctionReference constructor;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Disassemble a buffer (synchronous)
|
|
64
|
+
* @param info[0] Buffer - code to disassemble
|
|
65
|
+
* @param info[1] Number - base address
|
|
66
|
+
* @param info[2] Number - (optional) max instructions, 0 = all
|
|
67
|
+
* @returns Array of instruction objects
|
|
68
|
+
*/
|
|
69
|
+
Napi::Value Disasm(const Napi::CallbackInfo& info);
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Disassemble a buffer (asynchronous - non-blocking)
|
|
73
|
+
* @param info[0] Buffer - code to disassemble
|
|
74
|
+
* @param info[1] Number - base address
|
|
75
|
+
* @param info[2] Number - (optional) max instructions, 0 = all
|
|
76
|
+
* @returns Promise<Array> of instruction objects
|
|
77
|
+
*/
|
|
78
|
+
Napi::Value DisasmAsync(const Napi::CallbackInfo& info);
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Set option
|
|
82
|
+
* @param info[0] Number - option type (CS_OPT_*)
|
|
83
|
+
* @param info[1] Number - option value
|
|
84
|
+
*/
|
|
85
|
+
Napi::Value SetOption(const Napi::CallbackInfo& info);
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Close the handle and free resources
|
|
89
|
+
*/
|
|
90
|
+
Napi::Value Close(const Napi::CallbackInfo& info);
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Get register name by ID
|
|
94
|
+
* @param info[0] Number - register ID
|
|
95
|
+
* @returns String - register name
|
|
96
|
+
*/
|
|
97
|
+
Napi::Value RegName(const Napi::CallbackInfo& info);
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Get instruction name by ID
|
|
101
|
+
* @param info[0] Number - instruction ID
|
|
102
|
+
* @returns String - instruction name
|
|
103
|
+
*/
|
|
104
|
+
Napi::Value InsnName(const Napi::CallbackInfo& info);
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Get group name by ID
|
|
108
|
+
* @param info[0] Number - group ID
|
|
109
|
+
* @returns String - group name
|
|
110
|
+
*/
|
|
111
|
+
Napi::Value GroupName(const Napi::CallbackInfo& info);
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Check if handle is opened
|
|
115
|
+
* @returns Boolean
|
|
116
|
+
*/
|
|
117
|
+
Napi::Value IsOpen(const Napi::CallbackInfo& info);
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Get last error code
|
|
121
|
+
* @returns Number - error code
|
|
122
|
+
*/
|
|
123
|
+
Napi::Value GetError(const Napi::CallbackInfo& info);
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Get error message string
|
|
127
|
+
* @param info[0] Number - (optional) error code, defaults to last error
|
|
128
|
+
* @returns String - error message
|
|
129
|
+
*/
|
|
130
|
+
Napi::Value StrError(const Napi::CallbackInfo& info);
|
|
131
|
+
|
|
132
|
+
// Helper methods
|
|
133
|
+
Napi::Object InstructionToObject(Napi::Env env, cs_insn* insn);
|
|
134
|
+
Napi::Object DetailToObject(Napi::Env env, cs_insn* insn);
|
|
135
|
+
Napi::Object X86DetailToObject(Napi::Env env, cs_x86* x86);
|
|
136
|
+
Napi::Object ArmDetailToObject(Napi::Env env, cs_arm* arm);
|
|
137
|
+
Napi::Object Arm64DetailToObject(Napi::Env env, cs_arm64* arm64);
|
|
138
|
+
Napi::Object MipsDetailToObject(Napi::Env env, cs_mips* mips);
|
|
139
|
+
Napi::Object PpcDetailToObject(Napi::Env env, cs_ppc* ppc);
|
|
140
|
+
Napi::Object SparcDetailToObject(Napi::Env env, cs_sparc* sparc);
|
|
141
|
+
Napi::Object SyszDetailToObject(Napi::Env env, cs_sysz* sysz);
|
|
142
|
+
Napi::Object XcoreDetailToObject(Napi::Env env, cs_xcore* xcore);
|
|
143
|
+
Napi::Object M68kDetailToObject(Napi::Env env, cs_m68k* m68k);
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
#endif // CAPSTONE_WRAPPER_H
|
|
147
|
+
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* HexCore Capstone - Native Node.js Bindings
|
|
3
|
+
* Async Disassembly Worker
|
|
4
|
+
* Copyright (c) HikariSystem. All rights reserved.
|
|
5
|
+
* Licensed under MIT License.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef DISASM_ASYNC_WORKER_H
|
|
9
|
+
#define DISASM_ASYNC_WORKER_H
|
|
10
|
+
|
|
11
|
+
#include <napi.h>
|
|
12
|
+
#include <capstone/capstone.h>
|
|
13
|
+
#include <vector>
|
|
14
|
+
#include <cstring>
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Intermediate structure to hold disassembled instruction data
|
|
18
|
+
* This is used to transfer data from worker thread to main thread
|
|
19
|
+
*/
|
|
20
|
+
struct DisasmResult {
|
|
21
|
+
uint32_t id;
|
|
22
|
+
uint64_t address;
|
|
23
|
+
uint16_t size;
|
|
24
|
+
std::vector<uint8_t> bytes;
|
|
25
|
+
std::string mnemonic;
|
|
26
|
+
std::string op_str;
|
|
27
|
+
|
|
28
|
+
// Detail data (optional)
|
|
29
|
+
bool hasDetail;
|
|
30
|
+
std::vector<uint16_t> regsRead;
|
|
31
|
+
std::vector<uint16_t> regsWrite;
|
|
32
|
+
std::vector<uint8_t> groups;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* AsyncWorker for non-blocking disassembly
|
|
37
|
+
* Runs cs_disasm in a background thread and returns results via Promise
|
|
38
|
+
*/
|
|
39
|
+
class DisasmAsyncWorker : public Napi::AsyncWorker {
|
|
40
|
+
public:
|
|
41
|
+
DisasmAsyncWorker(
|
|
42
|
+
Napi::Env env,
|
|
43
|
+
csh handle,
|
|
44
|
+
cs_arch arch,
|
|
45
|
+
std::vector<uint8_t> code,
|
|
46
|
+
uint64_t address,
|
|
47
|
+
size_t count,
|
|
48
|
+
bool includeDetail
|
|
49
|
+
) : Napi::AsyncWorker(env),
|
|
50
|
+
deferred_(Napi::Promise::Deferred::New(env)),
|
|
51
|
+
handle_(handle),
|
|
52
|
+
arch_(arch),
|
|
53
|
+
code_(std::move(code)),
|
|
54
|
+
address_(address),
|
|
55
|
+
count_(count),
|
|
56
|
+
includeDetail_(includeDetail),
|
|
57
|
+
numInsns_(0),
|
|
58
|
+
error_(CS_ERR_OK) {}
|
|
59
|
+
|
|
60
|
+
~DisasmAsyncWorker() {}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Get the Promise that will be resolved when work completes
|
|
64
|
+
*/
|
|
65
|
+
Napi::Promise GetPromise() { return deferred_.Promise(); }
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Execute in background thread - no V8/N-API calls allowed here!
|
|
69
|
+
*/
|
|
70
|
+
void Execute() override {
|
|
71
|
+
cs_insn* insn = nullptr;
|
|
72
|
+
|
|
73
|
+
// Perform disassembly in background thread
|
|
74
|
+
numInsns_ = cs_disasm(
|
|
75
|
+
handle_,
|
|
76
|
+
code_.data(),
|
|
77
|
+
code_.size(),
|
|
78
|
+
address_,
|
|
79
|
+
count_,
|
|
80
|
+
&insn
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
if (numInsns_ == 0) {
|
|
84
|
+
error_ = cs_errno(handle_);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Copy data to our intermediate structures (no V8 objects here!)
|
|
89
|
+
results_.reserve(numInsns_);
|
|
90
|
+
|
|
91
|
+
for (size_t i = 0; i < numInsns_; i++) {
|
|
92
|
+
DisasmResult result;
|
|
93
|
+
result.id = insn[i].id;
|
|
94
|
+
result.address = insn[i].address;
|
|
95
|
+
result.size = insn[i].size;
|
|
96
|
+
result.bytes.assign(insn[i].bytes, insn[i].bytes + insn[i].size);
|
|
97
|
+
result.mnemonic = insn[i].mnemonic;
|
|
98
|
+
result.op_str = insn[i].op_str;
|
|
99
|
+
result.hasDetail = false;
|
|
100
|
+
|
|
101
|
+
// Copy detail if available and requested
|
|
102
|
+
if (includeDetail_ && insn[i].detail != nullptr) {
|
|
103
|
+
result.hasDetail = true;
|
|
104
|
+
cs_detail* detail = insn[i].detail;
|
|
105
|
+
|
|
106
|
+
result.regsRead.assign(
|
|
107
|
+
detail->regs_read,
|
|
108
|
+
detail->regs_read + detail->regs_read_count
|
|
109
|
+
);
|
|
110
|
+
result.regsWrite.assign(
|
|
111
|
+
detail->regs_write,
|
|
112
|
+
detail->regs_write + detail->regs_write_count
|
|
113
|
+
);
|
|
114
|
+
result.groups.assign(
|
|
115
|
+
detail->groups,
|
|
116
|
+
detail->groups + detail->groups_count
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
results_.push_back(std::move(result));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Free Capstone memory
|
|
124
|
+
cs_free(insn, numInsns_);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Called in main thread after Execute completes successfully
|
|
129
|
+
*/
|
|
130
|
+
void OnOK() override {
|
|
131
|
+
Napi::Env env = Env();
|
|
132
|
+
Napi::HandleScope scope(env);
|
|
133
|
+
|
|
134
|
+
// Convert results to JavaScript array
|
|
135
|
+
Napi::Array jsArray = Napi::Array::New(env, results_.size());
|
|
136
|
+
|
|
137
|
+
for (size_t i = 0; i < results_.size(); i++) {
|
|
138
|
+
jsArray.Set(static_cast<uint32_t>(i), ResultToObject(env, results_[i]));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
deferred_.Resolve(jsArray);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Called in main thread if Execute throws
|
|
146
|
+
*/
|
|
147
|
+
void OnError(const Napi::Error& error) override {
|
|
148
|
+
deferred_.Reject(error.Value());
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
private:
|
|
152
|
+
Napi::Promise::Deferred deferred_;
|
|
153
|
+
csh handle_;
|
|
154
|
+
cs_arch arch_;
|
|
155
|
+
std::vector<uint8_t> code_;
|
|
156
|
+
uint64_t address_;
|
|
157
|
+
size_t count_;
|
|
158
|
+
bool includeDetail_;
|
|
159
|
+
|
|
160
|
+
// Results from Execute()
|
|
161
|
+
size_t numInsns_;
|
|
162
|
+
cs_err error_;
|
|
163
|
+
std::vector<DisasmResult> results_;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Convert our intermediate structure to a JavaScript object
|
|
167
|
+
*/
|
|
168
|
+
Napi::Object ResultToObject(Napi::Env env, const DisasmResult& result) {
|
|
169
|
+
Napi::Object obj = Napi::Object::New(env);
|
|
170
|
+
|
|
171
|
+
obj.Set("id", Napi::Number::New(env, result.id));
|
|
172
|
+
obj.Set("address", Napi::Number::New(env, static_cast<double>(result.address)));
|
|
173
|
+
obj.Set("size", Napi::Number::New(env, result.size));
|
|
174
|
+
obj.Set("mnemonic", Napi::String::New(env, result.mnemonic));
|
|
175
|
+
obj.Set("opStr", Napi::String::New(env, result.op_str));
|
|
176
|
+
|
|
177
|
+
// Copy bytes
|
|
178
|
+
Napi::Buffer<uint8_t> bytes = Napi::Buffer<uint8_t>::Copy(
|
|
179
|
+
env, result.bytes.data(), result.bytes.size()
|
|
180
|
+
);
|
|
181
|
+
obj.Set("bytes", bytes);
|
|
182
|
+
|
|
183
|
+
// Add detail if available
|
|
184
|
+
if (result.hasDetail) {
|
|
185
|
+
Napi::Object detail = Napi::Object::New(env);
|
|
186
|
+
|
|
187
|
+
// Registers read
|
|
188
|
+
Napi::Array regsRead = Napi::Array::New(env, result.regsRead.size());
|
|
189
|
+
for (size_t j = 0; j < result.regsRead.size(); j++) {
|
|
190
|
+
regsRead.Set(static_cast<uint32_t>(j), Napi::Number::New(env, result.regsRead[j]));
|
|
191
|
+
}
|
|
192
|
+
detail.Set("regsRead", regsRead);
|
|
193
|
+
|
|
194
|
+
// Registers written
|
|
195
|
+
Napi::Array regsWrite = Napi::Array::New(env, result.regsWrite.size());
|
|
196
|
+
for (size_t j = 0; j < result.regsWrite.size(); j++) {
|
|
197
|
+
regsWrite.Set(static_cast<uint32_t>(j), Napi::Number::New(env, result.regsWrite[j]));
|
|
198
|
+
}
|
|
199
|
+
detail.Set("regsWrite", regsWrite);
|
|
200
|
+
|
|
201
|
+
// Groups
|
|
202
|
+
Napi::Array groups = Napi::Array::New(env, result.groups.size());
|
|
203
|
+
for (size_t j = 0; j < result.groups.size(); j++) {
|
|
204
|
+
groups.Set(static_cast<uint32_t>(j), Napi::Number::New(env, result.groups[j]));
|
|
205
|
+
}
|
|
206
|
+
detail.Set("groups", groups);
|
|
207
|
+
|
|
208
|
+
obj.Set("detail", detail);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return obj;
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
#endif // DISASM_ASYNC_WORKER_H
|
package/src/main.cpp
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* HexCore Capstone - Native Node.js Bindings
|
|
3
|
+
* Main entry point for N-API addon
|
|
4
|
+
* Copyright (c) HikariSystem. All rights reserved.
|
|
5
|
+
* Licensed under MIT License.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include <napi.h>
|
|
9
|
+
#include "capstone_wrapper.h"
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Initialize the addon module
|
|
13
|
+
*/
|
|
14
|
+
Napi::Object Init(Napi::Env env, Napi::Object exports) {
|
|
15
|
+
// Initialize Capstone wrapper class
|
|
16
|
+
CapstoneWrapper::Init(env, exports);
|
|
17
|
+
|
|
18
|
+
// Export architecture constants
|
|
19
|
+
Napi::Object arch = Napi::Object::New(env);
|
|
20
|
+
arch.Set("ARM", Napi::Number::New(env, CS_ARCH_ARM));
|
|
21
|
+
arch.Set("ARM64", Napi::Number::New(env, CS_ARCH_ARM64));
|
|
22
|
+
arch.Set("MIPS", Napi::Number::New(env, CS_ARCH_MIPS));
|
|
23
|
+
arch.Set("X86", Napi::Number::New(env, CS_ARCH_X86));
|
|
24
|
+
arch.Set("PPC", Napi::Number::New(env, CS_ARCH_PPC));
|
|
25
|
+
arch.Set("SPARC", Napi::Number::New(env, CS_ARCH_SPARC));
|
|
26
|
+
arch.Set("SYSZ", Napi::Number::New(env, CS_ARCH_SYSZ));
|
|
27
|
+
arch.Set("XCORE", Napi::Number::New(env, CS_ARCH_XCORE));
|
|
28
|
+
arch.Set("M68K", Napi::Number::New(env, CS_ARCH_M68K));
|
|
29
|
+
arch.Set("TMS320C64X", Napi::Number::New(env, CS_ARCH_TMS320C64X));
|
|
30
|
+
arch.Set("M680X", Napi::Number::New(env, CS_ARCH_M680X));
|
|
31
|
+
arch.Set("EVM", Napi::Number::New(env, CS_ARCH_EVM));
|
|
32
|
+
#ifdef CS_ARCH_WASM
|
|
33
|
+
arch.Set("WASM", Napi::Number::New(env, CS_ARCH_WASM));
|
|
34
|
+
#endif
|
|
35
|
+
#ifdef CS_ARCH_BPF
|
|
36
|
+
arch.Set("BPF", Napi::Number::New(env, CS_ARCH_BPF));
|
|
37
|
+
#endif
|
|
38
|
+
#ifdef CS_ARCH_RISCV
|
|
39
|
+
arch.Set("RISCV", Napi::Number::New(env, CS_ARCH_RISCV));
|
|
40
|
+
#endif
|
|
41
|
+
exports.Set("ARCH", arch);
|
|
42
|
+
|
|
43
|
+
// Export mode constants
|
|
44
|
+
Napi::Object mode = Napi::Object::New(env);
|
|
45
|
+
mode.Set("LITTLE_ENDIAN", Napi::Number::New(env, CS_MODE_LITTLE_ENDIAN));
|
|
46
|
+
mode.Set("BIG_ENDIAN", Napi::Number::New(env, CS_MODE_BIG_ENDIAN));
|
|
47
|
+
mode.Set("ARM", Napi::Number::New(env, CS_MODE_ARM));
|
|
48
|
+
mode.Set("THUMB", Napi::Number::New(env, CS_MODE_THUMB));
|
|
49
|
+
mode.Set("MCLASS", Napi::Number::New(env, CS_MODE_MCLASS));
|
|
50
|
+
mode.Set("V8", Napi::Number::New(env, CS_MODE_V8));
|
|
51
|
+
mode.Set("MODE_16", Napi::Number::New(env, CS_MODE_16));
|
|
52
|
+
mode.Set("MODE_32", Napi::Number::New(env, CS_MODE_32));
|
|
53
|
+
mode.Set("MODE_64", Napi::Number::New(env, CS_MODE_64));
|
|
54
|
+
mode.Set("MICRO", Napi::Number::New(env, CS_MODE_MICRO));
|
|
55
|
+
mode.Set("MIPS3", Napi::Number::New(env, CS_MODE_MIPS3));
|
|
56
|
+
mode.Set("MIPS32R6", Napi::Number::New(env, CS_MODE_MIPS32R6));
|
|
57
|
+
mode.Set("MIPS2", Napi::Number::New(env, CS_MODE_MIPS2));
|
|
58
|
+
mode.Set("V9", Napi::Number::New(env, CS_MODE_V9));
|
|
59
|
+
mode.Set("QPX", Napi::Number::New(env, CS_MODE_QPX));
|
|
60
|
+
mode.Set("M68K_000", Napi::Number::New(env, CS_MODE_M68K_000));
|
|
61
|
+
mode.Set("M68K_010", Napi::Number::New(env, CS_MODE_M68K_010));
|
|
62
|
+
mode.Set("M68K_020", Napi::Number::New(env, CS_MODE_M68K_020));
|
|
63
|
+
mode.Set("M68K_030", Napi::Number::New(env, CS_MODE_M68K_030));
|
|
64
|
+
mode.Set("M68K_040", Napi::Number::New(env, CS_MODE_M68K_040));
|
|
65
|
+
mode.Set("M68K_060", Napi::Number::New(env, CS_MODE_M68K_060));
|
|
66
|
+
#ifdef CS_MODE_RISCV32
|
|
67
|
+
mode.Set("RISCV32", Napi::Number::New(env, CS_MODE_RISCV32));
|
|
68
|
+
mode.Set("RISCV64", Napi::Number::New(env, CS_MODE_RISCV64));
|
|
69
|
+
mode.Set("RISCVC", Napi::Number::New(env, CS_MODE_RISCVC));
|
|
70
|
+
#endif
|
|
71
|
+
exports.Set("MODE", mode);
|
|
72
|
+
|
|
73
|
+
// Export option constants
|
|
74
|
+
Napi::Object opt = Napi::Object::New(env);
|
|
75
|
+
opt.Set("SYNTAX", Napi::Number::New(env, CS_OPT_SYNTAX));
|
|
76
|
+
opt.Set("DETAIL", Napi::Number::New(env, CS_OPT_DETAIL));
|
|
77
|
+
opt.Set("MODE", Napi::Number::New(env, CS_OPT_MODE));
|
|
78
|
+
opt.Set("MEM", Napi::Number::New(env, CS_OPT_MEM));
|
|
79
|
+
opt.Set("SKIPDATA", Napi::Number::New(env, CS_OPT_SKIPDATA));
|
|
80
|
+
opt.Set("SKIPDATA_SETUP", Napi::Number::New(env, CS_OPT_SKIPDATA_SETUP));
|
|
81
|
+
opt.Set("MNEMONIC", Napi::Number::New(env, CS_OPT_MNEMONIC));
|
|
82
|
+
opt.Set("UNSIGNED", Napi::Number::New(env, CS_OPT_UNSIGNED));
|
|
83
|
+
exports.Set("OPT", opt);
|
|
84
|
+
|
|
85
|
+
// Export option value constants
|
|
86
|
+
Napi::Object optValue = Napi::Object::New(env);
|
|
87
|
+
optValue.Set("OFF", Napi::Number::New(env, CS_OPT_OFF));
|
|
88
|
+
optValue.Set("ON", Napi::Number::New(env, CS_OPT_ON));
|
|
89
|
+
optValue.Set("SYNTAX_DEFAULT", Napi::Number::New(env, CS_OPT_SYNTAX_DEFAULT));
|
|
90
|
+
optValue.Set("SYNTAX_INTEL", Napi::Number::New(env, CS_OPT_SYNTAX_INTEL));
|
|
91
|
+
optValue.Set("SYNTAX_ATT", Napi::Number::New(env, CS_OPT_SYNTAX_ATT));
|
|
92
|
+
optValue.Set("SYNTAX_NOREGNAME", Napi::Number::New(env, CS_OPT_SYNTAX_NOREGNAME));
|
|
93
|
+
optValue.Set("SYNTAX_MASM", Napi::Number::New(env, CS_OPT_SYNTAX_MASM));
|
|
94
|
+
exports.Set("OPT_VALUE", optValue);
|
|
95
|
+
|
|
96
|
+
// Export error constants
|
|
97
|
+
Napi::Object err = Napi::Object::New(env);
|
|
98
|
+
err.Set("OK", Napi::Number::New(env, CS_ERR_OK));
|
|
99
|
+
err.Set("MEM", Napi::Number::New(env, CS_ERR_MEM));
|
|
100
|
+
err.Set("ARCH", Napi::Number::New(env, CS_ERR_ARCH));
|
|
101
|
+
err.Set("HANDLE", Napi::Number::New(env, CS_ERR_HANDLE));
|
|
102
|
+
err.Set("CSH", Napi::Number::New(env, CS_ERR_CSH));
|
|
103
|
+
err.Set("MODE", Napi::Number::New(env, CS_ERR_MODE));
|
|
104
|
+
err.Set("OPTION", Napi::Number::New(env, CS_ERR_OPTION));
|
|
105
|
+
err.Set("DETAIL", Napi::Number::New(env, CS_ERR_DETAIL));
|
|
106
|
+
err.Set("MEMSETUP", Napi::Number::New(env, CS_ERR_MEMSETUP));
|
|
107
|
+
err.Set("VERSION", Napi::Number::New(env, CS_ERR_VERSION));
|
|
108
|
+
err.Set("DIET", Napi::Number::New(env, CS_ERR_DIET));
|
|
109
|
+
err.Set("SKIPDATA", Napi::Number::New(env, CS_ERR_SKIPDATA));
|
|
110
|
+
err.Set("X86_ATT", Napi::Number::New(env, CS_ERR_X86_ATT));
|
|
111
|
+
err.Set("X86_INTEL", Napi::Number::New(env, CS_ERR_X86_INTEL));
|
|
112
|
+
err.Set("X86_MASM", Napi::Number::New(env, CS_ERR_X86_MASM));
|
|
113
|
+
exports.Set("ERR", err);
|
|
114
|
+
|
|
115
|
+
// Export version function
|
|
116
|
+
exports.Set("version", Napi::Function::New(env, [](const Napi::CallbackInfo& info) {
|
|
117
|
+
Napi::Env env = info.Env();
|
|
118
|
+
int major, minor;
|
|
119
|
+
cs_version(&major, &minor);
|
|
120
|
+
|
|
121
|
+
Napi::Object version = Napi::Object::New(env);
|
|
122
|
+
version.Set("major", Napi::Number::New(env, major));
|
|
123
|
+
version.Set("minor", Napi::Number::New(env, minor));
|
|
124
|
+
version.Set("string", Napi::String::New(env,
|
|
125
|
+
std::to_string(major) + "." + std::to_string(minor)));
|
|
126
|
+
return version;
|
|
127
|
+
}));
|
|
128
|
+
|
|
129
|
+
// Export support check function
|
|
130
|
+
exports.Set("support", Napi::Function::New(env, [](const Napi::CallbackInfo& info) {
|
|
131
|
+
Napi::Env env = info.Env();
|
|
132
|
+
if (info.Length() < 1 || !info[0].IsNumber()) {
|
|
133
|
+
Napi::TypeError::New(env, "Architecture constant required").ThrowAsJavaScriptException();
|
|
134
|
+
return Napi::Boolean::New(env, false);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
int arch = info[0].As<Napi::Number>().Int32Value();
|
|
138
|
+
bool supported = cs_support(arch);
|
|
139
|
+
return Napi::Boolean::New(env, supported);
|
|
140
|
+
}));
|
|
141
|
+
|
|
142
|
+
return exports;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
NODE_API_MODULE(capstone_native, Init)
|