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,883 @@
1
+ /* Capstone Disassembly Engine */
2
+ /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */
3
+
4
+ #ifdef CAPSTONE_HAS_ARM64
5
+
6
+ #include <stdio.h> // debug
7
+ #include <string.h>
8
+
9
+ #include "../../utils.h"
10
+
11
+ #include "AArch64Mapping.h"
12
+
13
+ #define GET_INSTRINFO_ENUM
14
+ #include "AArch64GenInstrInfo.inc"
15
+
16
+ #ifndef CAPSTONE_DIET
17
+ // NOTE: this reg_name_maps[] reflects the order of registers in arm64_reg
18
+ static const char * const reg_name_maps[] = {
19
+ NULL, /* ARM64_REG_INVALID */
20
+
21
+ "ffr",
22
+ "fp",
23
+ "lr",
24
+ "nzcv",
25
+ "sp",
26
+ "vg",
27
+ "wsp",
28
+ "wzr",
29
+ "xzr",
30
+
31
+ "za",
32
+
33
+ "b0",
34
+ "b1",
35
+ "b2",
36
+ "b3",
37
+ "b4",
38
+ "b5",
39
+ "b6",
40
+ "b7",
41
+ "b8",
42
+ "b9",
43
+ "b10",
44
+ "b11",
45
+ "b12",
46
+ "b13",
47
+ "b14",
48
+ "b15",
49
+ "b16",
50
+ "b17",
51
+ "b18",
52
+ "b19",
53
+ "b20",
54
+ "b21",
55
+ "b22",
56
+ "b23",
57
+ "b24",
58
+ "b25",
59
+ "b26",
60
+ "b27",
61
+ "b28",
62
+ "b29",
63
+ "b30",
64
+ "b31",
65
+
66
+ "d0",
67
+ "d1",
68
+ "d2",
69
+ "d3",
70
+ "d4",
71
+ "d5",
72
+ "d6",
73
+ "d7",
74
+ "d8",
75
+ "d9",
76
+ "d10",
77
+ "d11",
78
+ "d12",
79
+ "d13",
80
+ "d14",
81
+ "d15",
82
+ "d16",
83
+ "d17",
84
+ "d18",
85
+ "d19",
86
+ "d20",
87
+ "d21",
88
+ "d22",
89
+ "d23",
90
+ "d24",
91
+ "d25",
92
+ "d26",
93
+ "d27",
94
+ "d28",
95
+ "d29",
96
+ "d30",
97
+ "d31",
98
+
99
+ "h0",
100
+ "h1",
101
+ "h2",
102
+ "h3",
103
+ "h4",
104
+ "h5",
105
+ "h6",
106
+ "h7",
107
+ "h8",
108
+ "h9",
109
+ "h10",
110
+ "h11",
111
+ "h12",
112
+ "h13",
113
+ "h14",
114
+ "h15",
115
+ "h16",
116
+ "h17",
117
+ "h18",
118
+ "h19",
119
+ "h20",
120
+ "h21",
121
+ "h22",
122
+ "h23",
123
+ "h24",
124
+ "h25",
125
+ "h26",
126
+ "h27",
127
+ "h28",
128
+ "h29",
129
+ "h30",
130
+ "h31",
131
+
132
+ "p0",
133
+ "p1",
134
+ "p2",
135
+ "p3",
136
+ "p4",
137
+ "p5",
138
+ "p6",
139
+ "p7",
140
+ "p8",
141
+ "p9",
142
+ "p10",
143
+ "p11",
144
+ "p12",
145
+ "p13",
146
+ "p14",
147
+ "p15",
148
+
149
+ "q0",
150
+ "q1",
151
+ "q2",
152
+ "q3",
153
+ "q4",
154
+ "q5",
155
+ "q6",
156
+ "q7",
157
+ "q8",
158
+ "q9",
159
+ "q10",
160
+ "q11",
161
+ "q12",
162
+ "q13",
163
+ "q14",
164
+ "q15",
165
+ "q16",
166
+ "q17",
167
+ "q18",
168
+ "q19",
169
+ "q20",
170
+ "q21",
171
+ "q22",
172
+ "q23",
173
+ "q24",
174
+ "q25",
175
+ "q26",
176
+ "q27",
177
+ "q28",
178
+ "q29",
179
+ "q30",
180
+ "q31",
181
+
182
+ "s0",
183
+ "s1",
184
+ "s2",
185
+ "s3",
186
+ "s4",
187
+ "s5",
188
+ "s6",
189
+ "s7",
190
+ "s8",
191
+ "s9",
192
+ "s10",
193
+ "s11",
194
+ "s12",
195
+ "s13",
196
+ "s14",
197
+ "s15",
198
+ "s16",
199
+ "s17",
200
+ "s18",
201
+ "s19",
202
+ "s20",
203
+ "s21",
204
+ "s22",
205
+ "s23",
206
+ "s24",
207
+ "s25",
208
+ "s26",
209
+ "s27",
210
+ "s28",
211
+ "s29",
212
+ "s30",
213
+ "s31",
214
+
215
+ "w0",
216
+ "w1",
217
+ "w2",
218
+ "w3",
219
+ "w4",
220
+ "w5",
221
+ "w6",
222
+ "w7",
223
+ "w8",
224
+ "w9",
225
+ "w10",
226
+ "w11",
227
+ "w12",
228
+ "w13",
229
+ "w14",
230
+ "w15",
231
+ "w16",
232
+ "w17",
233
+ "w18",
234
+ "w19",
235
+ "w20",
236
+ "w21",
237
+ "w22",
238
+ "w23",
239
+ "w24",
240
+ "w25",
241
+ "w26",
242
+ "w27",
243
+ "w28",
244
+ "w29",
245
+ "w30",
246
+
247
+ "x0",
248
+ "x1",
249
+ "x2",
250
+ "x3",
251
+ "x4",
252
+ "x5",
253
+ "x6",
254
+ "x7",
255
+ "x8",
256
+ "x9",
257
+ "x10",
258
+ "x11",
259
+ "x12",
260
+ "x13",
261
+ "x14",
262
+ "x15",
263
+ "x16",
264
+ "x17",
265
+ "x18",
266
+ "x19",
267
+ "x20",
268
+ "x21",
269
+ "x22",
270
+ "x23",
271
+ "x24",
272
+ "x25",
273
+ "x26",
274
+ "x27",
275
+ "x28",
276
+
277
+ "z0",
278
+ "z1",
279
+ "z2",
280
+ "z3",
281
+ "z4",
282
+ "z5",
283
+ "z6",
284
+ "z7",
285
+ "z8",
286
+ "z9",
287
+ "z10",
288
+ "z11",
289
+ "z12",
290
+ "z13",
291
+ "z14",
292
+ "z15",
293
+ "z16",
294
+ "z17",
295
+ "z18",
296
+ "z19",
297
+ "z20",
298
+ "z21",
299
+ "z22",
300
+ "z23",
301
+ "z24",
302
+ "z25",
303
+ "z26",
304
+ "z27",
305
+ "z28",
306
+ "z29",
307
+ "z30",
308
+ "z31",
309
+
310
+ "zab0",
311
+
312
+ "zad0",
313
+ "zad1",
314
+ "zad2",
315
+ "zad3",
316
+ "zad4",
317
+ "zad5",
318
+ "zad6",
319
+ "zad7",
320
+
321
+ "zah0",
322
+ "zah1",
323
+
324
+ "zaq0",
325
+ "zaq1",
326
+ "zaq2",
327
+ "zaq3",
328
+ "zaq4",
329
+ "zaq5",
330
+ "zaq6",
331
+ "zaq7",
332
+ "zaq8",
333
+ "zaq9",
334
+ "zaq10",
335
+ "zaq11",
336
+ "zaq12",
337
+ "zaq13",
338
+ "zaq14",
339
+ "zaq15",
340
+
341
+ "zas0",
342
+ "zas1",
343
+ "zas2",
344
+ "zas3",
345
+
346
+ "v0",
347
+ "v1",
348
+ "v2",
349
+ "v3",
350
+ "v4",
351
+ "v5",
352
+ "v6",
353
+ "v7",
354
+ "v8",
355
+ "v9",
356
+ "v10",
357
+ "v11",
358
+ "v12",
359
+ "v13",
360
+ "v14",
361
+ "v15",
362
+ "v16",
363
+ "v17",
364
+ "v18",
365
+ "v19",
366
+ "v20",
367
+ "v21",
368
+ "v22",
369
+ "v23",
370
+ "v24",
371
+ "v25",
372
+ "v26",
373
+ "v27",
374
+ "v28",
375
+ "v29",
376
+ "v30",
377
+ "v31",
378
+ };
379
+ #endif
380
+
381
+ const char *AArch64_reg_name(csh handle, unsigned int reg)
382
+ {
383
+ #ifndef CAPSTONE_DIET
384
+ if (reg >= ARR_SIZE(reg_name_maps))
385
+ return NULL;
386
+
387
+ return reg_name_maps[reg];
388
+ #else
389
+ return NULL;
390
+ #endif
391
+ }
392
+
393
+ static const insn_map insns[] = {
394
+ // dummy item
395
+ {
396
+ 0, 0,
397
+ #ifndef CAPSTONE_DIET
398
+ { 0 }, { 0 }, { 0 }, 0, 0
399
+ #endif
400
+ },
401
+
402
+ #include "AArch64MappingInsn.inc"
403
+ };
404
+
405
+ // given internal insn id, return public instruction info
406
+ void AArch64_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
407
+ {
408
+ int i = insn_find(insns, ARR_SIZE(insns), id, &h->insn_cache);
409
+ if (i != 0) {
410
+ insn->id = insns[i].mapid;
411
+
412
+ if (h->detail) {
413
+ #ifndef CAPSTONE_DIET
414
+ cs_struct handle;
415
+ handle.detail = h->detail;
416
+
417
+ memcpy(insn->detail->regs_read, insns[i].regs_use, sizeof(insns[i].regs_use));
418
+ insn->detail->regs_read_count = (uint8_t)count_positive(insns[i].regs_use);
419
+
420
+ memcpy(insn->detail->regs_write, insns[i].regs_mod, sizeof(insns[i].regs_mod));
421
+ insn->detail->regs_write_count = (uint8_t)count_positive(insns[i].regs_mod);
422
+
423
+ memcpy(insn->detail->groups, insns[i].groups, sizeof(insns[i].groups));
424
+ insn->detail->groups_count = (uint8_t)count_positive8(insns[i].groups);
425
+
426
+ insn->detail->arm64.update_flags = cs_reg_write((csh)&handle, insn, ARM64_REG_NZCV);
427
+ #endif
428
+ }
429
+ }
430
+ }
431
+
432
+ static const char * const insn_name_maps[] = {
433
+ NULL, // ARM64_INS_INVALID
434
+ #include "AArch64MappingInsnName.inc"
435
+ "sbfiz",
436
+ "ubfiz",
437
+ "sbfx",
438
+ "ubfx",
439
+ "bfi",
440
+ "bfxil",
441
+ "ic",
442
+ "dc",
443
+ "at",
444
+ "tlbi",
445
+ "smstart",
446
+ "smstop",
447
+ };
448
+
449
+ const char *AArch64_insn_name(csh handle, unsigned int id)
450
+ {
451
+ #ifndef CAPSTONE_DIET
452
+ if (id >= ARM64_INS_ENDING)
453
+ return NULL;
454
+
455
+ if (id < ARR_SIZE(insn_name_maps))
456
+ return insn_name_maps[id];
457
+
458
+ // not found
459
+ return NULL;
460
+ #else
461
+ return NULL;
462
+ #endif
463
+ }
464
+
465
+ #ifndef CAPSTONE_DIET
466
+ static const name_map group_name_maps[] = {
467
+ // generic groups
468
+ { ARM64_GRP_INVALID, NULL },
469
+ { ARM64_GRP_JUMP, "jump" },
470
+ { ARM64_GRP_CALL, "call" },
471
+ { ARM64_GRP_RET, "return" },
472
+ { ARM64_GRP_PRIVILEGE, "privilege" },
473
+ { ARM64_GRP_INT, "int" },
474
+ { ARM64_GRP_BRANCH_RELATIVE, "branch_relative" },
475
+ { ARM64_GRP_PAC, "pointer authentication" },
476
+
477
+ // architecture-specific groups
478
+ { ARM64_GRP_CRYPTO, "crypto" },
479
+ { ARM64_GRP_FPARMV8, "fparmv8" },
480
+ { ARM64_GRP_NEON, "neon" },
481
+ { ARM64_GRP_CRC, "crc" },
482
+
483
+ { ARM64_GRP_AES, "aes" },
484
+ { ARM64_GRP_DOTPROD, "dotprod" },
485
+ { ARM64_GRP_FULLFP16, "fullfp16" },
486
+ { ARM64_GRP_LSE, "lse" },
487
+ { ARM64_GRP_RCPC, "rcpc" },
488
+ { ARM64_GRP_RDM, "rdm" },
489
+ { ARM64_GRP_SHA2, "sha2" },
490
+ { ARM64_GRP_SHA3, "sha3" },
491
+ { ARM64_GRP_SM4, "sm4" },
492
+ { ARM64_GRP_SVE, "sve" },
493
+ { ARM64_GRP_SVE2, "sve2" },
494
+ { ARM64_GRP_SVE2AES, "sve2-aes" },
495
+ { ARM64_GRP_SVE2BitPerm, "sve2-bitperm" },
496
+ { ARM64_GRP_SVE2SHA3, "sve2-sha3" },
497
+ { ARM64_GRP_SVE2SM4, "sve2-sm4" },
498
+ { ARM64_GRP_SME, "sme" },
499
+ { ARM64_GRP_SMEF64, "sme-f64" },
500
+ { ARM64_GRP_SMEI64, "sme-i64" },
501
+ { ARM64_GRP_MatMulFP32, "f32mm" },
502
+ { ARM64_GRP_MatMulFP64, "f64mm" },
503
+ { ARM64_GRP_MatMulInt8, "i8mm" },
504
+ { ARM64_GRP_V8_1A, "v8_1a" },
505
+ { ARM64_GRP_V8_3A, "v8_3a" },
506
+ { ARM64_GRP_V8_4A, "v8_4a" },
507
+ };
508
+ #endif
509
+
510
+ const char *AArch64_group_name(csh handle, unsigned int id)
511
+ {
512
+ #ifndef CAPSTONE_DIET
513
+ return id2name(group_name_maps, ARR_SIZE(group_name_maps), id);
514
+ #else
515
+ return NULL;
516
+ #endif
517
+ }
518
+
519
+ // map instruction name to public instruction ID
520
+ arm64_insn AArch64_map_insn(const char *name)
521
+ {
522
+ unsigned int i;
523
+
524
+ for(i = 1; i < ARR_SIZE(insn_name_maps); i++) {
525
+ if (!strcmp(name, insn_name_maps[i]))
526
+ return i;
527
+ }
528
+
529
+ // not found
530
+ return ARM64_INS_INVALID;
531
+ }
532
+
533
+ // map internal raw vregister to 'public' register
534
+ arm64_reg AArch64_map_vregister(unsigned int r)
535
+ {
536
+ static const unsigned short RegAsmOffsetvreg[] = {
537
+ #include "AArch64GenRegisterV.inc"
538
+ };
539
+
540
+ if (r < ARR_SIZE(RegAsmOffsetvreg))
541
+ return RegAsmOffsetvreg[r - 1];
542
+
543
+ // cannot find this register
544
+ return 0;
545
+ }
546
+
547
+ static const name_map sys_op_name_map[] = {
548
+ { ARM64_TLBI_ALLE1, "alle1"} ,
549
+ { ARM64_TLBI_ALLE1IS, "alle1is"} ,
550
+ { ARM64_TLBI_ALLE1ISNXS, "alle1isnxs"} ,
551
+ { ARM64_TLBI_ALLE1NXS, "alle1nxs"} ,
552
+ { ARM64_TLBI_ALLE1OS, "alle1os"} ,
553
+ { ARM64_TLBI_ALLE1OSNXS, "alle1osnxs"} ,
554
+ { ARM64_TLBI_ALLE2, "alle2"} ,
555
+ { ARM64_TLBI_ALLE2IS, "alle2is"} ,
556
+ { ARM64_TLBI_ALLE2ISNXS, "alle2isnxs"} ,
557
+ { ARM64_TLBI_ALLE2NXS, "alle2nxs"} ,
558
+ { ARM64_TLBI_ALLE2OS, "alle2os"} ,
559
+ { ARM64_TLBI_ALLE2OSNXS, "alle2osnxs"} ,
560
+ { ARM64_TLBI_ALLE3, "alle3"} ,
561
+ { ARM64_TLBI_ALLE3IS, "alle3is"} ,
562
+ { ARM64_TLBI_ALLE3ISNXS, "alle3isnxs"} ,
563
+ { ARM64_TLBI_ALLE3NXS, "alle3nxs"} ,
564
+ { ARM64_TLBI_ALLE3OS, "alle3os"} ,
565
+ { ARM64_TLBI_ALLE3OSNXS, "alle3osnxs"} ,
566
+ { ARM64_TLBI_ASIDE1, "aside1"} ,
567
+ { ARM64_TLBI_ASIDE1IS, "aside1is"} ,
568
+ { ARM64_TLBI_ASIDE1ISNXS, "aside1isnxs"} ,
569
+ { ARM64_TLBI_ASIDE1NXS, "aside1nxs"} ,
570
+ { ARM64_TLBI_ASIDE1OS, "aside1os"} ,
571
+ { ARM64_TLBI_ASIDE1OSNXS, "aside1osnxs"} ,
572
+ { ARM64_TLBI_IPAS2E1, "ipas2e1"} ,
573
+ { ARM64_TLBI_IPAS2E1IS, "ipas2e1is"} ,
574
+ { ARM64_TLBI_IPAS2E1ISNXS, "ipas2e1isnxs"} ,
575
+ { ARM64_TLBI_IPAS2E1NXS, "ipas2e1nxs"} ,
576
+ { ARM64_TLBI_IPAS2E1OS, "ipas2e1os"} ,
577
+ { ARM64_TLBI_IPAS2E1OSNXS, "ipas2e1osnxs"} ,
578
+ { ARM64_TLBI_IPAS2LE1, "ipas2le1"} ,
579
+ { ARM64_TLBI_IPAS2LE1IS, "ipas2le1is"} ,
580
+ { ARM64_TLBI_IPAS2LE1ISNXS, "ipas2le1isnxs"} ,
581
+ { ARM64_TLBI_IPAS2LE1NXS, "ipas2le1nxs"} ,
582
+ { ARM64_TLBI_IPAS2LE1OS, "ipas2le1os"} ,
583
+ { ARM64_TLBI_IPAS2LE1OSNXS, "ipas2le1osnxs"} ,
584
+ { ARM64_TLBI_PAALL, "paall"} ,
585
+ { ARM64_TLBI_PAALLNXS, "paallnxs"} ,
586
+ { ARM64_TLBI_PAALLOS, "paallos"} ,
587
+ { ARM64_TLBI_PAALLOSNXS, "paallosnxs"} ,
588
+ { ARM64_TLBI_RIPAS2E1, "ripas2e1"} ,
589
+ { ARM64_TLBI_RIPAS2E1IS, "ripas2e1is"} ,
590
+ { ARM64_TLBI_RIPAS2E1ISNXS, "ripas2e1isnxs"} ,
591
+ { ARM64_TLBI_RIPAS2E1NXS, "ripas2e1nxs"} ,
592
+ { ARM64_TLBI_RIPAS2E1OS, "ripas2e1os"} ,
593
+ { ARM64_TLBI_RIPAS2E1OSNXS, "ripas2e1osnxs"} ,
594
+ { ARM64_TLBI_RIPAS2LE1, "ripas2le1"} ,
595
+ { ARM64_TLBI_RIPAS2LE1IS, "ripas2le1is"} ,
596
+ { ARM64_TLBI_RIPAS2LE1ISNXS, "ripas2le1isnxs"} ,
597
+ { ARM64_TLBI_RIPAS2LE1NXS, "ripas2le1nxs"} ,
598
+ { ARM64_TLBI_RIPAS2LE1OS, "ripas2le1os"} ,
599
+ { ARM64_TLBI_RIPAS2LE1OSNXS, "ripas2le1osnxs"} ,
600
+ { ARM64_TLBI_RPALOS, "rpalos"} ,
601
+ { ARM64_TLBI_RPALOSNXS, "rpalosnxs"} ,
602
+ { ARM64_TLBI_RPAOS, "rpaos"} ,
603
+ { ARM64_TLBI_RPAOSNXS, "rpaosnxs"} ,
604
+ { ARM64_TLBI_RVAAE1, "rvaae1"} ,
605
+ { ARM64_TLBI_RVAAE1IS, "rvaae1is"} ,
606
+ { ARM64_TLBI_RVAAE1ISNXS, "rvaae1isnxs"} ,
607
+ { ARM64_TLBI_RVAAE1NXS, "rvaae1nxs"} ,
608
+ { ARM64_TLBI_RVAAE1OS, "rvaae1os"} ,
609
+ { ARM64_TLBI_RVAAE1OSNXS, "rvaae1osnxs"} ,
610
+ { ARM64_TLBI_RVAALE1, "rvaale1"} ,
611
+ { ARM64_TLBI_RVAALE1IS, "rvaale1is"} ,
612
+ { ARM64_TLBI_RVAALE1ISNXS, "rvaale1isnxs"} ,
613
+ { ARM64_TLBI_RVAALE1NXS, "rvaale1nxs"} ,
614
+ { ARM64_TLBI_RVAALE1OS, "rvaale1os"} ,
615
+ { ARM64_TLBI_RVAALE1OSNXS, "rvaale1osnxs"} ,
616
+ { ARM64_TLBI_RVAE1, "rvae1"} ,
617
+ { ARM64_TLBI_RVAE1IS, "rvae1is"} ,
618
+ { ARM64_TLBI_RVAE1ISNXS, "rvae1isnxs"} ,
619
+ { ARM64_TLBI_RVAE1NXS, "rvae1nxs"} ,
620
+ { ARM64_TLBI_RVAE1OS, "rvae1os"} ,
621
+ { ARM64_TLBI_RVAE1OSNXS, "rvae1osnxs"} ,
622
+ { ARM64_TLBI_RVAE2, "rvae2"} ,
623
+ { ARM64_TLBI_RVAE2IS, "rvae2is"} ,
624
+ { ARM64_TLBI_RVAE2ISNXS, "rvae2isnxs"} ,
625
+ { ARM64_TLBI_RVAE2NXS, "rvae2nxs"} ,
626
+ { ARM64_TLBI_RVAE2OS, "rvae2os"} ,
627
+ { ARM64_TLBI_RVAE2OSNXS, "rvae2osnxs"} ,
628
+ { ARM64_TLBI_RVAE3, "rvae3"} ,
629
+ { ARM64_TLBI_RVAE3IS, "rvae3is"} ,
630
+ { ARM64_TLBI_RVAE3ISNXS, "rvae3isnxs"} ,
631
+ { ARM64_TLBI_RVAE3NXS, "rvae3nxs"} ,
632
+ { ARM64_TLBI_RVAE3OS, "rvae3os"} ,
633
+ { ARM64_TLBI_RVAE3OSNXS, "rvae3osnxs"} ,
634
+ { ARM64_TLBI_RVALE1, "rvale1"} ,
635
+ { ARM64_TLBI_RVALE1IS, "rvale1is"} ,
636
+ { ARM64_TLBI_RVALE1ISNXS, "rvale1isnxs"} ,
637
+ { ARM64_TLBI_RVALE1NXS, "rvale1nxs"} ,
638
+ { ARM64_TLBI_RVALE1OS, "rvale1os"} ,
639
+ { ARM64_TLBI_RVALE1OSNXS, "rvale1osnxs"} ,
640
+ { ARM64_TLBI_RVALE2, "rvale2"} ,
641
+ { ARM64_TLBI_RVALE2IS, "rvale2is"} ,
642
+ { ARM64_TLBI_RVALE2ISNXS, "rvale2isnxs"} ,
643
+ { ARM64_TLBI_RVALE2NXS, "rvale2nxs"} ,
644
+ { ARM64_TLBI_RVALE2OS, "rvale2os"} ,
645
+ { ARM64_TLBI_RVALE2OSNXS, "rvale2osnxs"} ,
646
+ { ARM64_TLBI_RVALE3, "rvale3"} ,
647
+ { ARM64_TLBI_RVALE3IS, "rvale3is"} ,
648
+ { ARM64_TLBI_RVALE3ISNXS, "rvale3isnxs"} ,
649
+ { ARM64_TLBI_RVALE3NXS, "rvale3nxs"} ,
650
+ { ARM64_TLBI_RVALE3OS, "rvale3os"} ,
651
+ { ARM64_TLBI_RVALE3OSNXS, "rvale3osnxs"} ,
652
+ { ARM64_TLBI_VAAE1, "vaae1"} ,
653
+ { ARM64_TLBI_VAAE1IS, "vaae1is"} ,
654
+ { ARM64_TLBI_VAAE1ISNXS, "vaae1isnxs"} ,
655
+ { ARM64_TLBI_VAAE1NXS, "vaae1nxs"} ,
656
+ { ARM64_TLBI_VAAE1OS, "vaae1os"} ,
657
+ { ARM64_TLBI_VAAE1OSNXS, "vaae1osnxs"} ,
658
+ { ARM64_TLBI_VAALE1, "vaale1"} ,
659
+ { ARM64_TLBI_VAALE1IS, "vaale1is"} ,
660
+ { ARM64_TLBI_VAALE1ISNXS, "vaale1isnxs"} ,
661
+ { ARM64_TLBI_VAALE1NXS, "vaale1nxs"} ,
662
+ { ARM64_TLBI_VAALE1OS, "vaale1os"} ,
663
+ { ARM64_TLBI_VAALE1OSNXS, "vaale1osnxs"} ,
664
+ { ARM64_TLBI_VAE1, "vae1"} ,
665
+ { ARM64_TLBI_VAE1IS, "vae1is"} ,
666
+ { ARM64_TLBI_VAE1ISNXS, "vae1isnxs"} ,
667
+ { ARM64_TLBI_VAE1NXS, "vae1nxs"} ,
668
+ { ARM64_TLBI_VAE1OS, "vae1os"} ,
669
+ { ARM64_TLBI_VAE1OSNXS, "vae1osnxs"} ,
670
+ { ARM64_TLBI_VAE2, "vae2"} ,
671
+ { ARM64_TLBI_VAE2IS, "vae2is"} ,
672
+ { ARM64_TLBI_VAE2ISNXS, "vae2isnxs"} ,
673
+ { ARM64_TLBI_VAE2NXS, "vae2nxs"} ,
674
+ { ARM64_TLBI_VAE2OS, "vae2os"} ,
675
+ { ARM64_TLBI_VAE2OSNXS, "vae2osnxs"} ,
676
+ { ARM64_TLBI_VAE3, "vae3"} ,
677
+ { ARM64_TLBI_VAE3IS, "vae3is"} ,
678
+ { ARM64_TLBI_VAE3ISNXS, "vae3isnxs"} ,
679
+ { ARM64_TLBI_VAE3NXS, "vae3nxs"} ,
680
+ { ARM64_TLBI_VAE3OS, "vae3os"} ,
681
+ { ARM64_TLBI_VAE3OSNXS, "vae3osnxs"} ,
682
+ { ARM64_TLBI_VALE1, "vale1"} ,
683
+ { ARM64_TLBI_VALE1IS, "vale1is"} ,
684
+ { ARM64_TLBI_VALE1ISNXS, "vale1isnxs"} ,
685
+ { ARM64_TLBI_VALE1NXS, "vale1nxs"} ,
686
+ { ARM64_TLBI_VALE1OS, "vale1os"} ,
687
+ { ARM64_TLBI_VALE1OSNXS, "vale1osnxs"} ,
688
+ { ARM64_TLBI_VALE2, "vale2"} ,
689
+ { ARM64_TLBI_VALE2IS, "vale2is"} ,
690
+ { ARM64_TLBI_VALE2ISNXS, "vale2isnxs"} ,
691
+ { ARM64_TLBI_VALE2NXS, "vale2nxs"} ,
692
+ { ARM64_TLBI_VALE2OS, "vale2os"} ,
693
+ { ARM64_TLBI_VALE2OSNXS, "vale2osnxs"} ,
694
+ { ARM64_TLBI_VALE3, "vale3"} ,
695
+ { ARM64_TLBI_VALE3IS, "vale3is"} ,
696
+ { ARM64_TLBI_VALE3ISNXS, "vale3isnxs"} ,
697
+ { ARM64_TLBI_VALE3NXS, "vale3nxs"} ,
698
+ { ARM64_TLBI_VALE3OS, "vale3os"} ,
699
+ { ARM64_TLBI_VALE3OSNXS, "vale3osnxs"} ,
700
+ { ARM64_TLBI_VMALLE1, "vmalle1"} ,
701
+ { ARM64_TLBI_VMALLE1IS, "vmalle1is"} ,
702
+ { ARM64_TLBI_VMALLE1ISNXS, "vmalle1isnxs"} ,
703
+ { ARM64_TLBI_VMALLE1NXS, "vmalle1nxs"} ,
704
+ { ARM64_TLBI_VMALLE1OS, "vmalle1os"} ,
705
+ { ARM64_TLBI_VMALLE1OSNXS, "vmalle1osnxs"} ,
706
+ { ARM64_TLBI_VMALLS12E1, "vmalls12e1"} ,
707
+ { ARM64_TLBI_VMALLS12E1IS, "vmalls12e1is"} ,
708
+ { ARM64_TLBI_VMALLS12E1ISNXS, "vmalls12e1isnxs"} ,
709
+ { ARM64_TLBI_VMALLS12E1NXS, "vmalls12e1nxs"} ,
710
+ { ARM64_TLBI_VMALLS12E1OS, "vmalls12e1os"} ,
711
+ { ARM64_TLBI_VMALLS12E1OSNXS, "vmalls12e1osnxs"} ,
712
+ { ARM64_AT_S1E1R, "s1e1r"} ,
713
+ { ARM64_AT_S1E2R, "s1e2r"} ,
714
+ { ARM64_AT_S1E3R, "s1e3r"} ,
715
+ { ARM64_AT_S1E1W, "s1e1w"} ,
716
+ { ARM64_AT_S1E2W, "s1e2w"} ,
717
+ { ARM64_AT_S1E3W, "s1e3w"} ,
718
+ { ARM64_AT_S1E0R, "s1e0r"} ,
719
+ { ARM64_AT_S1E0W, "s1e0w"} ,
720
+ { ARM64_AT_S12E1R, "s12e1r"} ,
721
+ { ARM64_AT_S12E1W, "s12e1w"} ,
722
+ { ARM64_AT_S12E0R, "s12e0r"} ,
723
+ { ARM64_AT_S12E0W, "s12e0w"} ,
724
+ { ARM64_AT_S1E1RP, "s1e1rp"} ,
725
+ { ARM64_AT_S1E1WP, "s1e1wp"} ,
726
+ { ARM64_DC_CGDSW, "cgdsw"} ,
727
+ { ARM64_DC_CGDVAC, "cgdvac"} ,
728
+ { ARM64_DC_CGDVADP, "cgdvadp"} ,
729
+ { ARM64_DC_CGDVAP, "cgdvap"} ,
730
+ { ARM64_DC_CGSW, "cgsw"} ,
731
+ { ARM64_DC_CGVAC, "cgvac"} ,
732
+ { ARM64_DC_CGVADP, "cgvadp"} ,
733
+ { ARM64_DC_CGVAP, "cgvap"} ,
734
+ { ARM64_DC_CIGDSW, "cigdsw"} ,
735
+ { ARM64_DC_CIGDVAC, "cigdvac"} ,
736
+ { ARM64_DC_CIGSW, "cigsw"} ,
737
+ { ARM64_DC_CIGVAC, "cigvac"} ,
738
+ { ARM64_DC_CISW, "cisw"} ,
739
+ { ARM64_DC_CIVAC, "civac"} ,
740
+ { ARM64_DC_CSW, "csw"} ,
741
+ { ARM64_DC_CVAC, "cvac"} ,
742
+ { ARM64_DC_CVADP, "cvadp"} ,
743
+ { ARM64_DC_CVAP, "cvap"} ,
744
+ { ARM64_DC_CVAU, "cvau"} ,
745
+ { ARM64_DC_GVA, "gva"} ,
746
+ { ARM64_DC_GZVA, "gzva"} ,
747
+ { ARM64_DC_IGDSW, "igdsw"} ,
748
+ { ARM64_DC_IGDVAC, "igdvac"} ,
749
+ { ARM64_DC_IGSW, "igsw"} ,
750
+ { ARM64_DC_IGVAC, "igvac"} ,
751
+ { ARM64_DC_ISW, "isw"} ,
752
+ { ARM64_DC_IVAC, "ivac"} ,
753
+ { ARM64_DC_ZVA, "zva"} ,
754
+ { ARM64_IC_IALLUIS, "ialluis"} ,
755
+ { ARM64_IC_IALLU, "iallu"} ,
756
+ { ARM64_IC_IVAU, "ivau"} ,
757
+ };
758
+
759
+ arm64_sys_op AArch64_map_sys_op(const char *name)
760
+ {
761
+ int result = name2id(sys_op_name_map, ARR_SIZE(sys_op_name_map), name);
762
+ if (result == -1) {
763
+ return ARM64_SYS_INVALID;
764
+ }
765
+ return result;
766
+ }
767
+
768
+ void arm64_op_addReg(MCInst *MI, int reg)
769
+ {
770
+ if (MI->csh->detail) {
771
+ MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].type = ARM64_OP_REG;
772
+ MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].reg = reg;
773
+ MI->flat_insn->detail->arm64.op_count++;
774
+ }
775
+ }
776
+
777
+ void arm64_op_addVectorArrSpecifier(MCInst * MI, int sp)
778
+ {
779
+ if (MI->csh->detail) {
780
+ MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count - 1].vas = sp;
781
+ }
782
+ }
783
+
784
+ void arm64_op_addFP(MCInst *MI, float fp)
785
+ {
786
+ if (MI->csh->detail) {
787
+ MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].type = ARM64_OP_FP;
788
+ MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].fp = fp;
789
+ MI->flat_insn->detail->arm64.op_count++;
790
+ }
791
+ }
792
+
793
+ void arm64_op_addImm(MCInst *MI, int64_t imm)
794
+ {
795
+ if (MI->csh->detail) {
796
+ MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].type = ARM64_OP_IMM;
797
+ MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].imm = (int)imm;
798
+ MI->flat_insn->detail->arm64.op_count++;
799
+ }
800
+ }
801
+
802
+ #ifndef CAPSTONE_DIET
803
+
804
+ // map instruction to its characteristics
805
+ typedef struct insn_op {
806
+ unsigned int eflags_update; // how this instruction update status flags
807
+ uint8_t access[5];
808
+ } insn_op;
809
+
810
+ static const insn_op insn_ops[] = {
811
+ {
812
+ /* NULL item */
813
+ 0, { 0 }
814
+ },
815
+
816
+ #include "AArch64MappingInsnOp.inc"
817
+ };
818
+
819
+ // given internal insn id, return operand access info
820
+ const uint8_t *AArch64_get_op_access(cs_struct *h, unsigned int id)
821
+ {
822
+ int i = insn_find(insns, ARR_SIZE(insns), id, &h->insn_cache);
823
+ if (i != 0) {
824
+ return insn_ops[i].access;
825
+ }
826
+
827
+ return NULL;
828
+ }
829
+
830
+ void AArch64_reg_access(const cs_insn *insn,
831
+ cs_regs regs_read, uint8_t *regs_read_count,
832
+ cs_regs regs_write, uint8_t *regs_write_count)
833
+ {
834
+ uint8_t i;
835
+ uint8_t read_count, write_count;
836
+ cs_arm64 *arm64 = &(insn->detail->arm64);
837
+
838
+ read_count = insn->detail->regs_read_count;
839
+ write_count = insn->detail->regs_write_count;
840
+
841
+ // implicit registers
842
+ memcpy(regs_read, insn->detail->regs_read, read_count * sizeof(insn->detail->regs_read[0]));
843
+ memcpy(regs_write, insn->detail->regs_write, write_count * sizeof(insn->detail->regs_write[0]));
844
+
845
+ // explicit registers
846
+ for (i = 0; i < arm64->op_count; i++) {
847
+ cs_arm64_op *op = &(arm64->operands[i]);
848
+ switch((int)op->type) {
849
+ case ARM64_OP_REG:
850
+ if ((op->access & CS_AC_READ) && !arr_exist(regs_read, read_count, op->reg)) {
851
+ regs_read[read_count] = (uint16_t)op->reg;
852
+ read_count++;
853
+ }
854
+ if ((op->access & CS_AC_WRITE) && !arr_exist(regs_write, write_count, op->reg)) {
855
+ regs_write[write_count] = (uint16_t)op->reg;
856
+ write_count++;
857
+ }
858
+ break;
859
+ case ARM_OP_MEM:
860
+ // registers appeared in memory references always being read
861
+ if ((op->mem.base != ARM64_REG_INVALID) && !arr_exist(regs_read, read_count, op->mem.base)) {
862
+ regs_read[read_count] = (uint16_t)op->mem.base;
863
+ read_count++;
864
+ }
865
+ if ((op->mem.index != ARM64_REG_INVALID) && !arr_exist(regs_read, read_count, op->mem.index)) {
866
+ regs_read[read_count] = (uint16_t)op->mem.index;
867
+ read_count++;
868
+ }
869
+ if ((arm64->writeback) && (op->mem.base != ARM64_REG_INVALID) && !arr_exist(regs_write, write_count, op->mem.base)) {
870
+ regs_write[write_count] = (uint16_t)op->mem.base;
871
+ write_count++;
872
+ }
873
+ default:
874
+ break;
875
+ }
876
+ }
877
+
878
+ *regs_read_count = read_count;
879
+ *regs_write_count = write_count;
880
+ }
881
+ #endif
882
+
883
+ #endif