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,30 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* M68K Backend by Daniel Collin <daniel@collin.com> 2015-2016 */
3
+
4
+ #ifndef CS_M68KDISASSEMBLER_H
5
+ #define CS_M68KDISASSEMBLER_H
6
+
7
+ #include "../../MCInst.h"
8
+
9
+ /* Private, For internal use only */
10
+ typedef struct m68k_info {
11
+ const uint8_t *code;
12
+ size_t code_len;
13
+ uint64_t baseAddress;
14
+ MCInst *inst;
15
+ unsigned int pc; /* program counter */
16
+ unsigned int ir; /* instruction register */
17
+ unsigned int type;
18
+ unsigned int address_mask; /* Address mask to simulate address lines */
19
+ cs_m68k extension;
20
+ uint16_t regs_read[20]; // list of implicit registers read by this insn
21
+ uint8_t regs_read_count; // number of implicit registers read by this insn
22
+ uint16_t regs_write[20]; // list of implicit registers modified by this insn
23
+ uint8_t regs_write_count; // number of implicit registers modified by this insn
24
+ uint8_t groups[8];
25
+ uint8_t groups_count;
26
+ } m68k_info;
27
+
28
+ bool M68K_getInstruction(csh ud, const uint8_t* code, size_t code_len, MCInst* instr, uint16_t* size, uint64_t address, void* info);
29
+
30
+ #endif
@@ -0,0 +1,387 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* M68K Backend by Daniel Collin <daniel@collin.com> 2015-2016 */
3
+
4
+ #ifdef _MSC_VER
5
+ // Disable security warnings for strcat & sprintf
6
+ #ifndef _CRT_SECURE_NO_WARNINGS
7
+ #define _CRT_SECURE_NO_WARNINGS
8
+ #endif
9
+
10
+ //Banned API Usage : strcat / sprintf is a Banned API as listed in dontuse.h for
11
+ //security purposes.
12
+ #pragma warning(disable:28719)
13
+ #endif
14
+
15
+ #include <stdio.h> // DEBUG
16
+ #include <stdlib.h>
17
+ #include <string.h>
18
+
19
+ #include "M68KInstPrinter.h"
20
+
21
+ #include "M68KDisassembler.h"
22
+
23
+ #include "../../cs_priv.h"
24
+ #include "../../utils.h"
25
+
26
+ #include "../../MCInst.h"
27
+ #include "../../MCInstrDesc.h"
28
+ #include "../../MCRegisterInfo.h"
29
+
30
+ #ifndef CAPSTONE_DIET
31
+ static const char s_spacing[] = " ";
32
+
33
+ static const char* const s_reg_names[] = {
34
+ "invalid",
35
+ "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7",
36
+ "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7",
37
+ "fp0", "fp1", "fp2", "fp3", "fp4", "fp5", "fp6", "fp7",
38
+ "pc",
39
+ "sr", "ccr", "sfc", "dfc", "usp", "vbr", "cacr",
40
+ "caar", "msp", "isp", "tc", "itt0", "itt1", "dtt0",
41
+ "dtt1", "mmusr", "urp", "srp",
42
+
43
+ "fpcr", "fpsr", "fpiar",
44
+ };
45
+
46
+ static const char* const s_instruction_names[] = {
47
+ "invalid",
48
+ "abcd", "add", "adda", "addi", "addq", "addx", "and", "andi", "asl", "asr", "bhs", "blo", "bhi", "bls", "bcc", "bcs", "bne", "beq", "bvc",
49
+ "bvs", "bpl", "bmi", "bge", "blt", "bgt", "ble", "bra", "bsr", "bchg", "bclr", "bset", "btst", "bfchg", "bfclr", "bfexts", "bfextu", "bfffo", "bfins",
50
+ "bfset", "bftst", "bkpt", "callm", "cas", "cas2", "chk", "chk2", "clr", "cmp", "cmpa", "cmpi", "cmpm", "cmp2", "cinvl", "cinvp", "cinva", "cpushl", "cpushp",
51
+ "cpusha", "dbt", "dbf", "dbhi", "dbls", "dbcc", "dbcs", "dbne", "dbeq", "dbvc", "dbvs", "dbpl", "dbmi", "dbge", "dblt", "dbgt", "dble", "dbra",
52
+ "divs", "divsl", "divu", "divul", "eor", "eori", "exg", "ext", "extb", "fabs", "fsabs", "fdabs", "facos", "fadd", "fsadd", "fdadd", "fasin",
53
+ "fatan", "fatanh", "fbf", "fbeq", "fbogt", "fboge", "fbolt", "fbole", "fbogl", "fbor", "fbun", "fbueq", "fbugt", "fbuge", "fbult", "fbule", "fbne", "fbt",
54
+ "fbsf", "fbseq", "fbgt", "fbge", "fblt", "fble", "fbgl", "fbgle", "fbngle", "fbngl", "fbnle", "fbnlt", "fbnge", "fbngt", "fbsne", "fbst", "fcmp", "fcos",
55
+ "fcosh", "fdbf", "fdbeq", "fdbogt", "fdboge", "fdbolt", "fdbole", "fdbogl", "fdbor", "fdbun", "fdbueq", "fdbugt", "fdbuge", "fdbult", "fdbule", "fdbne",
56
+ "fdbt", "fdbsf", "fdbseq", "fdbgt", "fdbge", "fdblt", "fdble", "fdbgl", "fdbgle", "fdbngle", "fdbngl", "fdbnle", "fdbnlt", "fdbnge", "fdbngt", "fdbsne",
57
+ "fdbst", "fdiv", "fsdiv", "fddiv", "fetox", "fetoxm1", "fgetexp", "fgetman", "fint", "fintrz", "flog10", "flog2", "flogn", "flognp1", "fmod", "fmove",
58
+ "fsmove", "fdmove", "fmovecr", "fmovem", "fmul", "fsmul", "fdmul", "fneg", "fsneg", "fdneg", "fnop", "frem", "frestore", "fsave", "fscale", "fsgldiv",
59
+ "fsglmul", "fsin", "fsincos", "fsinh", "fsqrt", "fssqrt", "fdsqrt", "fsf", "fseq", "fsogt", "fsoge", "fsolt", "fsole", "fsogl", "fsor", "fsun", "fsueq",
60
+ "fsugt", "fsuge", "fsult", "fsule", "fsne", "fst", "fssf", "fsseq", "fsgt", "fsge", "fslt", "fsle", "fsgl", "fsgle", "fsngle",
61
+ "fsngl", "fsnle", "fsnlt", "fsnge", "fsngt", "fssne", "fsst", "fsub", "fssub", "fdsub", "ftan", "ftanh", "ftentox", "ftrapf", "ftrapeq", "ftrapogt",
62
+ "ftrapoge", "ftrapolt", "ftrapole", "ftrapogl", "ftrapor", "ftrapun", "ftrapueq", "ftrapugt", "ftrapuge", "ftrapult", "ftrapule", "ftrapne", "ftrapt",
63
+ "ftrapsf", "ftrapseq", "ftrapgt", "ftrapge", "ftraplt", "ftraple", "ftrapgl", "ftrapgle", "ftrapngle", "ftrapngl", "ftrapnle", "ftrapnlt", "ftrapnge",
64
+ "ftrapngt", "ftrapsne", "ftrapst", "ftst", "ftwotox", "halt", "illegal", "jmp", "jsr", "lea", "link", "lpstop", "lsl", "lsr", "move", "movea", "movec",
65
+ "movem", "movep", "moveq", "moves", "move16", "muls", "mulu", "nbcd", "neg", "negx", "nop", "not", "or", "ori", "pack", "pea", "pflush", "pflusha",
66
+ "pflushan", "pflushn", "ploadr", "ploadw", "plpar", "plpaw", "pmove", "pmovefd", "ptestr", "ptestw", "pulse", "rems", "remu", "reset", "rol", "ror",
67
+ "roxl", "roxr", "rtd", "rte", "rtm", "rtr", "rts", "sbcd", "st", "sf", "shi", "sls", "scc", "shs", "scs", "slo", "sne", "seq", "svc", "svs", "spl", "smi",
68
+ "sge", "slt", "sgt", "sle", "stop", "sub", "suba", "subi", "subq", "subx", "swap", "tas", "trap", "trapv", "trapt", "trapf", "traphi", "trapls",
69
+ "trapcc", "traphs", "trapcs", "traplo", "trapne", "trapeq", "trapvc", "trapvs", "trappl", "trapmi", "trapge", "traplt", "trapgt", "traple", "tst", "unlk", "unpk",
70
+ };
71
+ #endif
72
+
73
+
74
+ #ifndef CAPSTONE_DIET
75
+ static const char* getRegName(m68k_reg reg)
76
+ {
77
+ return s_reg_names[(int)reg];
78
+ }
79
+
80
+ static void printRegbitsRange(char* buffer, uint32_t data, const char* prefix)
81
+ {
82
+ unsigned int first = 0;
83
+ unsigned int run_length = 0;
84
+ int i;
85
+
86
+ for (i = 0; i < 8; ++i) {
87
+ if (data & (1 << i)) {
88
+ first = i;
89
+ run_length = 0;
90
+
91
+ while (i < 7 && (data & (1 << (i + 1)))) {
92
+ i++;
93
+ run_length++;
94
+ }
95
+
96
+ if (buffer[0] != 0)
97
+ strcat(buffer, "/");
98
+
99
+ sprintf(buffer + strlen(buffer), "%s%d", prefix, first);
100
+ if (run_length > 0)
101
+ sprintf(buffer + strlen(buffer), "-%s%d", prefix, first + run_length);
102
+ }
103
+ }
104
+ }
105
+
106
+ static void registerBits(SStream* O, const cs_m68k_op* op)
107
+ {
108
+ char buffer[128];
109
+ unsigned int data = op->register_bits;
110
+
111
+ buffer[0] = 0;
112
+
113
+ if (!data) {
114
+ SStream_concat(O, "%s", "#$0");
115
+ return;
116
+ }
117
+
118
+ printRegbitsRange(buffer, data & 0xff, "d");
119
+ printRegbitsRange(buffer, (data >> 8) & 0xff, "a");
120
+ printRegbitsRange(buffer, (data >> 16) & 0xff, "fp");
121
+
122
+ SStream_concat(O, "%s", buffer);
123
+ }
124
+
125
+ static void registerPair(SStream* O, const cs_m68k_op* op)
126
+ {
127
+ SStream_concat(O, "%s:%s", s_reg_names[op->reg_pair.reg_0],
128
+ s_reg_names[op->reg_pair.reg_1]);
129
+ }
130
+
131
+ static void printAddressingMode(SStream* O, unsigned int pc, const cs_m68k* inst, const cs_m68k_op* op)
132
+ {
133
+ switch (op->address_mode) {
134
+ case M68K_AM_NONE:
135
+ switch (op->type) {
136
+ case M68K_OP_REG_BITS:
137
+ registerBits(O, op);
138
+ break;
139
+ case M68K_OP_REG_PAIR:
140
+ registerPair(O, op);
141
+ break;
142
+ case M68K_OP_REG:
143
+ SStream_concat(O, "%s", s_reg_names[op->reg]);
144
+ break;
145
+ default:
146
+ break;
147
+ }
148
+ break;
149
+
150
+ case M68K_AM_REG_DIRECT_DATA: SStream_concat(O, "d%d", (op->reg - M68K_REG_D0)); break;
151
+ case M68K_AM_REG_DIRECT_ADDR: SStream_concat(O, "a%d", (op->reg - M68K_REG_A0)); break;
152
+ case M68K_AM_REGI_ADDR: SStream_concat(O, "(a%d)", (op->reg - M68K_REG_A0)); break;
153
+ case M68K_AM_REGI_ADDR_POST_INC: SStream_concat(O, "(a%d)+", (op->reg - M68K_REG_A0)); break;
154
+ case M68K_AM_REGI_ADDR_PRE_DEC: SStream_concat(O, "-(a%d)", (op->reg - M68K_REG_A0)); break;
155
+ case M68K_AM_REGI_ADDR_DISP: SStream_concat(O, "%s$%x(a%d)", op->mem.disp < 0 ? "-" : "", abs(op->mem.disp), (op->mem.base_reg - M68K_REG_A0)); break;
156
+ case M68K_AM_PCI_DISP: SStream_concat(O, "$%x(pc)", pc + 2 + op->mem.disp); break;
157
+ case M68K_AM_ABSOLUTE_DATA_SHORT: SStream_concat(O, "$%x.w", op->imm); break;
158
+ case M68K_AM_ABSOLUTE_DATA_LONG: SStream_concat(O, "$%x.l", op->imm); break;
159
+ case M68K_AM_IMMEDIATE:
160
+ if (inst->op_size.type == M68K_SIZE_TYPE_FPU) {
161
+ #if defined(_KERNEL_MODE)
162
+ // Issue #681: Windows kernel does not support formatting float point
163
+ SStream_concat(O, "#<float_point_unsupported>");
164
+ break;
165
+ #else
166
+ if (inst->op_size.fpu_size == M68K_FPU_SIZE_SINGLE)
167
+ SStream_concat(O, "#%f", op->simm);
168
+ else if (inst->op_size.fpu_size == M68K_FPU_SIZE_DOUBLE)
169
+ SStream_concat(O, "#%f", op->dimm);
170
+ else
171
+ SStream_concat(O, "#<unsupported>");
172
+ break;
173
+ #endif
174
+ }
175
+ SStream_concat(O, "#$%x", op->imm);
176
+ break;
177
+ case M68K_AM_PCI_INDEX_8_BIT_DISP:
178
+ SStream_concat(O, "$%x(pc,%s%s.%c)", pc + 2 + op->mem.disp, s_spacing, getRegName(op->mem.index_reg), op->mem.index_size ? 'l' : 'w');
179
+ break;
180
+ case M68K_AM_AREGI_INDEX_8_BIT_DISP:
181
+ SStream_concat(O, "%s$%x(%s,%s%s.%c)", op->mem.disp < 0 ? "-" : "", abs(op->mem.disp), getRegName(op->mem.base_reg), s_spacing, getRegName(op->mem.index_reg), op->mem.index_size ? 'l' : 'w');
182
+ break;
183
+ case M68K_AM_PCI_INDEX_BASE_DISP:
184
+ case M68K_AM_AREGI_INDEX_BASE_DISP:
185
+
186
+ if (op->address_mode == M68K_AM_PCI_INDEX_BASE_DISP) {
187
+ SStream_concat(O, "$%x", pc + 2 + op->mem.in_disp);
188
+ } else {
189
+ if (op->mem.in_disp > 0)
190
+ SStream_concat(O, "$%x", op->mem.in_disp);
191
+ }
192
+
193
+ SStream_concat0(O, "(");
194
+
195
+ if (op->address_mode == M68K_AM_PCI_INDEX_BASE_DISP) {
196
+ SStream_concat(O, "pc,%s.%c", getRegName(op->mem.index_reg), op->mem.index_size ? 'l' : 'w');
197
+ } else {
198
+ if (op->mem.base_reg != M68K_REG_INVALID)
199
+ SStream_concat(O, "a%d,%s", op->mem.base_reg - M68K_REG_A0, s_spacing);
200
+ SStream_concat(O, "%s.%c", getRegName(op->mem.index_reg), op->mem.index_size ? 'l' : 'w');
201
+ }
202
+
203
+ if (op->mem.scale > 0)
204
+ SStream_concat(O, "%s*%s%d)", s_spacing, s_spacing, op->mem.scale);
205
+ else
206
+ SStream_concat0(O, ")");
207
+ break;
208
+ // It's ok to just use PCMI here as is as we set base_reg to PC in the disassembler. While this is not strictly correct it makes the code
209
+ // easier and that is what actually happens when the code is executed anyway.
210
+
211
+ case M68K_AM_PC_MEMI_POST_INDEX:
212
+ case M68K_AM_PC_MEMI_PRE_INDEX:
213
+ case M68K_AM_MEMI_PRE_INDEX:
214
+ case M68K_AM_MEMI_POST_INDEX:
215
+ SStream_concat0(O, "([");
216
+
217
+ if (op->address_mode == M68K_AM_PC_MEMI_POST_INDEX || op->address_mode == M68K_AM_PC_MEMI_PRE_INDEX) {
218
+ SStream_concat(O, "$%x", pc + 2 + op->mem.in_disp);
219
+ } else {
220
+ if (op->mem.in_disp > 0)
221
+ SStream_concat(O, "$%x", op->mem.in_disp);
222
+ }
223
+
224
+ if (op->mem.base_reg != M68K_REG_INVALID) {
225
+ if (op->mem.in_disp > 0)
226
+ SStream_concat(O, ",%s%s", s_spacing, getRegName(op->mem.base_reg));
227
+ else
228
+ SStream_concat(O, "%s", getRegName(op->mem.base_reg));
229
+ }
230
+
231
+ if (op->address_mode == M68K_AM_MEMI_POST_INDEX || op->address_mode == M68K_AM_PC_MEMI_POST_INDEX)
232
+ SStream_concat0(O, "]");
233
+
234
+ if (op->mem.index_reg != M68K_REG_INVALID)
235
+ SStream_concat(O, ",%s%s.%c", s_spacing, getRegName(op->mem.index_reg), op->mem.index_size ? 'l' : 'w');
236
+
237
+ if (op->mem.scale > 0)
238
+ SStream_concat(O, "%s*%s%d", s_spacing, s_spacing, op->mem.scale);
239
+
240
+ if (op->address_mode == M68K_AM_MEMI_PRE_INDEX || op->address_mode == M68K_AM_PC_MEMI_PRE_INDEX)
241
+ SStream_concat0(O, "]");
242
+
243
+ if (op->mem.out_disp > 0)
244
+ SStream_concat(O, ",%s$%x", s_spacing, op->mem.out_disp);
245
+
246
+ SStream_concat0(O, ")");
247
+ break;
248
+ case M68K_AM_BRANCH_DISPLACEMENT:
249
+ SStream_concat(O, "$%x", pc + 2 + op->br_disp.disp);
250
+ default:
251
+ break;
252
+ }
253
+
254
+ if (op->mem.bitfield)
255
+ SStream_concat(O, "{%d:%d}", op->mem.offset, op->mem.width);
256
+ }
257
+ #endif
258
+
259
+ #define m68k_sizeof_array(array) (int)(sizeof(array)/sizeof(array[0]))
260
+ #define m68k_min(a, b) (a < b) ? a : b
261
+
262
+ void M68K_printInst(MCInst* MI, SStream* O, void* PrinterInfo)
263
+ {
264
+ #ifndef CAPSTONE_DIET
265
+ m68k_info *info = (m68k_info *)PrinterInfo;
266
+ cs_m68k *ext = &info->extension;
267
+ cs_detail *detail = NULL;
268
+ int i = 0;
269
+
270
+ detail = MI->flat_insn->detail;
271
+ if (detail) {
272
+ int regs_read_count = m68k_min(m68k_sizeof_array(detail->regs_read), info->regs_read_count);
273
+ int regs_write_count = m68k_min(m68k_sizeof_array(detail->regs_write), info->regs_write_count);
274
+ int groups_count = m68k_min(m68k_sizeof_array(detail->groups), info->groups_count);
275
+
276
+ memcpy(&detail->m68k, ext, sizeof(cs_m68k));
277
+
278
+ memcpy(&detail->regs_read, &info->regs_read, regs_read_count * sizeof(uint16_t));
279
+ detail->regs_read_count = regs_read_count;
280
+
281
+ memcpy(&detail->regs_write, &info->regs_write, regs_write_count * sizeof(uint16_t));
282
+ detail->regs_write_count = regs_write_count;
283
+
284
+ memcpy(&detail->groups, &info->groups, groups_count);
285
+ detail->groups_count = groups_count;
286
+ }
287
+
288
+ if (MI->Opcode == M68K_INS_INVALID) {
289
+ if (ext->op_count)
290
+ SStream_concat(O, "dc.w $%x", ext->operands[0].imm);
291
+ else
292
+ SStream_concat(O, "dc.w $<unknown>");
293
+ return;
294
+ }
295
+
296
+ SStream_concat0(O, (char*)s_instruction_names[MI->Opcode]);
297
+
298
+ switch (ext->op_size.type) {
299
+ case M68K_SIZE_TYPE_INVALID :
300
+ break;
301
+
302
+ case M68K_SIZE_TYPE_CPU :
303
+ switch (ext->op_size.cpu_size) {
304
+ case M68K_CPU_SIZE_BYTE: SStream_concat0(O, ".b"); break;
305
+ case M68K_CPU_SIZE_WORD: SStream_concat0(O, ".w"); break;
306
+ case M68K_CPU_SIZE_LONG: SStream_concat0(O, ".l"); break;
307
+ case M68K_CPU_SIZE_NONE: break;
308
+ }
309
+ break;
310
+
311
+ case M68K_SIZE_TYPE_FPU :
312
+ switch (ext->op_size.fpu_size) {
313
+ case M68K_FPU_SIZE_SINGLE: SStream_concat0(O, ".s"); break;
314
+ case M68K_FPU_SIZE_DOUBLE: SStream_concat0(O, ".d"); break;
315
+ case M68K_FPU_SIZE_EXTENDED: SStream_concat0(O, ".x"); break;
316
+ case M68K_FPU_SIZE_NONE: break;
317
+ }
318
+ break;
319
+ }
320
+
321
+ SStream_concat0(O, " ");
322
+
323
+ // this one is a bit spacial so we do special things
324
+
325
+ if (MI->Opcode == M68K_INS_CAS2) {
326
+ int reg_value_0, reg_value_1;
327
+ printAddressingMode(O, info->pc, ext, &ext->operands[0]); SStream_concat0(O, ",");
328
+ printAddressingMode(O, info->pc, ext, &ext->operands[1]); SStream_concat0(O, ",");
329
+ reg_value_0 = ext->operands[2].register_bits >> 4;
330
+ reg_value_1 = ext->operands[2].register_bits & 0xf;
331
+ SStream_concat(O, "(%s):(%s)", s_reg_names[M68K_REG_D0 + reg_value_0], s_reg_names[M68K_REG_D0 + reg_value_1]);
332
+ return;
333
+ }
334
+
335
+ for (i = 0; i < ext->op_count; ++i) {
336
+ printAddressingMode(O, info->pc, ext, &ext->operands[i]);
337
+ if ((i + 1) != ext->op_count)
338
+ SStream_concat(O, ",%s", s_spacing);
339
+ }
340
+ #endif
341
+ }
342
+
343
+ const char* M68K_reg_name(csh handle, unsigned int reg)
344
+ {
345
+ #ifdef CAPSTONE_DIET
346
+ return NULL;
347
+ #else
348
+ if (reg >= ARR_SIZE(s_reg_names)) {
349
+ return NULL;
350
+ }
351
+ return s_reg_names[(int)reg];
352
+ #endif
353
+ }
354
+
355
+ void M68K_get_insn_id(cs_struct* h, cs_insn* insn, unsigned int id)
356
+ {
357
+ insn->id = id; // These id's matches for 68k
358
+ }
359
+
360
+ const char* M68K_insn_name(csh handle, unsigned int id)
361
+ {
362
+ #ifdef CAPSTONE_DIET
363
+ return NULL;
364
+ #else
365
+ return s_instruction_names[id];
366
+ #endif
367
+ }
368
+
369
+ #ifndef CAPSTONE_DIET
370
+ static const name_map group_name_maps[] = {
371
+ { M68K_GRP_INVALID , NULL },
372
+ { M68K_GRP_JUMP, "jump" },
373
+ { M68K_GRP_RET , "ret" },
374
+ { M68K_GRP_IRET, "iret" },
375
+ { M68K_GRP_BRANCH_RELATIVE, "branch_relative" },
376
+ };
377
+ #endif
378
+
379
+ const char *M68K_group_name(csh handle, unsigned int id)
380
+ {
381
+ #ifndef CAPSTONE_DIET
382
+ return id2name(group_name_maps, ARR_SIZE(group_name_maps), id);
383
+ #else
384
+ return NULL;
385
+ #endif
386
+ }
387
+
@@ -0,0 +1,21 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* M68K Backend by Daniel Collin <daniel@collin.com> 2015 */
3
+
4
+ #ifndef CS_M68KINSTPRINTER_H
5
+ #define CS_M68KINSTPRINTER_H
6
+
7
+ #include "capstone/capstone.h"
8
+ #include "../../MCRegisterInfo.h"
9
+ #include "../../MCInst.h"
10
+
11
+ struct SStream;
12
+
13
+ void M68K_init(MCRegisterInfo *MRI);
14
+ void M68K_printInst(MCInst* MI, struct SStream* O, void* Info);
15
+ const char* M68K_reg_name(csh handle, unsigned int reg);
16
+ void M68K_get_insn_id(cs_struct* h, cs_insn* insn, unsigned int id);
17
+ const char *M68K_insn_name(csh handle, unsigned int id);
18
+ const char* M68K_group_name(csh handle, unsigned int id);
19
+ void M68K_post_printer(csh handle, cs_insn* flat_insn, char* insn_asm, MCInst* mci);
20
+
21
+ #endif