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,991 @@
1
+ #ifndef CAPSTONE_ARM_H
2
+ #define CAPSTONE_ARM_H
3
+
4
+ /* Capstone Disassembly Engine */
5
+ /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
6
+
7
+ #ifdef __cplusplus
8
+ extern "C" {
9
+ #endif
10
+
11
+ #include "platform.h"
12
+
13
+ #ifdef _MSC_VER
14
+ #pragma warning(disable:4201)
15
+ #endif
16
+
17
+ /// ARM shift type
18
+ typedef enum arm_shifter {
19
+ ARM_SFT_INVALID = 0,
20
+ ARM_SFT_ASR, ///< shift with immediate const
21
+ ARM_SFT_LSL, ///< shift with immediate const
22
+ ARM_SFT_LSR, ///< shift with immediate const
23
+ ARM_SFT_ROR, ///< shift with immediate const
24
+ ARM_SFT_RRX, ///< shift with immediate const
25
+ ARM_SFT_ASR_REG, ///< shift with register
26
+ ARM_SFT_LSL_REG, ///< shift with register
27
+ ARM_SFT_LSR_REG, ///< shift with register
28
+ ARM_SFT_ROR_REG, ///< shift with register
29
+ ARM_SFT_RRX_REG, ///< shift with register
30
+ } arm_shifter;
31
+
32
+ /// ARM condition code
33
+ typedef enum arm_cc {
34
+ ARM_CC_INVALID = 0,
35
+ ARM_CC_EQ, ///< Equal Equal
36
+ ARM_CC_NE, ///< Not equal Not equal, or unordered
37
+ ARM_CC_HS, ///< Carry set >, ==, or unordered
38
+ ARM_CC_LO, ///< Carry clear Less than
39
+ ARM_CC_MI, ///< Minus, negative Less than
40
+ ARM_CC_PL, ///< Plus, positive or zero >, ==, or unordered
41
+ ARM_CC_VS, ///< Overflow Unordered
42
+ ARM_CC_VC, ///< No overflow Not unordered
43
+ ARM_CC_HI, ///< Unsigned higher Greater than, or unordered
44
+ ARM_CC_LS, ///< Unsigned lower or same Less than or equal
45
+ ARM_CC_GE, ///< Greater than or equal Greater than or equal
46
+ ARM_CC_LT, ///< Less than Less than, or unordered
47
+ ARM_CC_GT, ///< Greater than Greater than
48
+ ARM_CC_LE, ///< Less than or equal <, ==, or unordered
49
+ ARM_CC_AL ///< Always (unconditional) Always (unconditional)
50
+ } arm_cc;
51
+
52
+ typedef enum arm_sysreg {
53
+ /// Special registers for MSR
54
+ ARM_SYSREG_INVALID = 0,
55
+
56
+ // SPSR* registers can be OR combined
57
+ ARM_SYSREG_SPSR_C = 1,
58
+ ARM_SYSREG_SPSR_X = 2,
59
+ ARM_SYSREG_SPSR_S = 4,
60
+ ARM_SYSREG_SPSR_F = 8,
61
+
62
+ // CPSR* registers can be OR combined
63
+ ARM_SYSREG_CPSR_C = 16,
64
+ ARM_SYSREG_CPSR_X = 32,
65
+ ARM_SYSREG_CPSR_S = 64,
66
+ ARM_SYSREG_CPSR_F = 128,
67
+
68
+ // independent registers
69
+ ARM_SYSREG_APSR = 256,
70
+ ARM_SYSREG_APSR_G,
71
+ ARM_SYSREG_APSR_NZCVQ,
72
+ ARM_SYSREG_APSR_NZCVQG,
73
+
74
+ ARM_SYSREG_IAPSR,
75
+ ARM_SYSREG_IAPSR_G,
76
+ ARM_SYSREG_IAPSR_NZCVQG,
77
+ ARM_SYSREG_IAPSR_NZCVQ,
78
+
79
+ ARM_SYSREG_EAPSR,
80
+ ARM_SYSREG_EAPSR_G,
81
+ ARM_SYSREG_EAPSR_NZCVQG,
82
+ ARM_SYSREG_EAPSR_NZCVQ,
83
+
84
+ ARM_SYSREG_XPSR,
85
+ ARM_SYSREG_XPSR_G,
86
+ ARM_SYSREG_XPSR_NZCVQG,
87
+ ARM_SYSREG_XPSR_NZCVQ,
88
+
89
+ ARM_SYSREG_IPSR,
90
+ ARM_SYSREG_EPSR,
91
+ ARM_SYSREG_IEPSR,
92
+
93
+ ARM_SYSREG_MSP,
94
+ ARM_SYSREG_PSP,
95
+ ARM_SYSREG_PRIMASK,
96
+ ARM_SYSREG_BASEPRI,
97
+ ARM_SYSREG_BASEPRI_MAX,
98
+ ARM_SYSREG_FAULTMASK,
99
+ ARM_SYSREG_CONTROL,
100
+ ARM_SYSREG_MSPLIM,
101
+ ARM_SYSREG_PSPLIM,
102
+ ARM_SYSREG_MSP_NS,
103
+ ARM_SYSREG_PSP_NS,
104
+ ARM_SYSREG_MSPLIM_NS,
105
+ ARM_SYSREG_PSPLIM_NS,
106
+ ARM_SYSREG_PRIMASK_NS,
107
+ ARM_SYSREG_BASEPRI_NS,
108
+ ARM_SYSREG_FAULTMASK_NS,
109
+ ARM_SYSREG_CONTROL_NS,
110
+ ARM_SYSREG_SP_NS,
111
+
112
+ // Banked Registers
113
+ ARM_SYSREG_R8_USR,
114
+ ARM_SYSREG_R9_USR,
115
+ ARM_SYSREG_R10_USR,
116
+ ARM_SYSREG_R11_USR,
117
+ ARM_SYSREG_R12_USR,
118
+ ARM_SYSREG_SP_USR,
119
+ ARM_SYSREG_LR_USR,
120
+ ARM_SYSREG_R8_FIQ,
121
+ ARM_SYSREG_R9_FIQ,
122
+ ARM_SYSREG_R10_FIQ,
123
+ ARM_SYSREG_R11_FIQ,
124
+ ARM_SYSREG_R12_FIQ,
125
+ ARM_SYSREG_SP_FIQ,
126
+ ARM_SYSREG_LR_FIQ,
127
+ ARM_SYSREG_LR_IRQ,
128
+ ARM_SYSREG_SP_IRQ,
129
+ ARM_SYSREG_LR_SVC,
130
+ ARM_SYSREG_SP_SVC,
131
+ ARM_SYSREG_LR_ABT,
132
+ ARM_SYSREG_SP_ABT,
133
+ ARM_SYSREG_LR_UND,
134
+ ARM_SYSREG_SP_UND,
135
+ ARM_SYSREG_LR_MON,
136
+ ARM_SYSREG_SP_MON,
137
+ ARM_SYSREG_ELR_HYP,
138
+ ARM_SYSREG_SP_HYP,
139
+
140
+ ARM_SYSREG_SPSR_FIQ,
141
+ ARM_SYSREG_SPSR_IRQ,
142
+ ARM_SYSREG_SPSR_SVC,
143
+ ARM_SYSREG_SPSR_ABT,
144
+ ARM_SYSREG_SPSR_UND,
145
+ ARM_SYSREG_SPSR_MON,
146
+ ARM_SYSREG_SPSR_HYP,
147
+ } arm_sysreg;
148
+
149
+ /// The memory barrier constants map directly to the 4-bit encoding of
150
+ /// the option field for Memory Barrier operations.
151
+ typedef enum arm_mem_barrier {
152
+ ARM_MB_INVALID = 0,
153
+ ARM_MB_RESERVED_0,
154
+ ARM_MB_OSHLD,
155
+ ARM_MB_OSHST,
156
+ ARM_MB_OSH,
157
+ ARM_MB_RESERVED_4,
158
+ ARM_MB_NSHLD,
159
+ ARM_MB_NSHST,
160
+ ARM_MB_NSH,
161
+ ARM_MB_RESERVED_8,
162
+ ARM_MB_ISHLD,
163
+ ARM_MB_ISHST,
164
+ ARM_MB_ISH,
165
+ ARM_MB_RESERVED_12,
166
+ ARM_MB_LD,
167
+ ARM_MB_ST,
168
+ ARM_MB_SY,
169
+ } arm_mem_barrier;
170
+
171
+ /// Operand type for instruction's operands
172
+ typedef enum arm_op_type {
173
+ ARM_OP_INVALID = 0, ///< = CS_OP_INVALID (Uninitialized).
174
+ ARM_OP_REG, ///< = CS_OP_REG (Register operand).
175
+ ARM_OP_IMM, ///< = CS_OP_IMM (Immediate operand).
176
+ ARM_OP_MEM, ///< = CS_OP_MEM (Memory operand).
177
+ ARM_OP_FP, ///< = CS_OP_FP (Floating-Point operand).
178
+ ARM_OP_CIMM = 64, ///< C-Immediate (coprocessor registers)
179
+ ARM_OP_PIMM, ///< P-Immediate (coprocessor registers)
180
+ ARM_OP_SETEND, ///< operand for SETEND instruction
181
+ ARM_OP_SYSREG, ///< MSR/MRS special register operand
182
+ } arm_op_type;
183
+
184
+ /// Operand type for SETEND instruction
185
+ typedef enum arm_setend_type {
186
+ ARM_SETEND_INVALID = 0, ///< Uninitialized.
187
+ ARM_SETEND_BE, ///< BE operand.
188
+ ARM_SETEND_LE, ///< LE operand
189
+ } arm_setend_type;
190
+
191
+ typedef enum arm_cpsmode_type {
192
+ ARM_CPSMODE_INVALID = 0,
193
+ ARM_CPSMODE_IE = 2,
194
+ ARM_CPSMODE_ID = 3
195
+ } arm_cpsmode_type;
196
+
197
+ /// Operand type for SETEND instruction
198
+ typedef enum arm_cpsflag_type {
199
+ ARM_CPSFLAG_INVALID = 0,
200
+ ARM_CPSFLAG_F = 1,
201
+ ARM_CPSFLAG_I = 2,
202
+ ARM_CPSFLAG_A = 4,
203
+ ARM_CPSFLAG_NONE = 16, ///< no flag
204
+ } arm_cpsflag_type;
205
+
206
+ /// Data type for elements of vector instructions.
207
+ typedef enum arm_vectordata_type {
208
+ ARM_VECTORDATA_INVALID = 0,
209
+
210
+ // Integer type
211
+ ARM_VECTORDATA_I8,
212
+ ARM_VECTORDATA_I16,
213
+ ARM_VECTORDATA_I32,
214
+ ARM_VECTORDATA_I64,
215
+
216
+ // Signed integer type
217
+ ARM_VECTORDATA_S8,
218
+ ARM_VECTORDATA_S16,
219
+ ARM_VECTORDATA_S32,
220
+ ARM_VECTORDATA_S64,
221
+
222
+ // Unsigned integer type
223
+ ARM_VECTORDATA_U8,
224
+ ARM_VECTORDATA_U16,
225
+ ARM_VECTORDATA_U32,
226
+ ARM_VECTORDATA_U64,
227
+
228
+ // Data type for VMUL/VMULL
229
+ ARM_VECTORDATA_P8,
230
+
231
+ // Floating type
232
+ ARM_VECTORDATA_F16,
233
+ ARM_VECTORDATA_F32,
234
+ ARM_VECTORDATA_F64,
235
+
236
+ // Convert float <-> float
237
+ ARM_VECTORDATA_F16F64, // f16.f64
238
+ ARM_VECTORDATA_F64F16, // f64.f16
239
+ ARM_VECTORDATA_F32F16, // f32.f16
240
+ ARM_VECTORDATA_F16F32, // f32.f16
241
+ ARM_VECTORDATA_F64F32, // f64.f32
242
+ ARM_VECTORDATA_F32F64, // f32.f64
243
+
244
+ // Convert integer <-> float
245
+ ARM_VECTORDATA_S32F32, // s32.f32
246
+ ARM_VECTORDATA_U32F32, // u32.f32
247
+ ARM_VECTORDATA_F32S32, // f32.s32
248
+ ARM_VECTORDATA_F32U32, // f32.u32
249
+ ARM_VECTORDATA_F64S16, // f64.s16
250
+ ARM_VECTORDATA_F32S16, // f32.s16
251
+ ARM_VECTORDATA_F64S32, // f64.s32
252
+ ARM_VECTORDATA_S16F64, // s16.f64
253
+ ARM_VECTORDATA_S16F32, // s16.f64
254
+ ARM_VECTORDATA_S32F64, // s32.f64
255
+ ARM_VECTORDATA_U16F64, // u16.f64
256
+ ARM_VECTORDATA_U16F32, // u16.f32
257
+ ARM_VECTORDATA_U32F64, // u32.f64
258
+ ARM_VECTORDATA_F64U16, // f64.u16
259
+ ARM_VECTORDATA_F32U16, // f32.u16
260
+ ARM_VECTORDATA_F64U32, // f64.u32
261
+ ARM_VECTORDATA_F16U16, // f16.u16
262
+ ARM_VECTORDATA_U16F16, // u16.f16
263
+ ARM_VECTORDATA_F16U32, // f16.u32
264
+ ARM_VECTORDATA_U32F16, // u32.f16
265
+ } arm_vectordata_type;
266
+
267
+ /// ARM registers
268
+ typedef enum arm_reg {
269
+ ARM_REG_INVALID = 0,
270
+ ARM_REG_APSR,
271
+ ARM_REG_APSR_NZCV,
272
+ ARM_REG_CPSR,
273
+ ARM_REG_FPEXC,
274
+ ARM_REG_FPINST,
275
+ ARM_REG_FPSCR,
276
+ ARM_REG_FPSCR_NZCV,
277
+ ARM_REG_FPSID,
278
+ ARM_REG_ITSTATE,
279
+ ARM_REG_LR,
280
+ ARM_REG_PC,
281
+ ARM_REG_SP,
282
+ ARM_REG_SPSR,
283
+ ARM_REG_D0,
284
+ ARM_REG_D1,
285
+ ARM_REG_D2,
286
+ ARM_REG_D3,
287
+ ARM_REG_D4,
288
+ ARM_REG_D5,
289
+ ARM_REG_D6,
290
+ ARM_REG_D7,
291
+ ARM_REG_D8,
292
+ ARM_REG_D9,
293
+ ARM_REG_D10,
294
+ ARM_REG_D11,
295
+ ARM_REG_D12,
296
+ ARM_REG_D13,
297
+ ARM_REG_D14,
298
+ ARM_REG_D15,
299
+ ARM_REG_D16,
300
+ ARM_REG_D17,
301
+ ARM_REG_D18,
302
+ ARM_REG_D19,
303
+ ARM_REG_D20,
304
+ ARM_REG_D21,
305
+ ARM_REG_D22,
306
+ ARM_REG_D23,
307
+ ARM_REG_D24,
308
+ ARM_REG_D25,
309
+ ARM_REG_D26,
310
+ ARM_REG_D27,
311
+ ARM_REG_D28,
312
+ ARM_REG_D29,
313
+ ARM_REG_D30,
314
+ ARM_REG_D31,
315
+ ARM_REG_FPINST2,
316
+ ARM_REG_MVFR0,
317
+ ARM_REG_MVFR1,
318
+ ARM_REG_MVFR2,
319
+ ARM_REG_Q0,
320
+ ARM_REG_Q1,
321
+ ARM_REG_Q2,
322
+ ARM_REG_Q3,
323
+ ARM_REG_Q4,
324
+ ARM_REG_Q5,
325
+ ARM_REG_Q6,
326
+ ARM_REG_Q7,
327
+ ARM_REG_Q8,
328
+ ARM_REG_Q9,
329
+ ARM_REG_Q10,
330
+ ARM_REG_Q11,
331
+ ARM_REG_Q12,
332
+ ARM_REG_Q13,
333
+ ARM_REG_Q14,
334
+ ARM_REG_Q15,
335
+ ARM_REG_R0,
336
+ ARM_REG_R1,
337
+ ARM_REG_R2,
338
+ ARM_REG_R3,
339
+ ARM_REG_R4,
340
+ ARM_REG_R5,
341
+ ARM_REG_R6,
342
+ ARM_REG_R7,
343
+ ARM_REG_R8,
344
+ ARM_REG_R9,
345
+ ARM_REG_R10,
346
+ ARM_REG_R11,
347
+ ARM_REG_R12,
348
+ ARM_REG_S0,
349
+ ARM_REG_S1,
350
+ ARM_REG_S2,
351
+ ARM_REG_S3,
352
+ ARM_REG_S4,
353
+ ARM_REG_S5,
354
+ ARM_REG_S6,
355
+ ARM_REG_S7,
356
+ ARM_REG_S8,
357
+ ARM_REG_S9,
358
+ ARM_REG_S10,
359
+ ARM_REG_S11,
360
+ ARM_REG_S12,
361
+ ARM_REG_S13,
362
+ ARM_REG_S14,
363
+ ARM_REG_S15,
364
+ ARM_REG_S16,
365
+ ARM_REG_S17,
366
+ ARM_REG_S18,
367
+ ARM_REG_S19,
368
+ ARM_REG_S20,
369
+ ARM_REG_S21,
370
+ ARM_REG_S22,
371
+ ARM_REG_S23,
372
+ ARM_REG_S24,
373
+ ARM_REG_S25,
374
+ ARM_REG_S26,
375
+ ARM_REG_S27,
376
+ ARM_REG_S28,
377
+ ARM_REG_S29,
378
+ ARM_REG_S30,
379
+ ARM_REG_S31,
380
+
381
+ ARM_REG_ENDING, // <-- mark the end of the list or registers
382
+
383
+ // alias registers
384
+ ARM_REG_R13 = ARM_REG_SP,
385
+ ARM_REG_R14 = ARM_REG_LR,
386
+ ARM_REG_R15 = ARM_REG_PC,
387
+
388
+ ARM_REG_SB = ARM_REG_R9,
389
+ ARM_REG_SL = ARM_REG_R10,
390
+ ARM_REG_FP = ARM_REG_R11,
391
+ ARM_REG_IP = ARM_REG_R12,
392
+ } arm_reg;
393
+
394
+ /// Instruction's operand referring to memory
395
+ /// This is associated with ARM_OP_MEM operand type above
396
+ typedef struct arm_op_mem {
397
+ arm_reg base; ///< base register
398
+ arm_reg index; ///< index register
399
+ int scale; ///< scale for index register (can be 1, or -1)
400
+ int disp; ///< displacement/offset value
401
+ /// left-shift on index register, or 0 if irrelevant
402
+ /// NOTE: this value can also be fetched via operand.shift.value
403
+ int lshift;
404
+ } arm_op_mem;
405
+
406
+ /// Instruction operand
407
+ typedef struct cs_arm_op {
408
+ int vector_index; ///< Vector Index for some vector operands (or -1 if irrelevant)
409
+
410
+ struct {
411
+ arm_shifter type;
412
+ unsigned int value;
413
+ } shift;
414
+
415
+ arm_op_type type; ///< operand type
416
+
417
+ union {
418
+ int reg; ///< register value for REG/SYSREG operand
419
+ int32_t imm; ///< immediate value for C-IMM, P-IMM or IMM operand
420
+ double fp; ///< floating point value for FP operand
421
+ arm_op_mem mem; ///< base/index/scale/disp value for MEM operand
422
+ arm_setend_type setend; ///< SETEND instruction's operand type
423
+ };
424
+
425
+ /// in some instructions, an operand can be subtracted or added to
426
+ /// the base register,
427
+ /// if TRUE, this operand is subtracted. otherwise, it is added.
428
+ bool subtracted;
429
+
430
+ /// How is this operand accessed? (READ, WRITE or READ|WRITE)
431
+ /// This field is combined of cs_ac_type.
432
+ /// NOTE: this field is irrelevant if engine is compiled in DIET mode.
433
+ uint8_t access;
434
+
435
+ /// Neon lane index for NEON instructions (or -1 if irrelevant)
436
+ int8_t neon_lane;
437
+ } cs_arm_op;
438
+
439
+ /// Instruction structure
440
+ typedef struct cs_arm {
441
+ bool usermode; ///< User-mode registers to be loaded (for LDM/STM instructions)
442
+ int vector_size; ///< Scalar size for vector instructions
443
+ arm_vectordata_type vector_data; ///< Data type for elements of vector instructions
444
+ arm_cpsmode_type cps_mode; ///< CPS mode for CPS instruction
445
+ arm_cpsflag_type cps_flag; ///< CPS mode for CPS instruction
446
+ arm_cc cc; ///< conditional code for this insn
447
+ bool update_flags; ///< does this insn update flags?
448
+ bool writeback; ///< does this insn write-back?
449
+ bool post_index; ///< only set if writeback is 'True', if 'False' pre-index, otherwise post.
450
+ arm_mem_barrier mem_barrier; ///< Option for some memory barrier instructions
451
+
452
+ /// Number of operands of this instruction,
453
+ /// or 0 when instruction has no operand.
454
+ uint8_t op_count;
455
+
456
+ cs_arm_op operands[36]; ///< operands for this instruction.
457
+ } cs_arm;
458
+
459
+ /// ARM instruction
460
+ typedef enum arm_insn {
461
+ ARM_INS_INVALID = 0,
462
+
463
+ ARM_INS_ADC,
464
+ ARM_INS_ADD,
465
+ ARM_INS_ADDW,
466
+ ARM_INS_ADR,
467
+ ARM_INS_AESD,
468
+ ARM_INS_AESE,
469
+ ARM_INS_AESIMC,
470
+ ARM_INS_AESMC,
471
+ ARM_INS_AND,
472
+ ARM_INS_ASR,
473
+ ARM_INS_B,
474
+ ARM_INS_BFC,
475
+ ARM_INS_BFI,
476
+ ARM_INS_BIC,
477
+ ARM_INS_BKPT,
478
+ ARM_INS_BL,
479
+ ARM_INS_BLX,
480
+ ARM_INS_BLXNS,
481
+ ARM_INS_BX,
482
+ ARM_INS_BXJ,
483
+ ARM_INS_BXNS,
484
+ ARM_INS_CBNZ,
485
+ ARM_INS_CBZ,
486
+ ARM_INS_CDP,
487
+ ARM_INS_CDP2,
488
+ ARM_INS_CLREX,
489
+ ARM_INS_CLZ,
490
+ ARM_INS_CMN,
491
+ ARM_INS_CMP,
492
+ ARM_INS_CPS,
493
+ ARM_INS_CRC32B,
494
+ ARM_INS_CRC32CB,
495
+ ARM_INS_CRC32CH,
496
+ ARM_INS_CRC32CW,
497
+ ARM_INS_CRC32H,
498
+ ARM_INS_CRC32W,
499
+ ARM_INS_CSDB,
500
+ ARM_INS_DBG,
501
+ ARM_INS_DCPS1,
502
+ ARM_INS_DCPS2,
503
+ ARM_INS_DCPS3,
504
+ ARM_INS_DFB,
505
+ ARM_INS_DMB,
506
+ ARM_INS_DSB,
507
+ ARM_INS_EOR,
508
+ ARM_INS_ERET,
509
+ ARM_INS_ESB,
510
+ ARM_INS_FADDD,
511
+ ARM_INS_FADDS,
512
+ ARM_INS_FCMPZD,
513
+ ARM_INS_FCMPZS,
514
+ ARM_INS_FCONSTD,
515
+ ARM_INS_FCONSTS,
516
+ ARM_INS_FLDMDBX,
517
+ ARM_INS_FLDMIAX,
518
+ ARM_INS_FMDHR,
519
+ ARM_INS_FMDLR,
520
+ ARM_INS_FMSTAT,
521
+ ARM_INS_FSTMDBX,
522
+ ARM_INS_FSTMIAX,
523
+ ARM_INS_FSUBD,
524
+ ARM_INS_FSUBS,
525
+ ARM_INS_HINT,
526
+ ARM_INS_HLT,
527
+ ARM_INS_HVC,
528
+ ARM_INS_ISB,
529
+ ARM_INS_IT,
530
+ ARM_INS_LDA,
531
+ ARM_INS_LDAB,
532
+ ARM_INS_LDAEX,
533
+ ARM_INS_LDAEXB,
534
+ ARM_INS_LDAEXD,
535
+ ARM_INS_LDAEXH,
536
+ ARM_INS_LDAH,
537
+ ARM_INS_LDC,
538
+ ARM_INS_LDC2,
539
+ ARM_INS_LDC2L,
540
+ ARM_INS_LDCL,
541
+ ARM_INS_LDM,
542
+ ARM_INS_LDMDA,
543
+ ARM_INS_LDMDB,
544
+ ARM_INS_LDMIB,
545
+ ARM_INS_LDR,
546
+ ARM_INS_LDRB,
547
+ ARM_INS_LDRBT,
548
+ ARM_INS_LDRD,
549
+ ARM_INS_LDREX,
550
+ ARM_INS_LDREXB,
551
+ ARM_INS_LDREXD,
552
+ ARM_INS_LDREXH,
553
+ ARM_INS_LDRH,
554
+ ARM_INS_LDRHT,
555
+ ARM_INS_LDRSB,
556
+ ARM_INS_LDRSBT,
557
+ ARM_INS_LDRSH,
558
+ ARM_INS_LDRSHT,
559
+ ARM_INS_LDRT,
560
+ ARM_INS_LSL,
561
+ ARM_INS_LSR,
562
+ ARM_INS_MCR,
563
+ ARM_INS_MCR2,
564
+ ARM_INS_MCRR,
565
+ ARM_INS_MCRR2,
566
+ ARM_INS_MLA,
567
+ ARM_INS_MLS,
568
+ ARM_INS_MOV,
569
+ ARM_INS_MOVS,
570
+ ARM_INS_MOVT,
571
+ ARM_INS_MOVW,
572
+ ARM_INS_MRC,
573
+ ARM_INS_MRC2,
574
+ ARM_INS_MRRC,
575
+ ARM_INS_MRRC2,
576
+ ARM_INS_MRS,
577
+ ARM_INS_MSR,
578
+ ARM_INS_MUL,
579
+ ARM_INS_MVN,
580
+ ARM_INS_NEG,
581
+ ARM_INS_NOP,
582
+ ARM_INS_ORN,
583
+ ARM_INS_ORR,
584
+ ARM_INS_PKHBT,
585
+ ARM_INS_PKHTB,
586
+ ARM_INS_PLD,
587
+ ARM_INS_PLDW,
588
+ ARM_INS_PLI,
589
+ ARM_INS_POP,
590
+ ARM_INS_PUSH,
591
+ ARM_INS_QADD,
592
+ ARM_INS_QADD16,
593
+ ARM_INS_QADD8,
594
+ ARM_INS_QASX,
595
+ ARM_INS_QDADD,
596
+ ARM_INS_QDSUB,
597
+ ARM_INS_QSAX,
598
+ ARM_INS_QSUB,
599
+ ARM_INS_QSUB16,
600
+ ARM_INS_QSUB8,
601
+ ARM_INS_RBIT,
602
+ ARM_INS_REV,
603
+ ARM_INS_REV16,
604
+ ARM_INS_REVSH,
605
+ ARM_INS_RFEDA,
606
+ ARM_INS_RFEDB,
607
+ ARM_INS_RFEIA,
608
+ ARM_INS_RFEIB,
609
+ ARM_INS_ROR,
610
+ ARM_INS_RRX,
611
+ ARM_INS_RSB,
612
+ ARM_INS_RSC,
613
+ ARM_INS_SADD16,
614
+ ARM_INS_SADD8,
615
+ ARM_INS_SASX,
616
+ ARM_INS_SBC,
617
+ ARM_INS_SBFX,
618
+ ARM_INS_SDIV,
619
+ ARM_INS_SEL,
620
+ ARM_INS_SETEND,
621
+ ARM_INS_SETPAN,
622
+ ARM_INS_SEV,
623
+ ARM_INS_SEVL,
624
+ ARM_INS_SG,
625
+ ARM_INS_SHA1C,
626
+ ARM_INS_SHA1H,
627
+ ARM_INS_SHA1M,
628
+ ARM_INS_SHA1P,
629
+ ARM_INS_SHA1SU0,
630
+ ARM_INS_SHA1SU1,
631
+ ARM_INS_SHA256H,
632
+ ARM_INS_SHA256H2,
633
+ ARM_INS_SHA256SU0,
634
+ ARM_INS_SHA256SU1,
635
+ ARM_INS_SHADD16,
636
+ ARM_INS_SHADD8,
637
+ ARM_INS_SHASX,
638
+ ARM_INS_SHSAX,
639
+ ARM_INS_SHSUB16,
640
+ ARM_INS_SHSUB8,
641
+ ARM_INS_SMC,
642
+ ARM_INS_SMLABB,
643
+ ARM_INS_SMLABT,
644
+ ARM_INS_SMLAD,
645
+ ARM_INS_SMLADX,
646
+ ARM_INS_SMLAL,
647
+ ARM_INS_SMLALBB,
648
+ ARM_INS_SMLALBT,
649
+ ARM_INS_SMLALD,
650
+ ARM_INS_SMLALDX,
651
+ ARM_INS_SMLALTB,
652
+ ARM_INS_SMLALTT,
653
+ ARM_INS_SMLATB,
654
+ ARM_INS_SMLATT,
655
+ ARM_INS_SMLAWB,
656
+ ARM_INS_SMLAWT,
657
+ ARM_INS_SMLSD,
658
+ ARM_INS_SMLSDX,
659
+ ARM_INS_SMLSLD,
660
+ ARM_INS_SMLSLDX,
661
+ ARM_INS_SMMLA,
662
+ ARM_INS_SMMLAR,
663
+ ARM_INS_SMMLS,
664
+ ARM_INS_SMMLSR,
665
+ ARM_INS_SMMUL,
666
+ ARM_INS_SMMULR,
667
+ ARM_INS_SMUAD,
668
+ ARM_INS_SMUADX,
669
+ ARM_INS_SMULBB,
670
+ ARM_INS_SMULBT,
671
+ ARM_INS_SMULL,
672
+ ARM_INS_SMULTB,
673
+ ARM_INS_SMULTT,
674
+ ARM_INS_SMULWB,
675
+ ARM_INS_SMULWT,
676
+ ARM_INS_SMUSD,
677
+ ARM_INS_SMUSDX,
678
+ ARM_INS_SRSDA,
679
+ ARM_INS_SRSDB,
680
+ ARM_INS_SRSIA,
681
+ ARM_INS_SRSIB,
682
+ ARM_INS_SSAT,
683
+ ARM_INS_SSAT16,
684
+ ARM_INS_SSAX,
685
+ ARM_INS_SSUB16,
686
+ ARM_INS_SSUB8,
687
+ ARM_INS_STC,
688
+ ARM_INS_STC2,
689
+ ARM_INS_STC2L,
690
+ ARM_INS_STCL,
691
+ ARM_INS_STL,
692
+ ARM_INS_STLB,
693
+ ARM_INS_STLEX,
694
+ ARM_INS_STLEXB,
695
+ ARM_INS_STLEXD,
696
+ ARM_INS_STLEXH,
697
+ ARM_INS_STLH,
698
+ ARM_INS_STM,
699
+ ARM_INS_STMDA,
700
+ ARM_INS_STMDB,
701
+ ARM_INS_STMIB,
702
+ ARM_INS_STR,
703
+ ARM_INS_STRB,
704
+ ARM_INS_STRBT,
705
+ ARM_INS_STRD,
706
+ ARM_INS_STREX,
707
+ ARM_INS_STREXB,
708
+ ARM_INS_STREXD,
709
+ ARM_INS_STREXH,
710
+ ARM_INS_STRH,
711
+ ARM_INS_STRHT,
712
+ ARM_INS_STRT,
713
+ ARM_INS_SUB,
714
+ ARM_INS_SUBS,
715
+ ARM_INS_SUBW,
716
+ ARM_INS_SVC,
717
+ ARM_INS_SWP,
718
+ ARM_INS_SWPB,
719
+ ARM_INS_SXTAB,
720
+ ARM_INS_SXTAB16,
721
+ ARM_INS_SXTAH,
722
+ ARM_INS_SXTB,
723
+ ARM_INS_SXTB16,
724
+ ARM_INS_SXTH,
725
+ ARM_INS_TBB,
726
+ ARM_INS_TBH,
727
+ ARM_INS_TEQ,
728
+ ARM_INS_TRAP,
729
+ ARM_INS_TSB,
730
+ ARM_INS_TST,
731
+ ARM_INS_TT,
732
+ ARM_INS_TTA,
733
+ ARM_INS_TTAT,
734
+ ARM_INS_TTT,
735
+ ARM_INS_UADD16,
736
+ ARM_INS_UADD8,
737
+ ARM_INS_UASX,
738
+ ARM_INS_UBFX,
739
+ ARM_INS_UDF,
740
+ ARM_INS_UDIV,
741
+ ARM_INS_UHADD16,
742
+ ARM_INS_UHADD8,
743
+ ARM_INS_UHASX,
744
+ ARM_INS_UHSAX,
745
+ ARM_INS_UHSUB16,
746
+ ARM_INS_UHSUB8,
747
+ ARM_INS_UMAAL,
748
+ ARM_INS_UMLAL,
749
+ ARM_INS_UMULL,
750
+ ARM_INS_UQADD16,
751
+ ARM_INS_UQADD8,
752
+ ARM_INS_UQASX,
753
+ ARM_INS_UQSAX,
754
+ ARM_INS_UQSUB16,
755
+ ARM_INS_UQSUB8,
756
+ ARM_INS_USAD8,
757
+ ARM_INS_USADA8,
758
+ ARM_INS_USAT,
759
+ ARM_INS_USAT16,
760
+ ARM_INS_USAX,
761
+ ARM_INS_USUB16,
762
+ ARM_INS_USUB8,
763
+ ARM_INS_UXTAB,
764
+ ARM_INS_UXTAB16,
765
+ ARM_INS_UXTAH,
766
+ ARM_INS_UXTB,
767
+ ARM_INS_UXTB16,
768
+ ARM_INS_UXTH,
769
+ ARM_INS_VABA,
770
+ ARM_INS_VABAL,
771
+ ARM_INS_VABD,
772
+ ARM_INS_VABDL,
773
+ ARM_INS_VABS,
774
+ ARM_INS_VACGE,
775
+ ARM_INS_VACGT,
776
+ ARM_INS_VACLE,
777
+ ARM_INS_VACLT,
778
+ ARM_INS_VADD,
779
+ ARM_INS_VADDHN,
780
+ ARM_INS_VADDL,
781
+ ARM_INS_VADDW,
782
+ ARM_INS_VAND,
783
+ ARM_INS_VBIC,
784
+ ARM_INS_VBIF,
785
+ ARM_INS_VBIT,
786
+ ARM_INS_VBSL,
787
+ ARM_INS_VCADD,
788
+ ARM_INS_VCEQ,
789
+ ARM_INS_VCGE,
790
+ ARM_INS_VCGT,
791
+ ARM_INS_VCLE,
792
+ ARM_INS_VCLS,
793
+ ARM_INS_VCLT,
794
+ ARM_INS_VCLZ,
795
+ ARM_INS_VCMLA,
796
+ ARM_INS_VCMP,
797
+ ARM_INS_VCMPE,
798
+ ARM_INS_VCNT,
799
+ ARM_INS_VCVT,
800
+ ARM_INS_VCVTA,
801
+ ARM_INS_VCVTB,
802
+ ARM_INS_VCVTM,
803
+ ARM_INS_VCVTN,
804
+ ARM_INS_VCVTP,
805
+ ARM_INS_VCVTR,
806
+ ARM_INS_VCVTT,
807
+ ARM_INS_VDIV,
808
+ ARM_INS_VDUP,
809
+ ARM_INS_VEOR,
810
+ ARM_INS_VEXT,
811
+ ARM_INS_VFMA,
812
+ ARM_INS_VFMS,
813
+ ARM_INS_VFNMA,
814
+ ARM_INS_VFNMS,
815
+ ARM_INS_VHADD,
816
+ ARM_INS_VHSUB,
817
+ ARM_INS_VINS,
818
+ ARM_INS_VJCVT,
819
+ ARM_INS_VLD1,
820
+ ARM_INS_VLD2,
821
+ ARM_INS_VLD3,
822
+ ARM_INS_VLD4,
823
+ ARM_INS_VLDMDB,
824
+ ARM_INS_VLDMIA,
825
+ ARM_INS_VLDR,
826
+ ARM_INS_VLLDM,
827
+ ARM_INS_VLSTM,
828
+ ARM_INS_VMAX,
829
+ ARM_INS_VMAXNM,
830
+ ARM_INS_VMIN,
831
+ ARM_INS_VMINNM,
832
+ ARM_INS_VMLA,
833
+ ARM_INS_VMLAL,
834
+ ARM_INS_VMLS,
835
+ ARM_INS_VMLSL,
836
+ ARM_INS_VMOV,
837
+ ARM_INS_VMOVL,
838
+ ARM_INS_VMOVN,
839
+ ARM_INS_VMOVX,
840
+ ARM_INS_VMRS,
841
+ ARM_INS_VMSR,
842
+ ARM_INS_VMUL,
843
+ ARM_INS_VMULL,
844
+ ARM_INS_VMVN,
845
+ ARM_INS_VNEG,
846
+ ARM_INS_VNMLA,
847
+ ARM_INS_VNMLS,
848
+ ARM_INS_VNMUL,
849
+ ARM_INS_VORN,
850
+ ARM_INS_VORR,
851
+ ARM_INS_VPADAL,
852
+ ARM_INS_VPADD,
853
+ ARM_INS_VPADDL,
854
+ ARM_INS_VPMAX,
855
+ ARM_INS_VPMIN,
856
+ ARM_INS_VPOP,
857
+ ARM_INS_VPUSH,
858
+ ARM_INS_VQABS,
859
+ ARM_INS_VQADD,
860
+ ARM_INS_VQDMLAL,
861
+ ARM_INS_VQDMLSL,
862
+ ARM_INS_VQDMULH,
863
+ ARM_INS_VQDMULL,
864
+ ARM_INS_VQMOVN,
865
+ ARM_INS_VQMOVUN,
866
+ ARM_INS_VQNEG,
867
+ ARM_INS_VQRDMLAH,
868
+ ARM_INS_VQRDMLSH,
869
+ ARM_INS_VQRDMULH,
870
+ ARM_INS_VQRSHL,
871
+ ARM_INS_VQRSHRN,
872
+ ARM_INS_VQRSHRUN,
873
+ ARM_INS_VQSHL,
874
+ ARM_INS_VQSHLU,
875
+ ARM_INS_VQSHRN,
876
+ ARM_INS_VQSHRUN,
877
+ ARM_INS_VQSUB,
878
+ ARM_INS_VRADDHN,
879
+ ARM_INS_VRECPE,
880
+ ARM_INS_VRECPS,
881
+ ARM_INS_VREV16,
882
+ ARM_INS_VREV32,
883
+ ARM_INS_VREV64,
884
+ ARM_INS_VRHADD,
885
+ ARM_INS_VRINTA,
886
+ ARM_INS_VRINTM,
887
+ ARM_INS_VRINTN,
888
+ ARM_INS_VRINTP,
889
+ ARM_INS_VRINTR,
890
+ ARM_INS_VRINTX,
891
+ ARM_INS_VRINTZ,
892
+ ARM_INS_VRSHL,
893
+ ARM_INS_VRSHR,
894
+ ARM_INS_VRSHRN,
895
+ ARM_INS_VRSQRTE,
896
+ ARM_INS_VRSQRTS,
897
+ ARM_INS_VRSRA,
898
+ ARM_INS_VRSUBHN,
899
+ ARM_INS_VSDOT,
900
+ ARM_INS_VSELEQ,
901
+ ARM_INS_VSELGE,
902
+ ARM_INS_VSELGT,
903
+ ARM_INS_VSELVS,
904
+ ARM_INS_VSHL,
905
+ ARM_INS_VSHLL,
906
+ ARM_INS_VSHR,
907
+ ARM_INS_VSHRN,
908
+ ARM_INS_VSLI,
909
+ ARM_INS_VSQRT,
910
+ ARM_INS_VSRA,
911
+ ARM_INS_VSRI,
912
+ ARM_INS_VST1,
913
+ ARM_INS_VST2,
914
+ ARM_INS_VST3,
915
+ ARM_INS_VST4,
916
+ ARM_INS_VSTMDB,
917
+ ARM_INS_VSTMIA,
918
+ ARM_INS_VSTR,
919
+ ARM_INS_VSUB,
920
+ ARM_INS_VSUBHN,
921
+ ARM_INS_VSUBL,
922
+ ARM_INS_VSUBW,
923
+ ARM_INS_VSWP,
924
+ ARM_INS_VTBL,
925
+ ARM_INS_VTBX,
926
+ ARM_INS_VTRN,
927
+ ARM_INS_VTST,
928
+ ARM_INS_VUDOT,
929
+ ARM_INS_VUZP,
930
+ ARM_INS_VZIP,
931
+ ARM_INS_WFE,
932
+ ARM_INS_WFI,
933
+ ARM_INS_YIELD,
934
+
935
+ ARM_INS_ENDING, // <-- mark the end of the list of instructions
936
+ } arm_insn;
937
+
938
+ /// Group of ARM instructions
939
+ typedef enum arm_insn_group {
940
+ ARM_GRP_INVALID = 0, ///< = CS_GRP_INVALID
941
+
942
+ // Generic groups
943
+ // all jump instructions (conditional+direct+indirect jumps)
944
+ ARM_GRP_JUMP, ///< = CS_GRP_JUMP
945
+ ARM_GRP_CALL, ///< = CS_GRP_CALL
946
+ ARM_GRP_INT = 4, ///< = CS_GRP_INT
947
+ ARM_GRP_PRIVILEGE = 6, ///< = CS_GRP_PRIVILEGE
948
+ ARM_GRP_BRANCH_RELATIVE, ///< = CS_GRP_BRANCH_RELATIVE
949
+
950
+ // Architecture-specific groups
951
+ ARM_GRP_CRYPTO = 128,
952
+ ARM_GRP_DATABARRIER,
953
+ ARM_GRP_DIVIDE,
954
+ ARM_GRP_FPARMV8,
955
+ ARM_GRP_MULTPRO,
956
+ ARM_GRP_NEON,
957
+ ARM_GRP_T2EXTRACTPACK,
958
+ ARM_GRP_THUMB2DSP,
959
+ ARM_GRP_TRUSTZONE,
960
+ ARM_GRP_V4T,
961
+ ARM_GRP_V5T,
962
+ ARM_GRP_V5TE,
963
+ ARM_GRP_V6,
964
+ ARM_GRP_V6T2,
965
+ ARM_GRP_V7,
966
+ ARM_GRP_V8,
967
+ ARM_GRP_VFP2,
968
+ ARM_GRP_VFP3,
969
+ ARM_GRP_VFP4,
970
+ ARM_GRP_ARM,
971
+ ARM_GRP_MCLASS,
972
+ ARM_GRP_NOTMCLASS,
973
+ ARM_GRP_THUMB,
974
+ ARM_GRP_THUMB1ONLY,
975
+ ARM_GRP_THUMB2,
976
+ ARM_GRP_PREV8,
977
+ ARM_GRP_FPVMLX,
978
+ ARM_GRP_MULOPS,
979
+ ARM_GRP_CRC,
980
+ ARM_GRP_DPVFP,
981
+ ARM_GRP_V6M,
982
+ ARM_GRP_VIRTUALIZATION,
983
+
984
+ ARM_GRP_ENDING,
985
+ } arm_insn_group;
986
+
987
+ #ifdef __cplusplus
988
+ }
989
+ #endif
990
+
991
+ #endif