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.
Files changed (332) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +191 -0
  3. package/binding.gyp +168 -0
  4. package/deps/capstone/LEB128.h +38 -0
  5. package/deps/capstone/MCDisassembler.h +14 -0
  6. package/deps/capstone/MCFixedLenDisassembler.h +32 -0
  7. package/deps/capstone/MCInst.c +270 -0
  8. package/deps/capstone/MCInst.h +165 -0
  9. package/deps/capstone/MCInstrDesc.c +41 -0
  10. package/deps/capstone/MCInstrDesc.h +167 -0
  11. package/deps/capstone/MCRegisterInfo.c +151 -0
  12. package/deps/capstone/MCRegisterInfo.h +116 -0
  13. package/deps/capstone/Mapping.c +254 -0
  14. package/deps/capstone/Mapping.h +174 -0
  15. package/deps/capstone/MathExtras.h +442 -0
  16. package/deps/capstone/SStream.c +181 -0
  17. package/deps/capstone/SStream.h +40 -0
  18. package/deps/capstone/arch/AArch64/AArch64AddressingModes.h +945 -0
  19. package/deps/capstone/arch/AArch64/AArch64BaseInfo.c +77 -0
  20. package/deps/capstone/arch/AArch64/AArch64BaseInfo.h +585 -0
  21. package/deps/capstone/arch/AArch64/AArch64Disassembler.c +2280 -0
  22. package/deps/capstone/arch/AArch64/AArch64Disassembler.h +18 -0
  23. package/deps/capstone/arch/AArch64/AArch64GenAsmWriter.inc +26589 -0
  24. package/deps/capstone/arch/AArch64/AArch64GenDisassemblerTables.inc +27322 -0
  25. package/deps/capstone/arch/AArch64/AArch64GenInstrInfo.inc +13194 -0
  26. package/deps/capstone/arch/AArch64/AArch64GenRegisterInfo.inc +3814 -0
  27. package/deps/capstone/arch/AArch64/AArch64GenRegisterName.inc +714 -0
  28. package/deps/capstone/arch/AArch64/AArch64GenRegisterV.inc +673 -0
  29. package/deps/capstone/arch/AArch64/AArch64GenSubtargetInfo.inc +229 -0
  30. package/deps/capstone/arch/AArch64/AArch64GenSystemOperands.inc +2863 -0
  31. package/deps/capstone/arch/AArch64/AArch64GenSystemOperands_enum.inc +21 -0
  32. package/deps/capstone/arch/AArch64/AArch64InstPrinter.c +3029 -0
  33. package/deps/capstone/arch/AArch64/AArch64InstPrinter.h +28 -0
  34. package/deps/capstone/arch/AArch64/AArch64Mapping.c +883 -0
  35. package/deps/capstone/arch/AArch64/AArch64Mapping.h +43 -0
  36. package/deps/capstone/arch/AArch64/AArch64MappingInsn.inc +37790 -0
  37. package/deps/capstone/arch/AArch64/AArch64MappingInsnName.inc +1282 -0
  38. package/deps/capstone/arch/AArch64/AArch64MappingInsnOp.inc +26994 -0
  39. package/deps/capstone/arch/AArch64/AArch64Module.c +44 -0
  40. package/deps/capstone/arch/AArch64/AArch64Module.h +12 -0
  41. package/deps/capstone/arch/ARM/ARMAddressingModes.h +698 -0
  42. package/deps/capstone/arch/ARM/ARMBaseInfo.h +486 -0
  43. package/deps/capstone/arch/ARM/ARMDisassembler.c +5763 -0
  44. package/deps/capstone/arch/ARM/ARMDisassembler.h +18 -0
  45. package/deps/capstone/arch/ARM/ARMGenAsmWriter.inc +9545 -0
  46. package/deps/capstone/arch/ARM/ARMGenDisassemblerTables.inc +15185 -0
  47. package/deps/capstone/arch/ARM/ARMGenInstrInfo.inc +6632 -0
  48. package/deps/capstone/arch/ARM/ARMGenRegisterInfo.inc +2102 -0
  49. package/deps/capstone/arch/ARM/ARMGenRegisterName.inc +231 -0
  50. package/deps/capstone/arch/ARM/ARMGenRegisterName_digit.inc +231 -0
  51. package/deps/capstone/arch/ARM/ARMGenSubtargetInfo.inc +162 -0
  52. package/deps/capstone/arch/ARM/ARMGenSystemRegister.inc +270 -0
  53. package/deps/capstone/arch/ARM/ARMInstPrinter.c +3364 -0
  54. package/deps/capstone/arch/ARM/ARMInstPrinter.h +43 -0
  55. package/deps/capstone/arch/ARM/ARMMapping.c +551 -0
  56. package/deps/capstone/arch/ARM/ARMMapping.h +40 -0
  57. package/deps/capstone/arch/ARM/ARMMappingInsn.inc +18772 -0
  58. package/deps/capstone/arch/ARM/ARMMappingInsnName.inc +475 -0
  59. package/deps/capstone/arch/ARM/ARMMappingInsnOp.inc +10729 -0
  60. package/deps/capstone/arch/ARM/ARMModule.c +63 -0
  61. package/deps/capstone/arch/ARM/ARMModule.h +12 -0
  62. package/deps/capstone/arch/BPF/BPFConstants.h +88 -0
  63. package/deps/capstone/arch/BPF/BPFDisassembler.c +464 -0
  64. package/deps/capstone/arch/BPF/BPFDisassembler.h +27 -0
  65. package/deps/capstone/arch/BPF/BPFInstPrinter.c +285 -0
  66. package/deps/capstone/arch/BPF/BPFInstPrinter.h +16 -0
  67. package/deps/capstone/arch/BPF/BPFMapping.c +513 -0
  68. package/deps/capstone/arch/BPF/BPFMapping.h +21 -0
  69. package/deps/capstone/arch/BPF/BPFModule.c +34 -0
  70. package/deps/capstone/arch/BPF/BPFModule.h +12 -0
  71. package/deps/capstone/arch/EVM/EVMDisassembler.c +379 -0
  72. package/deps/capstone/arch/EVM/EVMDisassembler.h +12 -0
  73. package/deps/capstone/arch/EVM/EVMInstPrinter.c +20 -0
  74. package/deps/capstone/arch/EVM/EVMInstPrinter.h +17 -0
  75. package/deps/capstone/arch/EVM/EVMMapping.c +344 -0
  76. package/deps/capstone/arch/EVM/EVMMapping.h +8 -0
  77. package/deps/capstone/arch/EVM/EVMMappingInsn.inc +259 -0
  78. package/deps/capstone/arch/EVM/EVMModule.c +33 -0
  79. package/deps/capstone/arch/EVM/EVMModule.h +12 -0
  80. package/deps/capstone/arch/M680X/M680XDisassembler.c +2307 -0
  81. package/deps/capstone/arch/M680X/M680XDisassembler.h +17 -0
  82. package/deps/capstone/arch/M680X/M680XDisassemblerInternals.h +57 -0
  83. package/deps/capstone/arch/M680X/M680XInstPrinter.c +360 -0
  84. package/deps/capstone/arch/M680X/M680XInstPrinter.h +25 -0
  85. package/deps/capstone/arch/M680X/M680XModule.c +77 -0
  86. package/deps/capstone/arch/M680X/M680XModule.h +12 -0
  87. package/deps/capstone/arch/M680X/cpu12.inc +335 -0
  88. package/deps/capstone/arch/M680X/hcs08.inc +60 -0
  89. package/deps/capstone/arch/M680X/hd6301.inc +15 -0
  90. package/deps/capstone/arch/M680X/hd6309.inc +259 -0
  91. package/deps/capstone/arch/M680X/insn_props.inc +367 -0
  92. package/deps/capstone/arch/M680X/m6800.inc +277 -0
  93. package/deps/capstone/arch/M680X/m6801.inc +39 -0
  94. package/deps/capstone/arch/M680X/m6805.inc +277 -0
  95. package/deps/capstone/arch/M680X/m6808.inc +91 -0
  96. package/deps/capstone/arch/M680X/m6809.inc +352 -0
  97. package/deps/capstone/arch/M680X/m6811.inc +105 -0
  98. package/deps/capstone/arch/M68K/M68KDisassembler.c +3668 -0
  99. package/deps/capstone/arch/M68K/M68KDisassembler.h +30 -0
  100. package/deps/capstone/arch/M68K/M68KInstPrinter.c +387 -0
  101. package/deps/capstone/arch/M68K/M68KInstPrinter.h +21 -0
  102. package/deps/capstone/arch/M68K/M68KInstructionTable.inc +65540 -0
  103. package/deps/capstone/arch/M68K/M68KModule.c +42 -0
  104. package/deps/capstone/arch/M68K/M68KModule.h +12 -0
  105. package/deps/capstone/arch/MOS65XX/MOS65XXDisassembler.c +544 -0
  106. package/deps/capstone/arch/MOS65XX/MOS65XXDisassembler.h +22 -0
  107. package/deps/capstone/arch/MOS65XX/MOS65XXDisassemblerInternals.h +23 -0
  108. package/deps/capstone/arch/MOS65XX/MOS65XXModule.c +79 -0
  109. package/deps/capstone/arch/MOS65XX/MOS65XXModule.h +12 -0
  110. package/deps/capstone/arch/MOS65XX/instruction_info.inc +106 -0
  111. package/deps/capstone/arch/MOS65XX/m6502.inc +256 -0
  112. package/deps/capstone/arch/MOS65XX/m65816.inc +256 -0
  113. package/deps/capstone/arch/MOS65XX/m65c02.inc +256 -0
  114. package/deps/capstone/arch/MOS65XX/mw65c02.inc +256 -0
  115. package/deps/capstone/arch/Mips/MipsDisassembler.c +1794 -0
  116. package/deps/capstone/arch/Mips/MipsDisassembler.h +16 -0
  117. package/deps/capstone/arch/Mips/MipsGenAsmWriter.inc +5725 -0
  118. package/deps/capstone/arch/Mips/MipsGenDisassemblerTables.inc +6942 -0
  119. package/deps/capstone/arch/Mips/MipsGenInstrInfo.inc +1805 -0
  120. package/deps/capstone/arch/Mips/MipsGenRegisterInfo.inc +1679 -0
  121. package/deps/capstone/arch/Mips/MipsGenSubtargetInfo.inc +52 -0
  122. package/deps/capstone/arch/Mips/MipsInstPrinter.c +424 -0
  123. package/deps/capstone/arch/Mips/MipsInstPrinter.h +25 -0
  124. package/deps/capstone/arch/Mips/MipsMapping.c +1070 -0
  125. package/deps/capstone/arch/Mips/MipsMapping.h +25 -0
  126. package/deps/capstone/arch/Mips/MipsMappingInsn.inc +9315 -0
  127. package/deps/capstone/arch/Mips/MipsModule.c +52 -0
  128. package/deps/capstone/arch/Mips/MipsModule.h +12 -0
  129. package/deps/capstone/arch/PowerPC/PPCDisassembler.c +627 -0
  130. package/deps/capstone/arch/PowerPC/PPCDisassembler.h +17 -0
  131. package/deps/capstone/arch/PowerPC/PPCGenAsmWriter.inc +11451 -0
  132. package/deps/capstone/arch/PowerPC/PPCGenDisassemblerTables.inc +6886 -0
  133. package/deps/capstone/arch/PowerPC/PPCGenInstrInfo.inc +4772 -0
  134. package/deps/capstone/arch/PowerPC/PPCGenRegisterInfo.inc +1122 -0
  135. package/deps/capstone/arch/PowerPC/PPCGenRegisterName.inc +278 -0
  136. package/deps/capstone/arch/PowerPC/PPCGenSubtargetInfo.inc +90 -0
  137. package/deps/capstone/arch/PowerPC/PPCInstPrinter.c +1238 -0
  138. package/deps/capstone/arch/PowerPC/PPCInstPrinter.h +15 -0
  139. package/deps/capstone/arch/PowerPC/PPCMapping.c +570 -0
  140. package/deps/capstone/arch/PowerPC/PPCMapping.h +40 -0
  141. package/deps/capstone/arch/PowerPC/PPCMappingInsn.inc +13220 -0
  142. package/deps/capstone/arch/PowerPC/PPCMappingInsnName.inc +1731 -0
  143. package/deps/capstone/arch/PowerPC/PPCModule.c +45 -0
  144. package/deps/capstone/arch/PowerPC/PPCModule.h +12 -0
  145. package/deps/capstone/arch/PowerPC/PPCPredicates.h +62 -0
  146. package/deps/capstone/arch/RISCV/RISCVBaseInfo.h +106 -0
  147. package/deps/capstone/arch/RISCV/RISCVDisassembler.c +433 -0
  148. package/deps/capstone/arch/RISCV/RISCVDisassembler.h +18 -0
  149. package/deps/capstone/arch/RISCV/RISCVGenAsmWriter.inc +2651 -0
  150. package/deps/capstone/arch/RISCV/RISCVGenDisassemblerTables.inc +1776 -0
  151. package/deps/capstone/arch/RISCV/RISCVGenInsnNameMaps.inc +275 -0
  152. package/deps/capstone/arch/RISCV/RISCVGenInstrInfo.inc +470 -0
  153. package/deps/capstone/arch/RISCV/RISCVGenRegisterInfo.inc +426 -0
  154. package/deps/capstone/arch/RISCV/RISCVGenSubtargetInfo.inc +33 -0
  155. package/deps/capstone/arch/RISCV/RISCVInstPrinter.c +447 -0
  156. package/deps/capstone/arch/RISCV/RISCVInstPrinter.h +24 -0
  157. package/deps/capstone/arch/RISCV/RISCVMapping.c +366 -0
  158. package/deps/capstone/arch/RISCV/RISCVMapping.h +22 -0
  159. package/deps/capstone/arch/RISCV/RISCVMappingInsn.inc +1635 -0
  160. package/deps/capstone/arch/RISCV/RISCVModule.c +42 -0
  161. package/deps/capstone/arch/RISCV/RISCVModule.h +12 -0
  162. package/deps/capstone/arch/SH/SHDisassembler.c +2221 -0
  163. package/deps/capstone/arch/SH/SHDisassembler.h +19 -0
  164. package/deps/capstone/arch/SH/SHInsnTable.inc +66 -0
  165. package/deps/capstone/arch/SH/SHInstPrinter.c +438 -0
  166. package/deps/capstone/arch/SH/SHInstPrinter.h +23 -0
  167. package/deps/capstone/arch/SH/SHModule.c +39 -0
  168. package/deps/capstone/arch/SH/SHModule.h +12 -0
  169. package/deps/capstone/arch/SH/mktable.rb +390 -0
  170. package/deps/capstone/arch/Sparc/Sparc.h +63 -0
  171. package/deps/capstone/arch/Sparc/SparcDisassembler.c +500 -0
  172. package/deps/capstone/arch/Sparc/SparcDisassembler.h +17 -0
  173. package/deps/capstone/arch/Sparc/SparcGenAsmWriter.inc +5709 -0
  174. package/deps/capstone/arch/Sparc/SparcGenDisassemblerTables.inc +2028 -0
  175. package/deps/capstone/arch/Sparc/SparcGenInstrInfo.inc +514 -0
  176. package/deps/capstone/arch/Sparc/SparcGenRegisterInfo.inc +451 -0
  177. package/deps/capstone/arch/Sparc/SparcGenSubtargetInfo.inc +27 -0
  178. package/deps/capstone/arch/Sparc/SparcInstPrinter.c +446 -0
  179. package/deps/capstone/arch/Sparc/SparcInstPrinter.h +17 -0
  180. package/deps/capstone/arch/Sparc/SparcMapping.c +665 -0
  181. package/deps/capstone/arch/Sparc/SparcMapping.h +34 -0
  182. package/deps/capstone/arch/Sparc/SparcMappingInsn.inc +2643 -0
  183. package/deps/capstone/arch/Sparc/SparcModule.c +45 -0
  184. package/deps/capstone/arch/Sparc/SparcModule.h +12 -0
  185. package/deps/capstone/arch/SystemZ/SystemZDisassembler.c +484 -0
  186. package/deps/capstone/arch/SystemZ/SystemZDisassembler.h +17 -0
  187. package/deps/capstone/arch/SystemZ/SystemZGenAsmWriter.inc +11575 -0
  188. package/deps/capstone/arch/SystemZ/SystemZGenDisassemblerTables.inc +10262 -0
  189. package/deps/capstone/arch/SystemZ/SystemZGenInsnNameMaps.inc +2348 -0
  190. package/deps/capstone/arch/SystemZ/SystemZGenInstrInfo.inc +2820 -0
  191. package/deps/capstone/arch/SystemZ/SystemZGenRegisterInfo.inc +741 -0
  192. package/deps/capstone/arch/SystemZ/SystemZGenSubtargetInfo.inc +49 -0
  193. package/deps/capstone/arch/SystemZ/SystemZInstPrinter.c +433 -0
  194. package/deps/capstone/arch/SystemZ/SystemZInstPrinter.h +15 -0
  195. package/deps/capstone/arch/SystemZ/SystemZMCTargetDesc.c +195 -0
  196. package/deps/capstone/arch/SystemZ/SystemZMCTargetDesc.h +51 -0
  197. package/deps/capstone/arch/SystemZ/SystemZMapping.c +479 -0
  198. package/deps/capstone/arch/SystemZ/SystemZMapping.h +23 -0
  199. package/deps/capstone/arch/SystemZ/SystemZMappingInsn.inc +14175 -0
  200. package/deps/capstone/arch/SystemZ/SystemZModule.c +44 -0
  201. package/deps/capstone/arch/SystemZ/SystemZModule.h +12 -0
  202. package/deps/capstone/arch/TMS320C64x/TMS320C64xDisassembler.c +628 -0
  203. package/deps/capstone/arch/TMS320C64x/TMS320C64xDisassembler.h +19 -0
  204. package/deps/capstone/arch/TMS320C64x/TMS320C64xGenAsmWriter.inc +684 -0
  205. package/deps/capstone/arch/TMS320C64x/TMS320C64xGenDisassemblerTables.inc +1352 -0
  206. package/deps/capstone/arch/TMS320C64x/TMS320C64xGenInstrInfo.inc +298 -0
  207. package/deps/capstone/arch/TMS320C64x/TMS320C64xGenRegisterInfo.inc +277 -0
  208. package/deps/capstone/arch/TMS320C64x/TMS320C64xInstPrinter.c +572 -0
  209. package/deps/capstone/arch/TMS320C64x/TMS320C64xInstPrinter.h +15 -0
  210. package/deps/capstone/arch/TMS320C64x/TMS320C64xMapping.c +1926 -0
  211. package/deps/capstone/arch/TMS320C64x/TMS320C64xMapping.h +26 -0
  212. package/deps/capstone/arch/TMS320C64x/TMS320C64xModule.c +39 -0
  213. package/deps/capstone/arch/TMS320C64x/TMS320C64xModule.h +12 -0
  214. package/deps/capstone/arch/TriCore/TriCore.td +134 -0
  215. package/deps/capstone/arch/TriCore/TriCoreCallingConv.td +61 -0
  216. package/deps/capstone/arch/TriCore/TriCoreDisassembler.c +1655 -0
  217. package/deps/capstone/arch/TriCore/TriCoreDisassembler.h +18 -0
  218. package/deps/capstone/arch/TriCore/TriCoreGenAsmWriter.inc +3691 -0
  219. package/deps/capstone/arch/TriCore/TriCoreGenCSFeatureName.inc +22 -0
  220. package/deps/capstone/arch/TriCore/TriCoreGenCSMappingInsn.inc +8938 -0
  221. package/deps/capstone/arch/TriCore/TriCoreGenCSMappingInsnName.inc +404 -0
  222. package/deps/capstone/arch/TriCore/TriCoreGenCSMappingInsnOp.inc +7994 -0
  223. package/deps/capstone/arch/TriCore/TriCoreGenCSOpGroup.inc +32 -0
  224. package/deps/capstone/arch/TriCore/TriCoreGenDisassemblerTables.inc +4044 -0
  225. package/deps/capstone/arch/TriCore/TriCoreGenInstrInfo.inc +2693 -0
  226. package/deps/capstone/arch/TriCore/TriCoreGenRegisterInfo.inc +295 -0
  227. package/deps/capstone/arch/TriCore/TriCoreGenSubtargetInfo.inc +40 -0
  228. package/deps/capstone/arch/TriCore/TriCoreInstPrinter.c +488 -0
  229. package/deps/capstone/arch/TriCore/TriCoreInstrFormats.td +773 -0
  230. package/deps/capstone/arch/TriCore/TriCoreInstrInfo.td +1873 -0
  231. package/deps/capstone/arch/TriCore/TriCoreLinkage.h +21 -0
  232. package/deps/capstone/arch/TriCore/TriCoreMapping.c +241 -0
  233. package/deps/capstone/arch/TriCore/TriCoreMapping.h +32 -0
  234. package/deps/capstone/arch/TriCore/TriCoreModule.c +44 -0
  235. package/deps/capstone/arch/TriCore/TriCoreModule.h +11 -0
  236. package/deps/capstone/arch/TriCore/TriCoreRegisterInfo.td +153 -0
  237. package/deps/capstone/arch/WASM/WASMDisassembler.c +1009 -0
  238. package/deps/capstone/arch/WASM/WASMDisassembler.h +12 -0
  239. package/deps/capstone/arch/WASM/WASMInstPrinter.c +47 -0
  240. package/deps/capstone/arch/WASM/WASMInstPrinter.h +18 -0
  241. package/deps/capstone/arch/WASM/WASMMapping.c +333 -0
  242. package/deps/capstone/arch/WASM/WASMMapping.h +9 -0
  243. package/deps/capstone/arch/WASM/WASMModule.c +33 -0
  244. package/deps/capstone/arch/WASM/WASMModule.h +12 -0
  245. package/deps/capstone/arch/X86/X86ATTInstPrinter.c +997 -0
  246. package/deps/capstone/arch/X86/X86BaseInfo.h +50 -0
  247. package/deps/capstone/arch/X86/X86Disassembler.c +1033 -0
  248. package/deps/capstone/arch/X86/X86Disassembler.h +28 -0
  249. package/deps/capstone/arch/X86/X86DisassemblerDecoder.c +2358 -0
  250. package/deps/capstone/arch/X86/X86DisassemblerDecoder.h +725 -0
  251. package/deps/capstone/arch/X86/X86DisassemblerDecoderCommon.h +483 -0
  252. package/deps/capstone/arch/X86/X86GenAsmWriter.inc +49199 -0
  253. package/deps/capstone/arch/X86/X86GenAsmWriter1.inc +33196 -0
  254. package/deps/capstone/arch/X86/X86GenAsmWriter1_reduce.inc +2531 -0
  255. package/deps/capstone/arch/X86/X86GenAsmWriter_reduce.inc +2855 -0
  256. package/deps/capstone/arch/X86/X86GenDisassemblerTables.inc +112961 -0
  257. package/deps/capstone/arch/X86/X86GenDisassemblerTables2.inc +102151 -0
  258. package/deps/capstone/arch/X86/X86GenDisassemblerTables_reduce.inc +28047 -0
  259. package/deps/capstone/arch/X86/X86GenDisassemblerTables_reduce2.inc +18827 -0
  260. package/deps/capstone/arch/X86/X86GenInstrInfo.inc +15158 -0
  261. package/deps/capstone/arch/X86/X86GenInstrInfo_reduce.inc +1564 -0
  262. package/deps/capstone/arch/X86/X86GenRegisterInfo.inc +1549 -0
  263. package/deps/capstone/arch/X86/X86GenRegisterName.inc +292 -0
  264. package/deps/capstone/arch/X86/X86GenRegisterName1.inc +291 -0
  265. package/deps/capstone/arch/X86/X86ImmSize.inc +335 -0
  266. package/deps/capstone/arch/X86/X86InstPrinter.h +26 -0
  267. package/deps/capstone/arch/X86/X86InstPrinterCommon.c +116 -0
  268. package/deps/capstone/arch/X86/X86InstPrinterCommon.h +16 -0
  269. package/deps/capstone/arch/X86/X86IntelInstPrinter.c +1061 -0
  270. package/deps/capstone/arch/X86/X86Lookup16.inc +16874 -0
  271. package/deps/capstone/arch/X86/X86Lookup16_reduce.inc +2308 -0
  272. package/deps/capstone/arch/X86/X86Mapping.c +2266 -0
  273. package/deps/capstone/arch/X86/X86Mapping.h +96 -0
  274. package/deps/capstone/arch/X86/X86MappingInsn.inc +105977 -0
  275. package/deps/capstone/arch/X86/X86MappingInsnName.inc +1527 -0
  276. package/deps/capstone/arch/X86/X86MappingInsnName_reduce.inc +348 -0
  277. package/deps/capstone/arch/X86/X86MappingInsnOp.inc +75700 -0
  278. package/deps/capstone/arch/X86/X86MappingInsnOp_reduce.inc +7729 -0
  279. package/deps/capstone/arch/X86/X86MappingInsn_reduce.inc +10819 -0
  280. package/deps/capstone/arch/X86/X86MappingReg.inc +280 -0
  281. package/deps/capstone/arch/X86/X86Module.c +94 -0
  282. package/deps/capstone/arch/X86/X86Module.h +12 -0
  283. package/deps/capstone/arch/XCore/XCoreDisassembler.c +794 -0
  284. package/deps/capstone/arch/XCore/XCoreDisassembler.h +17 -0
  285. package/deps/capstone/arch/XCore/XCoreGenAsmWriter.inc +772 -0
  286. package/deps/capstone/arch/XCore/XCoreGenDisassemblerTables.inc +853 -0
  287. package/deps/capstone/arch/XCore/XCoreGenInstrInfo.inc +267 -0
  288. package/deps/capstone/arch/XCore/XCoreGenRegisterInfo.inc +110 -0
  289. package/deps/capstone/arch/XCore/XCoreInstPrinter.c +250 -0
  290. package/deps/capstone/arch/XCore/XCoreInstPrinter.h +18 -0
  291. package/deps/capstone/arch/XCore/XCoreMapping.c +297 -0
  292. package/deps/capstone/arch/XCore/XCoreMapping.h +26 -0
  293. package/deps/capstone/arch/XCore/XCoreMappingInsn.inc +1287 -0
  294. package/deps/capstone/arch/XCore/XCoreModule.c +41 -0
  295. package/deps/capstone/arch/XCore/XCoreModule.h +12 -0
  296. package/deps/capstone/cs.c +1664 -0
  297. package/deps/capstone/cs_priv.h +101 -0
  298. package/deps/capstone/cs_simple_types.h +886 -0
  299. package/deps/capstone/include/capstone/arm.h +991 -0
  300. package/deps/capstone/include/capstone/arm64.h +3159 -0
  301. package/deps/capstone/include/capstone/bpf.h +209 -0
  302. package/deps/capstone/include/capstone/capstone.h +875 -0
  303. package/deps/capstone/include/capstone/evm.h +188 -0
  304. package/deps/capstone/include/capstone/m680x.h +537 -0
  305. package/deps/capstone/include/capstone/m68k.h +613 -0
  306. package/deps/capstone/include/capstone/mips.h +956 -0
  307. package/deps/capstone/include/capstone/mos65xx.h +204 -0
  308. package/deps/capstone/include/capstone/platform.h +122 -0
  309. package/deps/capstone/include/capstone/ppc.h +2108 -0
  310. package/deps/capstone/include/capstone/riscv.h +531 -0
  311. package/deps/capstone/include/capstone/sh.h +465 -0
  312. package/deps/capstone/include/capstone/sparc.h +520 -0
  313. package/deps/capstone/include/capstone/systemz.h +2601 -0
  314. package/deps/capstone/include/capstone/tms320c64x.h +359 -0
  315. package/deps/capstone/include/capstone/tricore.h +567 -0
  316. package/deps/capstone/include/capstone/wasm.h +250 -0
  317. package/deps/capstone/include/capstone/x86.h +1986 -0
  318. package/deps/capstone/include/capstone/xcore.h +235 -0
  319. package/deps/capstone/include/platform.h +110 -0
  320. package/deps/capstone/include/windowsce/intrin.h +12 -0
  321. package/deps/capstone/include/windowsce/stdint.h +133 -0
  322. package/deps/capstone/utils.c +140 -0
  323. package/deps/capstone/utils.h +54 -0
  324. package/index.d.ts +448 -0
  325. package/index.js +64 -0
  326. package/index.mjs +25 -0
  327. package/package.json +82 -0
  328. package/prebuilds/win32-x64/hexcore-capstone.node +0 -0
  329. package/src/capstone_wrapper.cpp +910 -0
  330. package/src/capstone_wrapper.h +147 -0
  331. package/src/disasm_async_worker.h +215 -0
  332. 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)