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,486 @@
1
+ //===-- ARMBaseInfo.h - Top level definitions for ARM -------- --*- 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
+ // This file contains small standalone helper functions and enum definitions for
11
+ // the ARM target useful for the compiler back-end and the MC libraries.
12
+ // As such, it deliberately does not include references to LLVM core
13
+ // code gen types, passes, etc..
14
+ //
15
+ //===----------------------------------------------------------------------===//
16
+
17
+ /* Capstone Disassembly Engine */
18
+ /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */
19
+
20
+ #ifndef CS_ARMBASEINFO_H
21
+ #define CS_ARMBASEINFO_H
22
+
23
+ #include "capstone/arm.h"
24
+
25
+ // Defines symbolic names for ARM registers. This defines a mapping from
26
+ // register name to register number.
27
+ //
28
+ #define GET_REGINFO_ENUM
29
+ #include "ARMGenRegisterInfo.inc"
30
+
31
+ // Enums corresponding to ARM condition codes
32
+ // The CondCodes constants map directly to the 4-bit encoding of the
33
+ // condition field for predicated instructions.
34
+ typedef enum ARMCC_CondCodes { // Meaning (integer) Meaning (floating-point)
35
+ ARMCC_EQ, // Equal Equal
36
+ ARMCC_NE, // Not equal Not equal, or unordered
37
+ ARMCC_HS, // Carry set >, ==, or unordered
38
+ ARMCC_LO, // Carry clear Less than
39
+ ARMCC_MI, // Minus, negative Less than
40
+ ARMCC_PL, // Plus, positive or zero >, ==, or unordered
41
+ ARMCC_VS, // Overflow Unordered
42
+ ARMCC_VC, // No overflow Not unordered
43
+ ARMCC_HI, // Unsigned higher Greater than, or unordered
44
+ ARMCC_LS, // Unsigned lower or same Less than or equal
45
+ ARMCC_GE, // Greater than or equal Greater than or equal
46
+ ARMCC_LT, // Less than Less than, or unordered
47
+ ARMCC_GT, // Greater than Greater than
48
+ ARMCC_LE, // Less than or equal <, ==, or unordered
49
+ ARMCC_AL // Always (unconditional) Always (unconditional)
50
+ } ARMCC_CondCodes;
51
+
52
+ inline static ARMCC_CondCodes ARMCC_getOppositeCondition(ARMCC_CondCodes CC)
53
+ {
54
+ switch (CC) {
55
+ case ARMCC_EQ: return ARMCC_NE;
56
+ case ARMCC_NE: return ARMCC_EQ;
57
+ case ARMCC_HS: return ARMCC_LO;
58
+ case ARMCC_LO: return ARMCC_HS;
59
+ case ARMCC_MI: return ARMCC_PL;
60
+ case ARMCC_PL: return ARMCC_MI;
61
+ case ARMCC_VS: return ARMCC_VC;
62
+ case ARMCC_VC: return ARMCC_VS;
63
+ case ARMCC_HI: return ARMCC_LS;
64
+ case ARMCC_LS: return ARMCC_HI;
65
+ case ARMCC_GE: return ARMCC_LT;
66
+ case ARMCC_LT: return ARMCC_GE;
67
+ case ARMCC_GT: return ARMCC_LE;
68
+ case ARMCC_LE: return ARMCC_GT;
69
+ default: return ARMCC_AL;
70
+ }
71
+ }
72
+
73
+ inline static const char *ARMCC_ARMCondCodeToString(ARMCC_CondCodes CC)
74
+ {
75
+ switch (CC) {
76
+ case ARMCC_EQ: return "eq";
77
+ case ARMCC_NE: return "ne";
78
+ case ARMCC_HS: return "hs";
79
+ case ARMCC_LO: return "lo";
80
+ case ARMCC_MI: return "mi";
81
+ case ARMCC_PL: return "pl";
82
+ case ARMCC_VS: return "vs";
83
+ case ARMCC_VC: return "vc";
84
+ case ARMCC_HI: return "hi";
85
+ case ARMCC_LS: return "ls";
86
+ case ARMCC_GE: return "ge";
87
+ case ARMCC_LT: return "lt";
88
+ case ARMCC_GT: return "gt";
89
+ case ARMCC_LE: return "le";
90
+ case ARMCC_AL: return "al";
91
+ default: return "";
92
+ }
93
+ }
94
+
95
+ inline static const char *ARM_PROC_IFlagsToString(unsigned val)
96
+ {
97
+ switch (val) {
98
+ case ARM_CPSFLAG_F: return "f";
99
+ case ARM_CPSFLAG_I: return "i";
100
+ case ARM_CPSFLAG_A: return "a";
101
+ default: return "";
102
+ }
103
+ }
104
+
105
+ inline static const char *ARM_PROC_IModToString(unsigned val)
106
+ {
107
+ switch (val) {
108
+ case ARM_CPSMODE_IE: return "ie";
109
+ case ARM_CPSMODE_ID: return "id";
110
+ default: return "";
111
+ }
112
+ }
113
+
114
+ inline static const char *ARM_MB_MemBOptToString(unsigned val, bool HasV8)
115
+ {
116
+ // TODO: add details
117
+ switch (val + 1) {
118
+ default: return "BUGBUG";
119
+ case ARM_MB_SY: return "sy";
120
+ case ARM_MB_ST: return "st";
121
+ case ARM_MB_LD: return HasV8 ? "ld" : "#0xd";
122
+ case ARM_MB_RESERVED_12: return "#0xc";
123
+ case ARM_MB_ISH: return "ish";
124
+ case ARM_MB_ISHST: return "ishst";
125
+ case ARM_MB_ISHLD: return HasV8 ? "ishld" : "#9";
126
+ case ARM_MB_RESERVED_8: return "#8";
127
+ case ARM_MB_NSH: return "nsh";
128
+ case ARM_MB_NSHST: return "nshst";
129
+ case ARM_MB_NSHLD: return HasV8 ? "nshld" : "#5";
130
+ case ARM_MB_RESERVED_4: return "#4";
131
+ case ARM_MB_OSH: return "osh";
132
+ case ARM_MB_OSHST: return "oshst";
133
+ case ARM_MB_OSHLD: return HasV8 ? "oshld" : "#1";
134
+ case ARM_MB_RESERVED_0: return "#0";
135
+ }
136
+ }
137
+
138
+ enum ARM_ISB_InstSyncBOpt {
139
+ ARM_ISB_RESERVED_0 = 0,
140
+ ARM_ISB_RESERVED_1 = 1,
141
+ ARM_ISB_RESERVED_2 = 2,
142
+ ARM_ISB_RESERVED_3 = 3,
143
+ ARM_ISB_RESERVED_4 = 4,
144
+ ARM_ISB_RESERVED_5 = 5,
145
+ ARM_ISB_RESERVED_6 = 6,
146
+ ARM_ISB_RESERVED_7 = 7,
147
+ ARM_ISB_RESERVED_8 = 8,
148
+ ARM_ISB_RESERVED_9 = 9,
149
+ ARM_ISB_RESERVED_10 = 10,
150
+ ARM_ISB_RESERVED_11 = 11,
151
+ ARM_ISB_RESERVED_12 = 12,
152
+ ARM_ISB_RESERVED_13 = 13,
153
+ ARM_ISB_RESERVED_14 = 14,
154
+ ARM_ISB_SY = 15
155
+ };
156
+
157
+ inline static const char *ARM_ISB_InstSyncBOptToString(unsigned val)
158
+ {
159
+ switch (val) {
160
+ default: // never reach
161
+ case ARM_ISB_RESERVED_0: return "#0x0";
162
+ case ARM_ISB_RESERVED_1: return "#0x1";
163
+ case ARM_ISB_RESERVED_2: return "#0x2";
164
+ case ARM_ISB_RESERVED_3: return "#0x3";
165
+ case ARM_ISB_RESERVED_4: return "#0x4";
166
+ case ARM_ISB_RESERVED_5: return "#0x5";
167
+ case ARM_ISB_RESERVED_6: return "#0x6";
168
+ case ARM_ISB_RESERVED_7: return "#0x7";
169
+ case ARM_ISB_RESERVED_8: return "#0x8";
170
+ case ARM_ISB_RESERVED_9: return "#0x9";
171
+ case ARM_ISB_RESERVED_10: return "#0xa";
172
+ case ARM_ISB_RESERVED_11: return "#0xb";
173
+ case ARM_ISB_RESERVED_12: return "#0xc";
174
+ case ARM_ISB_RESERVED_13: return "#0xd";
175
+ case ARM_ISB_RESERVED_14: return "#0xe";
176
+ case ARM_ISB_SY: return "sy";
177
+ }
178
+ }
179
+
180
+ /// isARMLowRegister - Returns true if the register is a low register (r0-r7).
181
+ ///
182
+ static inline bool isARMLowRegister(unsigned Reg)
183
+ {
184
+ //using namespace ARM;
185
+ switch (Reg) {
186
+ case ARM_R0: case ARM_R1: case ARM_R2: case ARM_R3:
187
+ case ARM_R4: case ARM_R5: case ARM_R6: case ARM_R7:
188
+ return true;
189
+ default:
190
+ return false;
191
+ }
192
+ }
193
+
194
+ /// ARMII - This namespace holds all of the target specific flags that
195
+ /// instruction info tracks.
196
+ ///
197
+ /// ARM Index Modes
198
+ enum ARMII_IndexMode {
199
+ ARMII_IndexModeNone = 0,
200
+ ARMII_IndexModePre = 1,
201
+ ARMII_IndexModePost = 2,
202
+ ARMII_IndexModeUpd = 3
203
+ };
204
+
205
+ /// ARM Addressing Modes
206
+ typedef enum ARMII_AddrMode {
207
+ ARMII_AddrModeNone = 0,
208
+ ARMII_AddrMode1 = 1,
209
+ ARMII_AddrMode2 = 2,
210
+ ARMII_AddrMode3 = 3,
211
+ ARMII_AddrMode4 = 4,
212
+ ARMII_AddrMode5 = 5,
213
+ ARMII_AddrMode6 = 6,
214
+ ARMII_AddrModeT1_1 = 7,
215
+ ARMII_AddrModeT1_2 = 8,
216
+ ARMII_AddrModeT1_4 = 9,
217
+ ARMII_AddrModeT1_s = 10, // i8 * 4 for pc and sp relative data
218
+ ARMII_AddrModeT2_i12 = 11,
219
+ ARMII_AddrModeT2_i8 = 12,
220
+ ARMII_AddrModeT2_so = 13,
221
+ ARMII_AddrModeT2_pc = 14, // +/- i12 for pc relative data
222
+ ARMII_AddrModeT2_i8s4 = 15, // i8 * 4
223
+ ARMII_AddrMode_i12 = 16
224
+ } ARMII_AddrMode;
225
+
226
+ inline static const char *ARMII_AddrModeToString(ARMII_AddrMode addrmode)
227
+ {
228
+ switch (addrmode) {
229
+ case ARMII_AddrModeNone: return "AddrModeNone";
230
+ case ARMII_AddrMode1: return "AddrMode1";
231
+ case ARMII_AddrMode2: return "AddrMode2";
232
+ case ARMII_AddrMode3: return "AddrMode3";
233
+ case ARMII_AddrMode4: return "AddrMode4";
234
+ case ARMII_AddrMode5: return "AddrMode5";
235
+ case ARMII_AddrMode6: return "AddrMode6";
236
+ case ARMII_AddrModeT1_1: return "AddrModeT1_1";
237
+ case ARMII_AddrModeT1_2: return "AddrModeT1_2";
238
+ case ARMII_AddrModeT1_4: return "AddrModeT1_4";
239
+ case ARMII_AddrModeT1_s: return "AddrModeT1_s";
240
+ case ARMII_AddrModeT2_i12: return "AddrModeT2_i12";
241
+ case ARMII_AddrModeT2_i8: return "AddrModeT2_i8";
242
+ case ARMII_AddrModeT2_so: return "AddrModeT2_so";
243
+ case ARMII_AddrModeT2_pc: return "AddrModeT2_pc";
244
+ case ARMII_AddrModeT2_i8s4: return "AddrModeT2_i8s4";
245
+ case ARMII_AddrMode_i12: return "AddrMode_i12";
246
+ }
247
+ }
248
+
249
+ /// Target Operand Flag enum.
250
+ enum ARMII_TOF {
251
+ //===------------------------------------------------------------------===//
252
+ // ARM Specific MachineOperand flags.
253
+
254
+ ARMII_MO_NO_FLAG,
255
+
256
+ /// MO_LO16 - On a symbol operand, this represents a relocation containing
257
+ /// lower 16 bit of the address. Used only via movw instruction.
258
+ ARMII_MO_LO16,
259
+
260
+ /// MO_HI16 - On a symbol operand, this represents a relocation containing
261
+ /// higher 16 bit of the address. Used only via movt instruction.
262
+ ARMII_MO_HI16,
263
+
264
+ /// MO_LO16_NONLAZY - On a symbol operand "FOO", this represents a
265
+ /// relocation containing lower 16 bit of the non-lazy-ptr indirect symbol,
266
+ /// i.e. "FOO$non_lazy_ptr".
267
+ /// Used only via movw instruction.
268
+ ARMII_MO_LO16_NONLAZY,
269
+
270
+ /// MO_HI16_NONLAZY - On a symbol operand "FOO", this represents a
271
+ /// relocation containing lower 16 bit of the non-lazy-ptr indirect symbol,
272
+ /// i.e. "FOO$non_lazy_ptr". Used only via movt instruction.
273
+ ARMII_MO_HI16_NONLAZY,
274
+
275
+ /// MO_LO16_NONLAZY_PIC - On a symbol operand "FOO", this represents a
276
+ /// relocation containing lower 16 bit of the PC relative address of the
277
+ /// non-lazy-ptr indirect symbol, i.e. "FOO$non_lazy_ptr - LABEL".
278
+ /// Used only via movw instruction.
279
+ ARMII_MO_LO16_NONLAZY_PIC,
280
+
281
+ /// MO_HI16_NONLAZY_PIC - On a symbol operand "FOO", this represents a
282
+ /// relocation containing lower 16 bit of the PC relative address of the
283
+ /// non-lazy-ptr indirect symbol, i.e. "FOO$non_lazy_ptr - LABEL".
284
+ /// Used only via movt instruction.
285
+ ARMII_MO_HI16_NONLAZY_PIC,
286
+
287
+ /// MO_PLT - On a symbol operand, this represents an ELF PLT reference on a
288
+ /// call operand.
289
+ ARMII_MO_PLT
290
+ };
291
+
292
+ enum {
293
+ //===------------------------------------------------------------------===//
294
+ // Instruction Flags.
295
+
296
+ //===------------------------------------------------------------------===//
297
+ // This four-bit field describes the addressing mode used.
298
+ ARMII_AddrModeMask = 0x1f, // The AddrMode enums are declared in ARMBaseInfo.h
299
+
300
+ // IndexMode - Unindex, pre-indexed, or post-indexed are valid for load
301
+ // and store ops only. Generic "updating" flag is used for ld/st multiple.
302
+ // The index mode enums are declared in ARMBaseInfo.h
303
+ ARMII_IndexModeShift = 5,
304
+ ARMII_IndexModeMask = 3 << ARMII_IndexModeShift,
305
+
306
+ //===------------------------------------------------------------------===//
307
+ // Instruction encoding formats.
308
+ //
309
+ ARMII_FormShift = 7,
310
+ ARMII_FormMask = 0x3f << ARMII_FormShift,
311
+
312
+ // Pseudo instructions
313
+ ARMII_Pseudo = 0 << ARMII_FormShift,
314
+
315
+ // Multiply instructions
316
+ ARMII_MulFrm = 1 << ARMII_FormShift,
317
+
318
+ // Branch instructions
319
+ ARMII_BrFrm = 2 << ARMII_FormShift,
320
+ ARMII_BrMiscFrm = 3 << ARMII_FormShift,
321
+
322
+ // Data Processing instructions
323
+ ARMII_DPFrm = 4 << ARMII_FormShift,
324
+ ARMII_DPSoRegFrm = 5 << ARMII_FormShift,
325
+
326
+ // Load and Store
327
+ ARMII_LdFrm = 6 << ARMII_FormShift,
328
+ ARMII_StFrm = 7 << ARMII_FormShift,
329
+ ARMII_LdMiscFrm = 8 << ARMII_FormShift,
330
+ ARMII_StMiscFrm = 9 << ARMII_FormShift,
331
+ ARMII_LdStMulFrm = 10 << ARMII_FormShift,
332
+
333
+ ARMII_LdStExFrm = 11 << ARMII_FormShift,
334
+
335
+ // Miscellaneous arithmetic instructions
336
+ ARMII_ArithMiscFrm = 12 << ARMII_FormShift,
337
+ ARMII_SatFrm = 13 << ARMII_FormShift,
338
+
339
+ // Extend instructions
340
+ ARMII_ExtFrm = 14 << ARMII_FormShift,
341
+
342
+ // VFP formats
343
+ ARMII_VFPUnaryFrm = 15 << ARMII_FormShift,
344
+ ARMII_VFPBinaryFrm = 16 << ARMII_FormShift,
345
+ ARMII_VFPConv1Frm = 17 << ARMII_FormShift,
346
+ ARMII_VFPConv2Frm = 18 << ARMII_FormShift,
347
+ ARMII_VFPConv3Frm = 19 << ARMII_FormShift,
348
+ ARMII_VFPConv4Frm = 20 << ARMII_FormShift,
349
+ ARMII_VFPConv5Frm = 21 << ARMII_FormShift,
350
+ ARMII_VFPLdStFrm = 22 << ARMII_FormShift,
351
+ ARMII_VFPLdStMulFrm = 23 << ARMII_FormShift,
352
+ ARMII_VFPMiscFrm = 24 << ARMII_FormShift,
353
+
354
+ // Thumb format
355
+ ARMII_ThumbFrm = 25 << ARMII_FormShift,
356
+
357
+ // Miscelleaneous format
358
+ ARMII_MiscFrm = 26 << ARMII_FormShift,
359
+
360
+ // NEON formats
361
+ ARMII_NGetLnFrm = 27 << ARMII_FormShift,
362
+ ARMII_NSetLnFrm = 28 << ARMII_FormShift,
363
+ ARMII_NDupFrm = 29 << ARMII_FormShift,
364
+ ARMII_NLdStFrm = 30 << ARMII_FormShift,
365
+ ARMII_N1RegModImmFrm= 31 << ARMII_FormShift,
366
+ ARMII_N2RegFrm = 32 << ARMII_FormShift,
367
+ ARMII_NVCVTFrm = 33 << ARMII_FormShift,
368
+ ARMII_NVDupLnFrm = 34 << ARMII_FormShift,
369
+ ARMII_N2RegVShLFrm = 35 << ARMII_FormShift,
370
+ ARMII_N2RegVShRFrm = 36 << ARMII_FormShift,
371
+ ARMII_N3RegFrm = 37 << ARMII_FormShift,
372
+ ARMII_N3RegVShFrm = 38 << ARMII_FormShift,
373
+ ARMII_NVExtFrm = 39 << ARMII_FormShift,
374
+ ARMII_NVMulSLFrm = 40 << ARMII_FormShift,
375
+ ARMII_NVTBLFrm = 41 << ARMII_FormShift,
376
+
377
+ //===------------------------------------------------------------------===//
378
+ // Misc flags.
379
+
380
+ // UnaryDP - Indicates this is a unary data processing instruction, i.e.
381
+ // it doesn't have a Rn operand.
382
+ ARMII_UnaryDP = 1 << 13,
383
+
384
+ // Xform16Bit - Indicates this Thumb2 instruction may be transformed into
385
+ // a 16-bit Thumb instruction if certain conditions are met.
386
+ ARMII_Xform16Bit = 1 << 14,
387
+
388
+ // ThumbArithFlagSetting - The instruction is a 16-bit flag setting Thumb
389
+ // instruction. Used by the parser to determine whether to require the 'S'
390
+ // suffix on the mnemonic (when not in an IT block) or preclude it (when
391
+ // in an IT block).
392
+ ARMII_ThumbArithFlagSetting = 1 << 18,
393
+
394
+ //===------------------------------------------------------------------===//
395
+ // Code domain.
396
+ ARMII_DomainShift = 15,
397
+ ARMII_DomainMask = 7 << ARMII_DomainShift,
398
+ ARMII_DomainGeneral = 0 << ARMII_DomainShift,
399
+ ARMII_DomainVFP = 1 << ARMII_DomainShift,
400
+ ARMII_DomainNEON = 2 << ARMII_DomainShift,
401
+ ARMII_DomainNEONA8 = 4 << ARMII_DomainShift,
402
+
403
+ //===------------------------------------------------------------------===//
404
+ // Field shifts - such shifts are used to set field while generating
405
+ // machine instructions.
406
+ //
407
+ // FIXME: This list will need adjusting/fixing as the MC code emitter
408
+ // takes shape and the ARMCodeEmitter.cpp bits go away.
409
+ ARMII_ShiftTypeShift = 4,
410
+
411
+ ARMII_M_BitShift = 5,
412
+ ARMII_ShiftImmShift = 5,
413
+ ARMII_ShiftShift = 7,
414
+ ARMII_N_BitShift = 7,
415
+ ARMII_ImmHiShift = 8,
416
+ ARMII_SoRotImmShift = 8,
417
+ ARMII_RegRsShift = 8,
418
+ ARMII_ExtRotImmShift = 10,
419
+ ARMII_RegRdLoShift = 12,
420
+ ARMII_RegRdShift = 12,
421
+ ARMII_RegRdHiShift = 16,
422
+ ARMII_RegRnShift = 16,
423
+ ARMII_S_BitShift = 20,
424
+ ARMII_W_BitShift = 21,
425
+ ARMII_AM3_I_BitShift = 22,
426
+ ARMII_D_BitShift = 22,
427
+ ARMII_U_BitShift = 23,
428
+ ARMII_P_BitShift = 24,
429
+ ARMII_I_BitShift = 25,
430
+ ARMII_CondShift = 28
431
+ };
432
+
433
+ typedef struct MClassSysReg {
434
+ const char *Name;
435
+ arm_sysreg sysreg;
436
+ uint16_t M1Encoding12;
437
+ uint16_t M2M3Encoding8;
438
+ uint16_t Encoding;
439
+ int FeaturesRequired[2]; // 2 is enough for MClassSysRegsList
440
+ } MClassSysReg;
441
+
442
+ enum TraceSyncBOpt {
443
+ CSYNC = 0
444
+ };
445
+
446
+ const MClassSysReg *lookupMClassSysRegByM2M3Encoding8(uint16_t encoding);
447
+ const MClassSysReg *lookupMClassSysRegByM1Encoding12(uint16_t M1Encoding12);
448
+
449
+ // returns APSR with _<bits> qualifier.
450
+ // Note: ARMv7-M deprecates using MSR APSR without a _<bits> qualifier
451
+ static inline const MClassSysReg *lookupMClassSysRegAPSRNonDeprecated(unsigned SYSm)
452
+ {
453
+ return lookupMClassSysRegByM2M3Encoding8((1<<9) | (SYSm & 0xFF));
454
+ }
455
+
456
+ static inline const MClassSysReg *lookupMClassSysRegBy8bitSYSmValue(unsigned SYSm)
457
+ {
458
+ return lookupMClassSysRegByM2M3Encoding8((1<<8) | (SYSm & 0xFF));
459
+ }
460
+
461
+ // returns true if TestFeatures are all present in FeaturesRequired
462
+ static inline bool MClassSysReg_isInRequiredFeatures(const MClassSysReg *TheReg, int TestFeatures)
463
+ {
464
+ return (TheReg->FeaturesRequired[0] == TestFeatures || TheReg->FeaturesRequired[1] == TestFeatures);
465
+ }
466
+
467
+ // lookup system register using 12-bit SYSm value.
468
+ // Note: the search is uniqued using M1 mask
469
+ static inline const MClassSysReg *lookupMClassSysRegBy12bitSYSmValue(unsigned SYSm)
470
+ {
471
+ return lookupMClassSysRegByM1Encoding12(SYSm);
472
+ }
473
+
474
+ static inline const char *ARM_TSB_TraceSyncBOptToString(unsigned val)
475
+ {
476
+ switch (val) {
477
+ default:
478
+ // llvm_unreachable("Unknown trace synchronization barrier operation");
479
+ return NULL;
480
+
481
+ case CSYNC:
482
+ return "csync";
483
+ }
484
+ }
485
+
486
+ #endif