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,42 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* M68K Backend by Daniel Collin <daniel@collin.com> 2015 */
3
+
4
+ #ifdef CAPSTONE_HAS_M68K
5
+
6
+ #include "../../utils.h"
7
+ #include "../../MCRegisterInfo.h"
8
+ #include "M68KDisassembler.h"
9
+ #include "M68KInstPrinter.h"
10
+ #include "M68KModule.h"
11
+
12
+ cs_err M68K_global_init(cs_struct *ud)
13
+ {
14
+ m68k_info *info;
15
+
16
+ info = cs_mem_malloc(sizeof(m68k_info));
17
+ if (!info) {
18
+ return CS_ERR_MEM;
19
+ }
20
+
21
+ ud->printer = M68K_printInst;
22
+ ud->printer_info = info;
23
+ ud->getinsn_info = NULL;
24
+ ud->disasm = M68K_getInstruction;
25
+ ud->skipdata_size = 2;
26
+ ud->post_printer = NULL;
27
+
28
+ ud->reg_name = M68K_reg_name;
29
+ ud->insn_id = M68K_get_insn_id;
30
+ ud->insn_name = M68K_insn_name;
31
+ ud->group_name = M68K_group_name;
32
+
33
+ return CS_ERR_OK;
34
+ }
35
+
36
+ cs_err M68K_option(cs_struct *handle, cs_opt_type type, size_t value)
37
+ {
38
+ return CS_ERR_OK;
39
+ }
40
+
41
+ #endif
42
+
@@ -0,0 +1,12 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* By Travis Finkenauer <tmfinken@gmail.com>, 2018 */
3
+
4
+ #ifndef CS_M68K_MODULE_H
5
+ #define CS_M68K_MODULE_H
6
+
7
+ #include "../../utils.h"
8
+
9
+ cs_err M68K_global_init(cs_struct *ud);
10
+ cs_err M68K_option(cs_struct *handle, cs_opt_type type, size_t value);
11
+
12
+ #endif
@@ -0,0 +1,544 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* MOS65XX Backend by Sebastian Macke <sebastian@macke.de> 2018 */
3
+
4
+ #include "capstone/mos65xx.h"
5
+ #include "MOS65XXDisassembler.h"
6
+ #include "MOS65XXDisassemblerInternals.h"
7
+
8
+ typedef struct OpInfo {
9
+ mos65xx_insn ins;
10
+ mos65xx_address_mode am;
11
+ int operand_bytes;
12
+ } OpInfo;
13
+
14
+ static const struct OpInfo OpInfoTable[]= {
15
+
16
+ #include "m6502.inc"
17
+ #include "m65c02.inc"
18
+ #include "mw65c02.inc"
19
+ #include "m65816.inc"
20
+
21
+ };
22
+
23
+ static const char* const RegNames[] = {
24
+ "invalid", "A", "X", "Y", "P", "SP", "DP", "B", "K"
25
+ };
26
+
27
+ #ifndef CAPSTONE_DIET
28
+ static const char* const GroupNames[] = {
29
+ NULL,
30
+ "jump",
31
+ "call",
32
+ "ret",
33
+ "int",
34
+ "iret",
35
+ "branch_relative"
36
+ };
37
+
38
+ typedef struct InstructionInfo {
39
+ const char* name;
40
+ mos65xx_group_type group_type;
41
+ mos65xx_reg write, read;
42
+ bool modifies_status;
43
+ } InstructionInfo;
44
+
45
+ static const struct InstructionInfo InstructionInfoTable[]= {
46
+
47
+ #include "instruction_info.inc"
48
+
49
+ };
50
+ #endif
51
+
52
+ #ifndef CAPSTONE_DIET
53
+ static void fillDetails(MCInst *MI, struct OpInfo opinfo, int cpu_type)
54
+ {
55
+ int i;
56
+ cs_detail *detail = MI->flat_insn->detail;
57
+
58
+ InstructionInfo insinfo = InstructionInfoTable[opinfo.ins];
59
+
60
+ detail->mos65xx.am = opinfo.am;
61
+ detail->mos65xx.modifies_flags = insinfo.modifies_status;
62
+ detail->groups_count = 0;
63
+ detail->regs_read_count = 0;
64
+ detail->regs_write_count = 0;
65
+ detail->mos65xx.op_count = 0;
66
+
67
+ if (insinfo.group_type != MOS65XX_GRP_INVALID) {
68
+ detail->groups[detail->groups_count] = insinfo.group_type;
69
+ detail->groups_count++;
70
+ }
71
+
72
+ if (opinfo.am == MOS65XX_AM_REL || opinfo.am == MOS65XX_AM_ZP_REL) {
73
+ detail->groups[detail->groups_count] = MOS65XX_GRP_BRANCH_RELATIVE;
74
+ detail->groups_count++;
75
+ }
76
+
77
+ if (insinfo.read != MOS65XX_REG_INVALID) {
78
+ detail->regs_read[detail->regs_read_count++] = insinfo.read;
79
+ } else switch(opinfo.am) {
80
+ case MOS65XX_AM_ACC:
81
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_ACC;
82
+ break;
83
+ case MOS65XX_AM_ZP_Y:
84
+ case MOS65XX_AM_ZP_IND_Y:
85
+ case MOS65XX_AM_ABS_Y:
86
+ case MOS65XX_AM_ZP_IND_LONG_Y:
87
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_Y;
88
+ break;
89
+
90
+ case MOS65XX_AM_ZP_X:
91
+ case MOS65XX_AM_ZP_X_IND:
92
+ case MOS65XX_AM_ABS_X:
93
+ case MOS65XX_AM_ABS_X_IND:
94
+ case MOS65XX_AM_ABS_LONG_X:
95
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_X;
96
+ break;
97
+
98
+ case MOS65XX_AM_SR:
99
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_SP;
100
+ break;
101
+ case MOS65XX_AM_SR_IND_Y:
102
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_SP;
103
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_Y;
104
+ break;
105
+
106
+ default:
107
+ break;
108
+ }
109
+
110
+ if (insinfo.write != MOS65XX_REG_INVALID) {
111
+ detail->regs_write[detail->regs_write_count++] = insinfo.write;
112
+ } else if (opinfo.am == MOS65XX_AM_ACC) {
113
+ detail->regs_write[detail->regs_write_count++] = MOS65XX_REG_ACC;
114
+ }
115
+
116
+
117
+ switch(opinfo.ins) {
118
+ case MOS65XX_INS_ADC:
119
+ case MOS65XX_INS_SBC:
120
+ case MOS65XX_INS_ROL:
121
+ case MOS65XX_INS_ROR:
122
+ /* these read carry flag (and decimal for ADC/SBC) */
123
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_P;
124
+ break;
125
+ /* stack operations */
126
+ case MOS65XX_INS_JSL:
127
+ case MOS65XX_INS_JSR:
128
+ case MOS65XX_INS_PEA:
129
+ case MOS65XX_INS_PEI:
130
+ case MOS65XX_INS_PER:
131
+ case MOS65XX_INS_PHA:
132
+ case MOS65XX_INS_PHB:
133
+ case MOS65XX_INS_PHD:
134
+ case MOS65XX_INS_PHK:
135
+ case MOS65XX_INS_PHP:
136
+ case MOS65XX_INS_PHX:
137
+ case MOS65XX_INS_PHY:
138
+ case MOS65XX_INS_PLA:
139
+ case MOS65XX_INS_PLB:
140
+ case MOS65XX_INS_PLD:
141
+ case MOS65XX_INS_PLP:
142
+ case MOS65XX_INS_PLX:
143
+ case MOS65XX_INS_PLY:
144
+ case MOS65XX_INS_RTI:
145
+ case MOS65XX_INS_RTL:
146
+ case MOS65XX_INS_RTS:
147
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_SP;
148
+ detail->regs_write[detail->regs_write_count++] = MOS65XX_REG_SP;
149
+ break;
150
+ default:
151
+ break;
152
+ }
153
+
154
+ if (cpu_type == MOS65XX_CPU_TYPE_65816) {
155
+ switch (opinfo.am) {
156
+ case MOS65XX_AM_ZP:
157
+ case MOS65XX_AM_ZP_X:
158
+ case MOS65XX_AM_ZP_Y:
159
+ case MOS65XX_AM_ZP_IND:
160
+ case MOS65XX_AM_ZP_X_IND:
161
+ case MOS65XX_AM_ZP_IND_Y:
162
+ case MOS65XX_AM_ZP_IND_LONG:
163
+ case MOS65XX_AM_ZP_IND_LONG_Y:
164
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_DP;
165
+ break;
166
+ case MOS65XX_AM_BLOCK:
167
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_ACC;
168
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_X;
169
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_Y;
170
+ detail->regs_write[detail->regs_write_count++] = MOS65XX_REG_ACC;
171
+ detail->regs_write[detail->regs_write_count++] = MOS65XX_REG_X;
172
+ detail->regs_write[detail->regs_write_count++] = MOS65XX_REG_Y;
173
+ detail->regs_write[detail->regs_write_count++] = MOS65XX_REG_B;
174
+ break;
175
+ default:
176
+ break;
177
+ }
178
+
179
+ switch (opinfo.am) {
180
+ case MOS65XX_AM_ZP_IND:
181
+ case MOS65XX_AM_ZP_X_IND:
182
+ case MOS65XX_AM_ZP_IND_Y:
183
+ case MOS65XX_AM_ABS:
184
+ case MOS65XX_AM_ABS_X:
185
+ case MOS65XX_AM_ABS_Y:
186
+ case MOS65XX_AM_ABS_X_IND:
187
+ /* these depend on the databank to generate a 24-bit address */
188
+ /* exceptions: PEA, PEI, and JMP (abs) */
189
+ if (opinfo.ins == MOS65XX_INS_PEI || opinfo.ins == MOS65XX_INS_PEA) break;
190
+ detail->regs_read[detail->regs_read_count++] = MOS65XX_REG_B;
191
+ break;
192
+ default:
193
+ break;
194
+ }
195
+ }
196
+
197
+ if (insinfo.modifies_status) {
198
+ detail->regs_write[detail->regs_write_count++] = MOS65XX_REG_P;
199
+ }
200
+
201
+ switch(opinfo.am) {
202
+ case MOS65XX_AM_IMP:
203
+ break;
204
+ case MOS65XX_AM_IMM:
205
+ detail->mos65xx.operands[detail->mos65xx.op_count].type = MOS65XX_OP_IMM;
206
+ detail->mos65xx.operands[detail->mos65xx.op_count].imm = MI->Operands[0].ImmVal;
207
+ detail->mos65xx.op_count++;
208
+ break;
209
+ case MOS65XX_AM_ACC:
210
+ detail->mos65xx.operands[detail->mos65xx.op_count].type = MOS65XX_OP_REG;
211
+ detail->mos65xx.operands[detail->mos65xx.op_count].reg = MOS65XX_REG_ACC;
212
+ detail->mos65xx.op_count++;
213
+ break;
214
+ case MOS65XX_AM_REL: {
215
+ int value = MI->Operands[0].ImmVal;
216
+ if (MI->op1_size == 1)
217
+ value = 2 + (signed char)value;
218
+ else
219
+ value = 3 + (signed short)value;
220
+ detail->mos65xx.operands[detail->mos65xx.op_count].type = MOS65XX_OP_MEM;
221
+ detail->mos65xx.operands[detail->mos65xx.op_count].mem = (MI->address + value) & 0xffff;
222
+ detail->mos65xx.op_count++;
223
+ break;
224
+ }
225
+ case MOS65XX_AM_ZP_REL: {
226
+ int value = 3 + (signed char)MI->Operands[1].ImmVal;
227
+ /* BBR0, zp, rel and BBS0, zp, rel */
228
+ detail->mos65xx.operands[detail->mos65xx.op_count].type = MOS65XX_OP_MEM;
229
+ detail->mos65xx.operands[detail->mos65xx.op_count].mem = MI->Operands[0].ImmVal;
230
+ detail->mos65xx.operands[detail->mos65xx.op_count+1].type = MOS65XX_OP_MEM;
231
+ detail->mos65xx.operands[detail->mos65xx.op_count+1].mem = (MI->address + value) & 0xffff;
232
+ detail->mos65xx.op_count+=2;
233
+ break;
234
+ }
235
+ default:
236
+ for (i = 0; i < MI->size; ++i) {
237
+ detail->mos65xx.operands[detail->mos65xx.op_count].type = MOS65XX_OP_MEM;
238
+ detail->mos65xx.operands[detail->mos65xx.op_count].mem = MI->Operands[i].ImmVal;
239
+ detail->mos65xx.op_count++;
240
+ }
241
+ break;
242
+ }
243
+ }
244
+ #endif
245
+
246
+ void MOS65XX_printInst(MCInst *MI, struct SStream *O, void *PrinterInfo)
247
+ {
248
+ #ifndef CAPSTONE_DIET
249
+ unsigned int value;
250
+ unsigned opcode = MCInst_getOpcode(MI);
251
+ mos65xx_info *info = (mos65xx_info *)PrinterInfo;
252
+
253
+ OpInfo opinfo = OpInfoTable[opcode];
254
+
255
+ const char *prefix = info->hex_prefix ? info->hex_prefix : "0x";
256
+
257
+ SStream_concat0(O, InstructionInfoTable[opinfo.ins].name);
258
+ switch (opinfo.ins) {
259
+ /* special case - bit included as part of the instruction name */
260
+ case MOS65XX_INS_BBR:
261
+ case MOS65XX_INS_BBS:
262
+ case MOS65XX_INS_RMB:
263
+ case MOS65XX_INS_SMB:
264
+ SStream_concat(O, "%d", (opcode >> 4) & 0x07);
265
+ break;
266
+ default:
267
+ break;
268
+ }
269
+
270
+ value = MI->Operands[0].ImmVal;
271
+
272
+ switch (opinfo.am) {
273
+ default:
274
+ break;
275
+
276
+ case MOS65XX_AM_IMP:
277
+ break;
278
+
279
+ case MOS65XX_AM_ACC:
280
+ SStream_concat0(O, " a");
281
+ break;
282
+
283
+ case MOS65XX_AM_IMM:
284
+ if (MI->imm_size == 1)
285
+ SStream_concat(O, " #%s%02x", prefix, value);
286
+ else
287
+ SStream_concat(O, " #%s%04x", prefix, value);
288
+ break;
289
+
290
+ case MOS65XX_AM_ZP:
291
+ SStream_concat(O, " %s%02x", prefix, value);
292
+ break;
293
+
294
+ case MOS65XX_AM_ABS:
295
+ SStream_concat(O, " %s%04x", prefix, value);
296
+ break;
297
+
298
+ case MOS65XX_AM_ABS_LONG_X:
299
+ SStream_concat(O, " %s%06x, x", prefix, value);
300
+ break;
301
+
302
+ case MOS65XX_AM_INT:
303
+ SStream_concat(O, " %s%02x", prefix, value);
304
+ break;
305
+
306
+ case MOS65XX_AM_ABS_X:
307
+ SStream_concat(O, " %s%04x, x", prefix, value);
308
+ break;
309
+
310
+ case MOS65XX_AM_ABS_Y:
311
+ SStream_concat(O, " %s%04x, y", prefix, value);
312
+ break;
313
+
314
+ case MOS65XX_AM_ABS_LONG:
315
+ SStream_concat(O, " %s%06x", prefix, value);
316
+ break;
317
+
318
+ case MOS65XX_AM_ZP_X:
319
+ SStream_concat(O, " %s%02x, x", prefix, value);
320
+ break;
321
+
322
+ case MOS65XX_AM_ZP_Y:
323
+ SStream_concat(O, " %s%02x, y", prefix, value);
324
+ break;
325
+
326
+ case MOS65XX_AM_REL:
327
+ if (MI->op1_size == 1)
328
+ value = 2 + (signed char)value;
329
+ else
330
+ value = 3 + (signed short)value;
331
+
332
+ SStream_concat(O, " %s%04x", prefix,
333
+ (MI->address + value) & 0xffff);
334
+ break;
335
+
336
+ case MOS65XX_AM_ABS_IND:
337
+ SStream_concat(O, " (%s%04x)", prefix, value);
338
+ break;
339
+
340
+ case MOS65XX_AM_ABS_X_IND:
341
+ SStream_concat(O, " (%s%04x, x)", prefix, value);
342
+ break;
343
+
344
+ case MOS65XX_AM_ABS_IND_LONG:
345
+ SStream_concat(O, " [%s%04x]", prefix, value);
346
+ break;
347
+
348
+ case MOS65XX_AM_ZP_IND:
349
+ SStream_concat(O, " (%s%02x)", prefix, value);
350
+ break;
351
+
352
+ case MOS65XX_AM_ZP_X_IND:
353
+ SStream_concat(O, " (%s%02x, x)", prefix, value);
354
+ break;
355
+
356
+ case MOS65XX_AM_ZP_IND_Y:
357
+ SStream_concat(O, " (%s%02x), y", prefix, value);
358
+ break;
359
+
360
+ case MOS65XX_AM_ZP_IND_LONG:
361
+ SStream_concat(O, " [%s%02x]", prefix, value);
362
+ break;
363
+
364
+ case MOS65XX_AM_ZP_IND_LONG_Y:
365
+ SStream_concat(O, " [%s%02x], y", prefix, value);
366
+ break;
367
+
368
+ case MOS65XX_AM_SR:
369
+ SStream_concat(O, " %s%02x, s", prefix, value);
370
+ break;
371
+
372
+ case MOS65XX_AM_SR_IND_Y:
373
+ SStream_concat(O, " (%s%02x, s), y", prefix, value);
374
+ break;
375
+
376
+ case MOS65XX_AM_BLOCK:
377
+ SStream_concat(O, " %s%02x, %s%02x",
378
+ prefix, MI->Operands[0].ImmVal,
379
+ prefix, MI->Operands[1].ImmVal);
380
+ break;
381
+
382
+ case MOS65XX_AM_ZP_REL:
383
+ value = 3 + (signed char)MI->Operands[1].ImmVal;
384
+ /* BBR0, zp, rel and BBS0, zp, rel */
385
+ SStream_concat(O, " %s%02x, %s%04x",
386
+ prefix, MI->Operands[0].ImmVal,
387
+ prefix, (MI->address + value) & 0xffff);
388
+ break;
389
+
390
+ }
391
+ #endif
392
+ }
393
+
394
+ bool MOS65XX_getInstruction(csh ud, const uint8_t *code, size_t code_len,
395
+ MCInst *MI, uint16_t *size, uint64_t address, void *inst_info)
396
+ {
397
+ int i;
398
+ unsigned char opcode;
399
+ unsigned char len;
400
+ unsigned cpu_offset = 0;
401
+ int cpu_type = MOS65XX_CPU_TYPE_6502;
402
+ cs_struct* handle = MI->csh;
403
+ mos65xx_info *info = (mos65xx_info *)handle->printer_info;
404
+ OpInfo opinfo;
405
+
406
+ if (code_len == 0) {
407
+ *size = 1;
408
+ return false;
409
+ }
410
+
411
+ cpu_type = info->cpu_type;
412
+ cpu_offset = cpu_type * 256;
413
+
414
+ opcode = code[0];
415
+ opinfo = OpInfoTable[cpu_offset + opcode];
416
+ if (opinfo.ins == MOS65XX_INS_INVALID) {
417
+ *size = 1;
418
+ return false;
419
+ }
420
+
421
+ len = opinfo.operand_bytes + 1;
422
+
423
+ if (cpu_type == MOS65XX_CPU_TYPE_65816 && opinfo.am == MOS65XX_AM_IMM) {
424
+ switch(opinfo.ins) {
425
+ case MOS65XX_INS_CPX:
426
+ case MOS65XX_INS_CPY:
427
+ case MOS65XX_INS_LDX:
428
+ case MOS65XX_INS_LDY:
429
+ if (info->long_x) ++len;
430
+ break;
431
+ case MOS65XX_INS_ADC:
432
+ case MOS65XX_INS_AND:
433
+ case MOS65XX_INS_BIT:
434
+ case MOS65XX_INS_CMP:
435
+ case MOS65XX_INS_EOR:
436
+ case MOS65XX_INS_LDA:
437
+ case MOS65XX_INS_ORA:
438
+ case MOS65XX_INS_SBC:
439
+ if (info->long_m) ++len;
440
+ break;
441
+ default:
442
+ break;
443
+ }
444
+ }
445
+
446
+ if (code_len < len) {
447
+ *size = 1;
448
+ return false;
449
+ }
450
+
451
+ MI->address = address;
452
+
453
+ MCInst_setOpcode(MI, cpu_offset + opcode);
454
+ MCInst_setOpcodePub(MI, opinfo.ins);
455
+
456
+ *size = len;
457
+
458
+ /* needed to differentiate relative vs relative long */
459
+ MI->op1_size = len - 1;
460
+ if (opinfo.ins == MOS65XX_INS_NOP) {
461
+ for (i = 1; i < len; ++i)
462
+ MCOperand_CreateImm0(MI, code[i]);
463
+ }
464
+
465
+ switch (opinfo.am) {
466
+ case MOS65XX_AM_ZP_REL:
467
+ MCOperand_CreateImm0(MI, code[1]);
468
+ MCOperand_CreateImm0(MI, code[2]);
469
+ break;
470
+ case MOS65XX_AM_BLOCK:
471
+ MCOperand_CreateImm0(MI, code[2]);
472
+ MCOperand_CreateImm0(MI, code[1]);
473
+ break;
474
+ case MOS65XX_AM_IMP:
475
+ case MOS65XX_AM_ACC:
476
+ break;
477
+
478
+ case MOS65XX_AM_IMM:
479
+ MI->has_imm = 1;
480
+ MI->imm_size = len - 1;
481
+ /* 65816 immediate is either 1 or 2 bytes */
482
+ /* drop through */
483
+ default:
484
+ if (len == 2)
485
+ MCOperand_CreateImm0(MI, code[1]);
486
+ else if (len == 3)
487
+ MCOperand_CreateImm0(MI, (code[2]<<8) | code[1]);
488
+ else if (len == 4)
489
+ MCOperand_CreateImm0(MI, (code[3]<<16) | (code[2]<<8) | code[1]);
490
+ break;
491
+ }
492
+
493
+ #ifndef CAPSTONE_DIET
494
+ if (MI->flat_insn->detail) {
495
+ fillDetails(MI, opinfo, cpu_type);
496
+ }
497
+ #endif
498
+
499
+ return true;
500
+ }
501
+
502
+ const char *MOS65XX_insn_name(csh handle, unsigned int id)
503
+ {
504
+ #ifdef CAPSTONE_DIET
505
+ return NULL;
506
+ #else
507
+ if (id >= ARR_SIZE(InstructionInfoTable)) {
508
+ return NULL;
509
+ }
510
+ return InstructionInfoTable[id].name;
511
+ #endif
512
+ }
513
+
514
+ const char* MOS65XX_reg_name(csh handle, unsigned int reg)
515
+ {
516
+ #ifdef CAPSTONE_DIET
517
+ return NULL;
518
+ #else
519
+ if (reg >= ARR_SIZE(RegNames)) {
520
+ return NULL;
521
+ }
522
+ return RegNames[(int)reg];
523
+ #endif
524
+ }
525
+
526
+ void MOS65XX_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
527
+ {
528
+ /* id is cpu_offset + opcode */
529
+ if (id < ARR_SIZE(OpInfoTable)) {
530
+ insn->id = OpInfoTable[id].ins;
531
+ }
532
+ }
533
+
534
+ const char *MOS65XX_group_name(csh handle, unsigned int id)
535
+ {
536
+ #ifdef CAPSTONE_DIET
537
+ return NULL;
538
+ #else
539
+ if (id >= ARR_SIZE(GroupNames)) {
540
+ return NULL;
541
+ }
542
+ return GroupNames[(int)id];
543
+ #endif
544
+ }
@@ -0,0 +1,22 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* MOS65XX Backend by Sebastian Macke <sebastian@macke.de> 2018 */
3
+
4
+ #ifndef CAPSTONE_MOS65XXDISASSEMBLER_H
5
+ #define CAPSTONE_MOS65XXDISASSEMBLER_H
6
+
7
+ #include "../../utils.h"
8
+
9
+ void MOS65XX_printInst(MCInst *MI, struct SStream *O, void *PrinterInfo);
10
+
11
+ void MOS65XX_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id);
12
+
13
+ const char *MOS65XX_insn_name(csh handle, unsigned int id);
14
+
15
+ const char *MOS65XX_group_name(csh handle, unsigned int id);
16
+
17
+ const char* MOS65XX_reg_name(csh handle, unsigned int reg);
18
+
19
+ bool MOS65XX_getInstruction(csh ud, const uint8_t *code, size_t code_len,
20
+ MCInst *MI, uint16_t *size, uint64_t address, void *inst_info);
21
+
22
+ #endif //CAPSTONE_MOS65XXDISASSEMBLER_H
@@ -0,0 +1,23 @@
1
+ #ifndef CS_MOS65XXDISASSEMBLERINTERNALS_H
2
+ #define CS_MOS65XXDISASSEMBLERINTERNALS_H
3
+
4
+ #include "capstone/mos65xx.h"
5
+
6
+ enum {
7
+ MOS65XX_CPU_TYPE_6502,
8
+ MOS65XX_CPU_TYPE_65C02,
9
+ MOS65XX_CPU_TYPE_W65C02,
10
+ MOS65XX_CPU_TYPE_65816,
11
+ };
12
+
13
+ typedef struct mos65xx_info {
14
+
15
+ const char *hex_prefix;
16
+ unsigned cpu_type;
17
+ unsigned long_m;
18
+ unsigned long_x;
19
+
20
+ } mos65xx_info;
21
+
22
+
23
+ #endif