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,52 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* By Dang Hoang Vu <danghvu@gmail.com> 2013 */
3
+
4
+ #ifdef CAPSTONE_HAS_MIPS
5
+
6
+ #include "../../utils.h"
7
+ #include "../../MCRegisterInfo.h"
8
+ #include "MipsDisassembler.h"
9
+ #include "MipsInstPrinter.h"
10
+ #include "MipsMapping.h"
11
+ #include "MipsModule.h"
12
+
13
+ // Returns mode value with implied bits set
14
+ static cs_mode updated_mode(cs_mode mode)
15
+ {
16
+ if (mode & CS_MODE_MIPS32R6) {
17
+ mode |= CS_MODE_32;
18
+ }
19
+
20
+ return mode;
21
+ }
22
+
23
+ cs_err Mips_global_init(cs_struct *ud)
24
+ {
25
+ MCRegisterInfo *mri;
26
+ mri = cs_mem_malloc(sizeof(*mri));
27
+
28
+ Mips_init(mri);
29
+ ud->printer = Mips_printInst;
30
+ ud->printer_info = mri;
31
+ ud->getinsn_info = mri;
32
+ ud->reg_name = Mips_reg_name;
33
+ ud->insn_id = Mips_get_insn_id;
34
+ ud->insn_name = Mips_insn_name;
35
+ ud->group_name = Mips_group_name;
36
+
37
+ ud->disasm = Mips_getInstruction;
38
+
39
+ return CS_ERR_OK;
40
+ }
41
+
42
+ cs_err Mips_option(cs_struct *handle, cs_opt_type type, size_t value)
43
+ {
44
+ if (type == CS_OPT_MODE) {
45
+ handle->mode = updated_mode(value);
46
+ return CS_ERR_OK;
47
+ }
48
+
49
+ return CS_ERR_OPTION;
50
+ }
51
+
52
+ #endif
@@ -0,0 +1,12 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* By Travis Finkenauer <tmfinken@gmail.com>, 2018 */
3
+
4
+ #ifndef CS_MIPS_MODULE_H
5
+ #define CS_MIPS_MODULE_H
6
+
7
+ #include "../../utils.h"
8
+
9
+ cs_err Mips_global_init(cs_struct *ud);
10
+ cs_err Mips_option(cs_struct *handle, cs_opt_type type, size_t value);
11
+
12
+ #endif
@@ -0,0 +1,627 @@
1
+ //===------ PPCDisassembler.cpp - Disassembler for PowerPC ------*- C++ -*-===//
2
+ //
3
+ // The LLVM Compiler Infrastructure
4
+ //
5
+ // This file is distributed under the University of Illinois Open Source
6
+ // License. See LICENSE.TXT for details.
7
+ //
8
+ //===----------------------------------------------------------------------===//
9
+
10
+ /* Capstone Disassembly Engine */
11
+ /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
12
+
13
+ #ifdef CAPSTONE_HAS_POWERPC
14
+
15
+ #include <stdio.h> // DEBUG
16
+ #include <stdlib.h>
17
+ #include <string.h>
18
+
19
+ #include "../../cs_priv.h"
20
+ #include "../../utils.h"
21
+
22
+ #include "PPCDisassembler.h"
23
+
24
+ #include "../../MCInst.h"
25
+ #include "../../MCInstrDesc.h"
26
+ #include "../../MCFixedLenDisassembler.h"
27
+ #include "../../MCRegisterInfo.h"
28
+ #include "../../MCDisassembler.h"
29
+ #include "../../MathExtras.h"
30
+
31
+ #define GET_REGINFO_ENUM
32
+ #include "PPCGenRegisterInfo.inc"
33
+
34
+
35
+ // FIXME: These can be generated by TableGen from the existing register
36
+ // encoding values!
37
+
38
+ static const unsigned CRRegs[] = {
39
+ PPC_CR0, PPC_CR1, PPC_CR2, PPC_CR3,
40
+ PPC_CR4, PPC_CR5, PPC_CR6, PPC_CR7
41
+ };
42
+
43
+ static const unsigned CRBITRegs[] = {
44
+ PPC_CR0LT, PPC_CR0GT, PPC_CR0EQ, PPC_CR0UN,
45
+ PPC_CR1LT, PPC_CR1GT, PPC_CR1EQ, PPC_CR1UN,
46
+ PPC_CR2LT, PPC_CR2GT, PPC_CR2EQ, PPC_CR2UN,
47
+ PPC_CR3LT, PPC_CR3GT, PPC_CR3EQ, PPC_CR3UN,
48
+ PPC_CR4LT, PPC_CR4GT, PPC_CR4EQ, PPC_CR4UN,
49
+ PPC_CR5LT, PPC_CR5GT, PPC_CR5EQ, PPC_CR5UN,
50
+ PPC_CR6LT, PPC_CR6GT, PPC_CR6EQ, PPC_CR6UN,
51
+ PPC_CR7LT, PPC_CR7GT, PPC_CR7EQ, PPC_CR7UN
52
+ };
53
+
54
+ static const unsigned FRegs[] = {
55
+ PPC_F0, PPC_F1, PPC_F2, PPC_F3,
56
+ PPC_F4, PPC_F5, PPC_F6, PPC_F7,
57
+ PPC_F8, PPC_F9, PPC_F10, PPC_F11,
58
+ PPC_F12, PPC_F13, PPC_F14, PPC_F15,
59
+ PPC_F16, PPC_F17, PPC_F18, PPC_F19,
60
+ PPC_F20, PPC_F21, PPC_F22, PPC_F23,
61
+ PPC_F24, PPC_F25, PPC_F26, PPC_F27,
62
+ PPC_F28, PPC_F29, PPC_F30, PPC_F31
63
+ };
64
+
65
+ static const unsigned VFRegs[] = {
66
+ PPC_VF0, PPC_VF1, PPC_VF2, PPC_VF3,
67
+ PPC_VF4, PPC_VF5, PPC_VF6, PPC_VF7,
68
+ PPC_VF8, PPC_VF9, PPC_VF10, PPC_VF11,
69
+ PPC_VF12, PPC_VF13, PPC_VF14, PPC_VF15,
70
+ PPC_VF16, PPC_VF17, PPC_VF18, PPC_VF19,
71
+ PPC_VF20, PPC_VF21, PPC_VF22, PPC_VF23,
72
+ PPC_VF24, PPC_VF25, PPC_VF26, PPC_VF27,
73
+ PPC_VF28, PPC_VF29, PPC_VF30, PPC_VF31
74
+ };
75
+
76
+ static const unsigned VRegs[] = {
77
+ PPC_V0, PPC_V1, PPC_V2, PPC_V3,
78
+ PPC_V4, PPC_V5, PPC_V6, PPC_V7,
79
+ PPC_V8, PPC_V9, PPC_V10, PPC_V11,
80
+ PPC_V12, PPC_V13, PPC_V14, PPC_V15,
81
+ PPC_V16, PPC_V17, PPC_V18, PPC_V19,
82
+ PPC_V20, PPC_V21, PPC_V22, PPC_V23,
83
+ PPC_V24, PPC_V25, PPC_V26, PPC_V27,
84
+ PPC_V28, PPC_V29, PPC_V30, PPC_V31
85
+ };
86
+
87
+ static const unsigned VSRegs[] = {
88
+ PPC_VSL0, PPC_VSL1, PPC_VSL2, PPC_VSL3,
89
+ PPC_VSL4, PPC_VSL5, PPC_VSL6, PPC_VSL7,
90
+ PPC_VSL8, PPC_VSL9, PPC_VSL10, PPC_VSL11,
91
+ PPC_VSL12, PPC_VSL13, PPC_VSL14, PPC_VSL15,
92
+ PPC_VSL16, PPC_VSL17, PPC_VSL18, PPC_VSL19,
93
+ PPC_VSL20, PPC_VSL21, PPC_VSL22, PPC_VSL23,
94
+ PPC_VSL24, PPC_VSL25, PPC_VSL26, PPC_VSL27,
95
+ PPC_VSL28, PPC_VSL29, PPC_VSL30, PPC_VSL31,
96
+
97
+ PPC_V0, PPC_V1, PPC_V2, PPC_V3,
98
+ PPC_V4, PPC_V5, PPC_V6, PPC_V7,
99
+ PPC_V8, PPC_V9, PPC_V10, PPC_V11,
100
+ PPC_V12, PPC_V13, PPC_V14, PPC_V15,
101
+ PPC_V16, PPC_V17, PPC_V18, PPC_V19,
102
+ PPC_V20, PPC_V21, PPC_V22, PPC_V23,
103
+ PPC_V24, PPC_V25, PPC_V26, PPC_V27,
104
+ PPC_V28, PPC_V29, PPC_V30, PPC_V31
105
+ };
106
+
107
+ static const unsigned VSFRegs[] = {
108
+ PPC_F0, PPC_F1, PPC_F2, PPC_F3,
109
+ PPC_F4, PPC_F5, PPC_F6, PPC_F7,
110
+ PPC_F8, PPC_F9, PPC_F10, PPC_F11,
111
+ PPC_F12, PPC_F13, PPC_F14, PPC_F15,
112
+ PPC_F16, PPC_F17, PPC_F18, PPC_F19,
113
+ PPC_F20, PPC_F21, PPC_F22, PPC_F23,
114
+ PPC_F24, PPC_F25, PPC_F26, PPC_F27,
115
+ PPC_F28, PPC_F29, PPC_F30, PPC_F31,
116
+
117
+ PPC_VF0, PPC_VF1, PPC_VF2, PPC_VF3,
118
+ PPC_VF4, PPC_VF5, PPC_VF6, PPC_VF7,
119
+ PPC_VF8, PPC_VF9, PPC_VF10, PPC_VF11,
120
+ PPC_VF12, PPC_VF13, PPC_VF14, PPC_VF15,
121
+ PPC_VF16, PPC_VF17, PPC_VF18, PPC_VF19,
122
+ PPC_VF20, PPC_VF21, PPC_VF22, PPC_VF23,
123
+ PPC_VF24, PPC_VF25, PPC_VF26, PPC_VF27,
124
+ PPC_VF28, PPC_VF29, PPC_VF30, PPC_VF31
125
+ };
126
+
127
+ static const unsigned VSSRegs[] = {
128
+ PPC_F0, PPC_F1, PPC_F2, PPC_F3,
129
+ PPC_F4, PPC_F5, PPC_F6, PPC_F7,
130
+ PPC_F8, PPC_F9, PPC_F10, PPC_F11,
131
+ PPC_F12, PPC_F13, PPC_F14, PPC_F15,
132
+ PPC_F16, PPC_F17, PPC_F18, PPC_F19,
133
+ PPC_F20, PPC_F21, PPC_F22, PPC_F23,
134
+ PPC_F24, PPC_F25, PPC_F26, PPC_F27,
135
+ PPC_F28, PPC_F29, PPC_F30, PPC_F31,
136
+
137
+ PPC_VF0, PPC_VF1, PPC_VF2, PPC_VF3,
138
+ PPC_VF4, PPC_VF5, PPC_VF6, PPC_VF7,
139
+ PPC_VF8, PPC_VF9, PPC_VF10, PPC_VF11,
140
+ PPC_VF12, PPC_VF13, PPC_VF14, PPC_VF15,
141
+ PPC_VF16, PPC_VF17, PPC_VF18, PPC_VF19,
142
+ PPC_VF20, PPC_VF21, PPC_VF22, PPC_VF23,
143
+ PPC_VF24, PPC_VF25, PPC_VF26, PPC_VF27,
144
+ PPC_VF28, PPC_VF29, PPC_VF30, PPC_VF31
145
+ };
146
+
147
+ static const unsigned GPRegs[] = {
148
+ PPC_R0, PPC_R1, PPC_R2, PPC_R3,
149
+ PPC_R4, PPC_R5, PPC_R6, PPC_R7,
150
+ PPC_R8, PPC_R9, PPC_R10, PPC_R11,
151
+ PPC_R12, PPC_R13, PPC_R14, PPC_R15,
152
+ PPC_R16, PPC_R17, PPC_R18, PPC_R19,
153
+ PPC_R20, PPC_R21, PPC_R22, PPC_R23,
154
+ PPC_R24, PPC_R25, PPC_R26, PPC_R27,
155
+ PPC_R28, PPC_R29, PPC_R30, PPC_R31
156
+ };
157
+
158
+ static const unsigned GP0Regs[] = {
159
+ PPC_ZERO, PPC_R1, PPC_R2, PPC_R3,
160
+ PPC_R4, PPC_R5, PPC_R6, PPC_R7,
161
+ PPC_R8, PPC_R9, PPC_R10, PPC_R11,
162
+ PPC_R12, PPC_R13, PPC_R14, PPC_R15,
163
+ PPC_R16, PPC_R17, PPC_R18, PPC_R19,
164
+ PPC_R20, PPC_R21, PPC_R22, PPC_R23,
165
+ PPC_R24, PPC_R25, PPC_R26, PPC_R27,
166
+ PPC_R28, PPC_R29, PPC_R30, PPC_R31
167
+ };
168
+
169
+ static const unsigned G8Regs[] = {
170
+ PPC_X0, PPC_X1, PPC_X2, PPC_X3,
171
+ PPC_X4, PPC_X5, PPC_X6, PPC_X7,
172
+ PPC_X8, PPC_X9, PPC_X10, PPC_X11,
173
+ PPC_X12, PPC_X13, PPC_X14, PPC_X15,
174
+ PPC_X16, PPC_X17, PPC_X18, PPC_X19,
175
+ PPC_X20, PPC_X21, PPC_X22, PPC_X23,
176
+ PPC_X24, PPC_X25, PPC_X26, PPC_X27,
177
+ PPC_X28, PPC_X29, PPC_X30, PPC_X31
178
+ };
179
+
180
+ static const unsigned G80Regs[] = {
181
+ PPC_ZERO8, PPC_X1, PPC_X2, PPC_X3,
182
+ PPC_X4, PPC_X5, PPC_X6, PPC_X7,
183
+ PPC_X8, PPC_X9, PPC_X10, PPC_X11,
184
+ PPC_X12, PPC_X13, PPC_X14, PPC_X15,
185
+ PPC_X16, PPC_X17, PPC_X18, PPC_X19,
186
+ PPC_X20, PPC_X21, PPC_X22, PPC_X23,
187
+ PPC_X24, PPC_X25, PPC_X26, PPC_X27,
188
+ PPC_X28, PPC_X29, PPC_X30, PPC_X31
189
+ };
190
+
191
+ static const unsigned QFRegs[] = {
192
+ PPC_QF0, PPC_QF1, PPC_QF2, PPC_QF3,
193
+ PPC_QF4, PPC_QF5, PPC_QF6, PPC_QF7,
194
+ PPC_QF8, PPC_QF9, PPC_QF10, PPC_QF11,
195
+ PPC_QF12, PPC_QF13, PPC_QF14, PPC_QF15,
196
+ PPC_QF16, PPC_QF17, PPC_QF18, PPC_QF19,
197
+ PPC_QF20, PPC_QF21, PPC_QF22, PPC_QF23,
198
+ PPC_QF24, PPC_QF25, PPC_QF26, PPC_QF27,
199
+ PPC_QF28, PPC_QF29, PPC_QF30, PPC_QF31
200
+ };
201
+
202
+ static const unsigned SPERegs[] = {
203
+ PPC_S0, PPC_S1, PPC_S2, PPC_S3,
204
+ PPC_S4, PPC_S5, PPC_S6, PPC_S7,
205
+ PPC_S8, PPC_S9, PPC_S10, PPC_S11,
206
+ PPC_S12, PPC_S13, PPC_S14, PPC_S15,
207
+ PPC_S16, PPC_S17, PPC_S18, PPC_S19,
208
+ PPC_S20, PPC_S21, PPC_S22, PPC_S23,
209
+ PPC_S24, PPC_S25, PPC_S26, PPC_S27,
210
+ PPC_S28, PPC_S29, PPC_S30, PPC_S31
211
+ };
212
+
213
+ #if 0
214
+ static uint64_t getFeatureBits(int feature)
215
+ {
216
+ // enable all features
217
+ return (uint64_t)-1;
218
+ }
219
+ #endif
220
+
221
+ static DecodeStatus decodeRegisterClass(MCInst *Inst, uint64_t RegNo,
222
+ const unsigned *Regs, size_t RegsLen)
223
+ {
224
+ if (RegNo >= RegsLen / sizeof(unsigned)) {
225
+ return MCDisassembler_Fail;
226
+ }
227
+ MCOperand_CreateReg0(Inst, Regs[RegNo]);
228
+ return MCDisassembler_Success;
229
+ }
230
+
231
+ static DecodeStatus DecodeCRRCRegisterClass(MCInst *Inst, uint64_t RegNo,
232
+ uint64_t Address, const void *Decoder)
233
+ {
234
+ return decodeRegisterClass(Inst, RegNo, CRRegs, sizeof(CRRegs));
235
+ }
236
+
237
+ #if 0
238
+ static DecodeStatus DecodeCRRC0RegisterClass(MCInst *Inst, uint64_t RegNo,
239
+ uint64_t Address, const void *Decoder)
240
+ {
241
+ return decodeRegisterClass(Inst, RegNo, CRRegs, sizeof(CRRegs));
242
+ }
243
+ #endif
244
+
245
+ static DecodeStatus DecodeCRBITRCRegisterClass(MCInst *Inst, uint64_t RegNo,
246
+ uint64_t Address, const void *Decoder)
247
+ {
248
+ return decodeRegisterClass(Inst, RegNo, CRBITRegs, sizeof(CRBITRegs));
249
+ }
250
+
251
+ static DecodeStatus DecodeF4RCRegisterClass(MCInst *Inst, uint64_t RegNo,
252
+ uint64_t Address, const void *Decoder)
253
+ {
254
+ return decodeRegisterClass(Inst, RegNo, FRegs, sizeof(FRegs));
255
+ }
256
+
257
+ static DecodeStatus DecodeF8RCRegisterClass(MCInst *Inst, uint64_t RegNo,
258
+ uint64_t Address, const void *Decoder)
259
+ {
260
+ return decodeRegisterClass(Inst, RegNo, FRegs, sizeof(FRegs));
261
+ }
262
+
263
+ static DecodeStatus DecodeVFRCRegisterClass(MCInst *Inst, uint64_t RegNo,
264
+ uint64_t Address, const void *Decoder)
265
+ {
266
+ return decodeRegisterClass(Inst, RegNo, VFRegs, sizeof(VFRegs));
267
+ }
268
+
269
+ static DecodeStatus DecodeVRRCRegisterClass(MCInst *Inst, uint64_t RegNo,
270
+ uint64_t Address, const void *Decoder)
271
+ {
272
+ return decodeRegisterClass(Inst, RegNo, VRegs, sizeof(VRegs));
273
+ }
274
+
275
+ static DecodeStatus DecodeVSRCRegisterClass(MCInst *Inst, uint64_t RegNo,
276
+ uint64_t Address, const void *Decoder)
277
+ {
278
+ return decodeRegisterClass(Inst, RegNo, VSRegs, sizeof(VSRegs));
279
+ }
280
+
281
+ static DecodeStatus DecodeVSFRCRegisterClass(MCInst *Inst, uint64_t RegNo,
282
+ uint64_t Address, const void *Decoder)
283
+ {
284
+ return decodeRegisterClass(Inst, RegNo, VSFRegs, sizeof(VSFRegs));
285
+ }
286
+
287
+ static DecodeStatus DecodeVSSRCRegisterClass(MCInst *Inst, uint64_t RegNo,
288
+ uint64_t Address, const void *Decoder)
289
+ {
290
+ return decodeRegisterClass(Inst, RegNo, VSSRegs, sizeof(VSSRegs));
291
+ }
292
+
293
+ static DecodeStatus DecodeGPRCRegisterClass(MCInst *Inst, uint64_t RegNo,
294
+ uint64_t Address, const void *Decoder)
295
+ {
296
+ return decodeRegisterClass(Inst, RegNo, GPRegs, sizeof(GPRegs));
297
+ }
298
+
299
+ static DecodeStatus DecodeGPRC_NOR0RegisterClass(MCInst *Inst, uint64_t RegNo,
300
+ uint64_t Address, const void *Decoder)
301
+ {
302
+ return decodeRegisterClass(Inst, RegNo, GP0Regs, sizeof(GP0Regs));
303
+ }
304
+
305
+ static DecodeStatus DecodeG8RCRegisterClass(MCInst *Inst, uint64_t RegNo,
306
+ uint64_t Address, const void *Decoder)
307
+ {
308
+ return decodeRegisterClass(Inst, RegNo, G8Regs, sizeof(G8Regs));
309
+ }
310
+
311
+ static DecodeStatus DecodeG8RC_NOX0RegisterClass(MCInst *Inst, uint64_t RegNo,
312
+ uint64_t Address, const void *Decoder)
313
+ {
314
+ return decodeRegisterClass(Inst, RegNo, G80Regs, sizeof(G80Regs));
315
+ }
316
+
317
+ #define DecodePointerLikeRegClass0 DecodeGPRCRegisterClass
318
+ #define DecodePointerLikeRegClass1 DecodeGPRC_NOR0RegisterClass
319
+
320
+ static DecodeStatus DecodeQFRCRegisterClass(MCInst *Inst, uint64_t RegNo,
321
+ uint64_t Address, const void *Decoder)
322
+ {
323
+ return decodeRegisterClass(Inst, RegNo, QFRegs, sizeof(QFRegs));
324
+ }
325
+
326
+ static DecodeStatus DecodeSPE4RCRegisterClass(MCInst *Inst, uint64_t RegNo,
327
+ uint64_t Address, const void *Decoder)
328
+ {
329
+ return decodeRegisterClass(Inst, RegNo, GPRegs, sizeof(GPRegs));
330
+ }
331
+
332
+ static DecodeStatus DecodeSPERCRegisterClass(MCInst *Inst, uint64_t RegNo,
333
+ uint64_t Address, const void *Decoder)
334
+ {
335
+ return decodeRegisterClass(Inst, RegNo, SPERegs, sizeof(SPERegs));
336
+ }
337
+
338
+ #define DecodeQSRCRegisterClass DecodeQFRCRegisterClass
339
+ #define DecodeQBRCRegisterClass DecodeQFRCRegisterClass
340
+
341
+ static DecodeStatus decodeUImmOperand(MCInst *Inst, uint64_t Imm,
342
+ int64_t Address, const void *Decoder, unsigned N)
343
+ {
344
+ //assert(isUInt<N>(Imm) && "Invalid immediate");
345
+ MCOperand_CreateImm0(Inst, Imm);
346
+
347
+ return MCDisassembler_Success;
348
+ }
349
+
350
+ static DecodeStatus decodeSImmOperand(MCInst *Inst, uint64_t Imm,
351
+ int64_t Address, const void *Decoder, unsigned N)
352
+ {
353
+ // assert(isUInt<N>(Imm) && "Invalid immediate");
354
+ MCOperand_CreateImm0(Inst, SignExtend64(Imm, N));
355
+
356
+ return MCDisassembler_Success;
357
+ }
358
+
359
+
360
+ #define GET_INSTRINFO_ENUM
361
+ #include "PPCGenInstrInfo.inc"
362
+
363
+ static DecodeStatus decodeMemRIOperands(MCInst *Inst, uint64_t Imm,
364
+ int64_t Address, const void *Decoder)
365
+ {
366
+ // Decode the memri field (imm, reg), which has the low 16-bits as the
367
+ // displacement and the next 5 bits as the register #.
368
+
369
+ uint64_t Base = Imm >> 16;
370
+ uint64_t Disp = Imm & 0xFFFF;
371
+
372
+ // assert(Base < 32 && "Invalid base register");
373
+ if (Base >= 32)
374
+ return MCDisassembler_Fail;
375
+
376
+ switch (MCInst_getOpcode(Inst)) {
377
+ default: break;
378
+ case PPC_LBZU:
379
+ case PPC_LHAU:
380
+ case PPC_LHZU:
381
+ case PPC_LWZU:
382
+ case PPC_LFSU:
383
+ case PPC_LFDU:
384
+ // Add the tied output operand.
385
+ MCOperand_CreateReg0(Inst, GP0Regs[Base]);
386
+ break;
387
+ case PPC_STBU:
388
+ case PPC_STHU:
389
+ case PPC_STWU:
390
+ case PPC_STFSU:
391
+ case PPC_STFDU:
392
+ MCInst_insert0(Inst, 0, MCOperand_CreateReg1(Inst, GP0Regs[Base]));
393
+ break;
394
+ }
395
+
396
+ MCOperand_CreateImm0(Inst, SignExtend64(Disp, 16));
397
+ MCOperand_CreateReg0(Inst, GP0Regs[Base]);
398
+
399
+ return MCDisassembler_Success;
400
+ }
401
+
402
+ static DecodeStatus decodeMemRIXOperands(MCInst *Inst, uint64_t Imm,
403
+ int64_t Address, const void *Decoder)
404
+ {
405
+ // Decode the memrix field (imm, reg), which has the low 14-bits as the
406
+ // displacement and the next 5 bits as the register #.
407
+
408
+ uint64_t Base = Imm >> 14;
409
+ uint64_t Disp = Imm & 0x3FFF;
410
+
411
+ // assert(Base < 32 && "Invalid base register");
412
+ if (Base >= 32)
413
+ return MCDisassembler_Fail;
414
+
415
+ if (MCInst_getOpcode(Inst) == PPC_LDU)
416
+ // Add the tied output operand.
417
+ MCOperand_CreateReg0(Inst, GP0Regs[Base]);
418
+ else if (MCInst_getOpcode(Inst) == PPC_STDU)
419
+ MCInst_insert0(Inst, 0, MCOperand_CreateReg1(Inst, GP0Regs[Base]));
420
+
421
+ MCOperand_CreateImm0(Inst, SignExtend64(Disp << 2, 16));
422
+ MCOperand_CreateReg0(Inst, GP0Regs[Base]);
423
+
424
+ return MCDisassembler_Success;
425
+ }
426
+
427
+ static DecodeStatus decodeMemRIX16Operands(MCInst *Inst, uint64_t Imm,
428
+ int64_t Address, const void *Decoder)
429
+ {
430
+ // Decode the memrix16 field (imm, reg), which has the low 12-bits as the
431
+ // displacement with 16-byte aligned, and the next 5 bits as the register #.
432
+
433
+ uint64_t Base = Imm >> 12;
434
+ uint64_t Disp = Imm & 0xFFF;
435
+
436
+ // assert(Base < 32 && "Invalid base register");
437
+ if (Base >= 32)
438
+ return MCDisassembler_Fail;
439
+
440
+ MCOperand_CreateImm0(Inst, SignExtend64(Disp << 4, 16));
441
+ MCOperand_CreateReg0(Inst, GP0Regs[Base]);
442
+
443
+ return MCDisassembler_Success;
444
+ }
445
+
446
+ static DecodeStatus decodeSPE8Operands(MCInst *Inst, uint64_t Imm,
447
+ int64_t Address, const void *Decoder)
448
+ {
449
+ // Decode the spe8disp field (imm, reg), which has the low 5-bits as the
450
+ // displacement with 8-byte aligned, and the next 5 bits as the register #.
451
+
452
+ uint64_t Base = Imm >> 5;
453
+ uint64_t Disp = Imm & 0x1F;
454
+
455
+ // assert(Base < 32 && "Invalid base register");
456
+ if (Base >= 32)
457
+ return MCDisassembler_Fail;
458
+
459
+ MCOperand_CreateImm0(Inst, Disp << 3);
460
+ MCOperand_CreateReg0(Inst, GP0Regs[Base]);
461
+
462
+ return MCDisassembler_Success;
463
+ }
464
+
465
+ static DecodeStatus decodeSPE4Operands(MCInst *Inst, uint64_t Imm,
466
+ int64_t Address, const void *Decoder)
467
+ {
468
+ // Decode the spe4disp field (imm, reg), which has the low 5-bits as the
469
+ // displacement with 4-byte aligned, and the next 5 bits as the register #.
470
+
471
+ uint64_t Base = Imm >> 5;
472
+ uint64_t Disp = Imm & 0x1F;
473
+
474
+ // assert(Base < 32 && "Invalid base register");
475
+ if (Base >= 32)
476
+ return MCDisassembler_Fail;
477
+
478
+ MCOperand_CreateImm0(Inst, Disp << 2);
479
+ MCOperand_CreateReg0(Inst, GP0Regs[Base]);
480
+
481
+ return MCDisassembler_Success;
482
+ }
483
+
484
+ static DecodeStatus decodeSPE2Operands(MCInst *Inst, uint64_t Imm,
485
+ int64_t Address, const void *Decoder)
486
+ {
487
+ // Decode the spe2disp field (imm, reg), which has the low 5-bits as the
488
+ // displacement with 2-byte aligned, and the next 5 bits as the register #.
489
+
490
+ uint64_t Base = Imm >> 5;
491
+ uint64_t Disp = Imm & 0x1F;
492
+
493
+ // assert(Base < 32 && "Invalid base register");
494
+ if (Base >= 32)
495
+ return MCDisassembler_Fail;
496
+
497
+ MCOperand_CreateImm0(Inst, Disp << 1);
498
+ MCOperand_CreateReg0(Inst, GP0Regs[Base]);
499
+
500
+ return MCDisassembler_Success;
501
+ }
502
+
503
+ static DecodeStatus decodeCRBitMOperand(MCInst *Inst, uint64_t Imm,
504
+ int64_t Address, const void *Decoder)
505
+ {
506
+ // The cr bit encoding is 0x80 >> cr_reg_num.
507
+
508
+ unsigned Zeros = CountTrailingZeros_64(Imm);
509
+ // assert(Zeros < 8 && "Invalid CR bit value");
510
+ if (Zeros >= 8)
511
+ return MCDisassembler_Fail;
512
+
513
+ MCOperand_CreateReg0(Inst, CRRegs[7 - Zeros]);
514
+
515
+ return MCDisassembler_Success;
516
+ }
517
+
518
+ #include "PPCGenDisassemblerTables.inc"
519
+
520
+ static DecodeStatus getInstruction(MCInst *MI,
521
+ const uint8_t *code, size_t code_len,
522
+ uint16_t *Size,
523
+ uint64_t Address, MCRegisterInfo *MRI)
524
+ {
525
+ uint32_t insn;
526
+ DecodeStatus result;
527
+
528
+ // Get the four bytes of the instruction.
529
+ if (code_len < 4) {
530
+ // not enough data
531
+ *Size = 0;
532
+ return MCDisassembler_Fail;
533
+ }
534
+
535
+ // The instruction is big-endian encoded.
536
+ if (MODE_IS_BIG_ENDIAN(MI->csh->mode))
537
+ insn = ((uint32_t) code[0] << 24) | (code[1] << 16) |
538
+ (code[2] << 8) | (code[3] << 0);
539
+ else // little endian
540
+ insn = ((uint32_t) code[3] << 24) | (code[2] << 16) |
541
+ (code[1] << 8) | (code[0] << 0);
542
+
543
+ if (MI->flat_insn->detail) {
544
+ memset(MI->flat_insn->detail, 0, offsetof(cs_detail, ppc) + sizeof(cs_ppc));
545
+ }
546
+
547
+ if (MI->csh->mode & CS_MODE_QPX) {
548
+ result = decodeInstruction_4(DecoderTableQPX32, MI, insn, Address);
549
+ if (result != MCDisassembler_Fail) {
550
+ *Size = 4;
551
+
552
+ return result;
553
+ }
554
+
555
+ // failed to decode
556
+ MCInst_clear(MI);
557
+ } else if (MI->csh->mode & CS_MODE_SPE) {
558
+ result = decodeInstruction_4(DecoderTableSPE32, MI, insn, Address);
559
+ if (result != MCDisassembler_Fail) {
560
+ *Size = 4;
561
+
562
+ return result;
563
+ }
564
+
565
+ // failed to decode
566
+ MCInst_clear(MI);
567
+ } else if (MI->csh->mode & CS_MODE_PS) {
568
+ result = decodeInstruction_4(DecoderTablePS32, MI, insn, Address);
569
+ if (result != MCDisassembler_Fail) {
570
+ *Size = 4;
571
+
572
+ return result;
573
+ }
574
+
575
+ // failed to decode
576
+ MCInst_clear(MI);
577
+ }
578
+
579
+ result = decodeInstruction_4(DecoderTable32, MI, insn, Address);
580
+ if (result != MCDisassembler_Fail) {
581
+ *Size = 4;
582
+
583
+ return result;
584
+ }
585
+
586
+ // cannot decode, report error
587
+ MCInst_clear(MI);
588
+ *Size = 0;
589
+
590
+ return MCDisassembler_Fail;
591
+ }
592
+
593
+ bool PPC_getInstruction(csh ud, const uint8_t *code, size_t code_len,
594
+ MCInst *instr, uint16_t *size, uint64_t address, void *info)
595
+ {
596
+ DecodeStatus status = getInstruction(instr,
597
+ code, code_len,
598
+ size,
599
+ address, (MCRegisterInfo *)info);
600
+
601
+ return status == MCDisassembler_Success;
602
+ }
603
+
604
+ #define GET_REGINFO_MC_DESC
605
+ #include "PPCGenRegisterInfo.inc"
606
+ void PPC_init(MCRegisterInfo *MRI)
607
+ {
608
+ /*
609
+ InitMCRegisterInfo(PPCRegDesc, 344,
610
+ RA, PC,
611
+ PPCMCRegisterClasses, 36,
612
+ PPCRegUnitRoots, 171, PPCRegDiffLists, PPCLaneMaskLists, PPCRegStrings, PPCRegClassStrings,
613
+ PPCSubRegIdxLists, 7,
614
+ PPCSubRegIdxRanges, PPCRegEncodingTable);
615
+ */
616
+
617
+ MCRegisterInfo_InitMCRegisterInfo(MRI, PPCRegDesc, 344,
618
+ 0, 0,
619
+ PPCMCRegisterClasses, 36,
620
+ 0, 0,
621
+ PPCRegDiffLists,
622
+ 0,
623
+ PPCSubRegIdxLists, 7,
624
+ 0);
625
+ }
626
+
627
+ #endif
@@ -0,0 +1,17 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
3
+
4
+ #ifndef CS_PPCDISASSEMBLER_H
5
+ #define CS_PPCDISASSEMBLER_H
6
+
7
+ #include "capstone/capstone.h"
8
+ #include "../../MCRegisterInfo.h"
9
+ #include "../../MCInst.h"
10
+
11
+ void PPC_init(MCRegisterInfo *MRI);
12
+
13
+ bool PPC_getInstruction(csh ud, const uint8_t *code, size_t code_len,
14
+ MCInst *instr, uint16_t *size, uint64_t address, void *info);
15
+
16
+ #endif
17
+