crabstone 3.0.3 → 4.0.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 (347) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES.md +45 -42
  3. data/README.md +16 -33
  4. data/lib/crabstone.rb +5 -557
  5. data/lib/crabstone/arch.rb +37 -0
  6. data/lib/{arch → crabstone/arch/3}/arm.rb +28 -49
  7. data/lib/crabstone/arch/3/arm64.rb +124 -0
  8. data/lib/{arch → crabstone/arch/3}/arm64_const.rb +45 -86
  9. data/lib/{arch → crabstone/arch/3}/arm_const.rb +19 -47
  10. data/lib/crabstone/arch/3/mips.rb +57 -0
  11. data/lib/{arch → crabstone/arch/3}/mips_const.rb +18 -38
  12. data/lib/crabstone/arch/3/ppc.rb +73 -0
  13. data/lib/{arch → crabstone/arch/3}/ppc_const.rb +27 -43
  14. data/lib/crabstone/arch/3/sparc.rb +60 -0
  15. data/lib/{arch → crabstone/arch/3}/sparc_const.rb +49 -67
  16. data/lib/crabstone/arch/3/sysz.rb +67 -0
  17. data/lib/{arch → crabstone/arch/3}/sysz_const.rb +11 -25
  18. data/lib/crabstone/arch/3/x86.rb +82 -0
  19. data/lib/{arch → crabstone/arch/3}/x86_const.rb +15 -36
  20. data/lib/crabstone/arch/3/xcore.rb +59 -0
  21. data/lib/{arch → crabstone/arch/3}/xcore_const.rb +10 -22
  22. data/lib/crabstone/arch/4/arm.rb +110 -0
  23. data/lib/crabstone/arch/4/arm64.rb +125 -0
  24. data/lib/crabstone/arch/4/arm64_const.rb +1016 -0
  25. data/lib/crabstone/arch/4/arm_const.rb +785 -0
  26. data/lib/crabstone/arch/4/evm.rb +20 -0
  27. data/lib/crabstone/arch/4/evm_const.rb +161 -0
  28. data/lib/crabstone/arch/4/m680x.rb +106 -0
  29. data/lib/crabstone/arch/4/m680x_const.rb +426 -0
  30. data/lib/crabstone/arch/4/m68k.rb +129 -0
  31. data/lib/crabstone/arch/4/m68k_const.rb +496 -0
  32. data/lib/crabstone/arch/4/mips.rb +57 -0
  33. data/lib/crabstone/arch/4/mips_const.rb +869 -0
  34. data/lib/crabstone/arch/4/ppc.rb +73 -0
  35. data/lib/crabstone/arch/4/ppc_const.rb +1375 -0
  36. data/lib/crabstone/arch/4/sparc.rb +60 -0
  37. data/lib/crabstone/arch/4/sparc_const.rb +439 -0
  38. data/lib/crabstone/arch/4/sysz.rb +67 -0
  39. data/lib/crabstone/arch/4/sysz_const.rb +763 -0
  40. data/lib/crabstone/arch/4/tms320c64x.rb +87 -0
  41. data/lib/crabstone/arch/4/tms320c64x_const.rb +287 -0
  42. data/lib/crabstone/arch/4/x86.rb +91 -0
  43. data/lib/crabstone/arch/4/x86_const.rb +1972 -0
  44. data/lib/crabstone/arch/4/xcore.rb +59 -0
  45. data/lib/crabstone/arch/4/xcore_const.rb +171 -0
  46. data/lib/crabstone/arch/extension.rb +27 -0
  47. data/lib/crabstone/arch/register.rb +36 -0
  48. data/lib/crabstone/binding.rb +60 -0
  49. data/lib/crabstone/binding/3/detail.rb +36 -0
  50. data/lib/crabstone/binding/3/instruction.rb +23 -0
  51. data/lib/crabstone/binding/4/detail.rb +40 -0
  52. data/lib/crabstone/binding/4/instruction.rb +23 -0
  53. data/lib/crabstone/binding/structs.rb +32 -0
  54. data/lib/crabstone/constants.rb +110 -0
  55. data/lib/crabstone/cs_version.rb +49 -0
  56. data/lib/crabstone/disassembler.rb +153 -0
  57. data/lib/crabstone/error.rb +60 -0
  58. data/lib/crabstone/instruction.rb +183 -0
  59. data/lib/crabstone/version.rb +5 -0
  60. metadata +128 -324
  61. data/MANIFEST +0 -312
  62. data/Rakefile +0 -27
  63. data/bin/genconst +0 -66
  64. data/bin/genreg +0 -99
  65. data/crabstone.gemspec +0 -27
  66. data/examples/hello_world.rb +0 -43
  67. data/lib/arch/arm64.rb +0 -167
  68. data/lib/arch/arm64_registers.rb +0 -295
  69. data/lib/arch/arm_registers.rb +0 -149
  70. data/lib/arch/mips.rb +0 -78
  71. data/lib/arch/mips_registers.rb +0 -208
  72. data/lib/arch/ppc.rb +0 -90
  73. data/lib/arch/ppc_registers.rb +0 -209
  74. data/lib/arch/sparc.rb +0 -79
  75. data/lib/arch/sparc_registers.rb +0 -121
  76. data/lib/arch/systemz.rb +0 -79
  77. data/lib/arch/sysz_registers.rb +0 -66
  78. data/lib/arch/x86.rb +0 -107
  79. data/lib/arch/x86_registers.rb +0 -265
  80. data/lib/arch/xcore.rb +0 -78
  81. data/lib/arch/xcore_registers.rb +0 -57
  82. data/test/MC/AArch64/basic-a64-instructions.s.cs +0 -2014
  83. data/test/MC/AArch64/gicv3-regs.s.cs +0 -111
  84. data/test/MC/AArch64/neon-2velem.s.cs +0 -113
  85. data/test/MC/AArch64/neon-3vdiff.s.cs +0 -143
  86. data/test/MC/AArch64/neon-aba-abd.s.cs +0 -28
  87. data/test/MC/AArch64/neon-across.s.cs +0 -40
  88. data/test/MC/AArch64/neon-add-pairwise.s.cs +0 -11
  89. data/test/MC/AArch64/neon-add-sub-instructions.s.cs +0 -21
  90. data/test/MC/AArch64/neon-bitwise-instructions.s.cs +0 -17
  91. data/test/MC/AArch64/neon-compare-instructions.s.cs +0 -136
  92. data/test/MC/AArch64/neon-crypto.s.cs +0 -15
  93. data/test/MC/AArch64/neon-extract.s.cs +0 -3
  94. data/test/MC/AArch64/neon-facge-facgt.s.cs +0 -13
  95. data/test/MC/AArch64/neon-frsqrt-frecp.s.cs +0 -7
  96. data/test/MC/AArch64/neon-halving-add-sub.s.cs +0 -25
  97. data/test/MC/AArch64/neon-max-min-pairwise.s.cs +0 -37
  98. data/test/MC/AArch64/neon-max-min.s.cs +0 -37
  99. data/test/MC/AArch64/neon-mla-mls-instructions.s.cs +0 -19
  100. data/test/MC/AArch64/neon-mov.s.cs +0 -74
  101. data/test/MC/AArch64/neon-mul-div-instructions.s.cs +0 -24
  102. data/test/MC/AArch64/neon-perm.s.cs +0 -43
  103. data/test/MC/AArch64/neon-rounding-halving-add.s.cs +0 -13
  104. data/test/MC/AArch64/neon-rounding-shift.s.cs +0 -15
  105. data/test/MC/AArch64/neon-saturating-add-sub.s.cs +0 -29
  106. data/test/MC/AArch64/neon-saturating-rounding-shift.s.cs +0 -15
  107. data/test/MC/AArch64/neon-saturating-shift.s.cs +0 -15
  108. data/test/MC/AArch64/neon-scalar-abs.s.cs +0 -8
  109. data/test/MC/AArch64/neon-scalar-add-sub.s.cs +0 -3
  110. data/test/MC/AArch64/neon-scalar-by-elem-mla.s.cs +0 -13
  111. data/test/MC/AArch64/neon-scalar-by-elem-mul.s.cs +0 -13
  112. data/test/MC/AArch64/neon-scalar-by-elem-saturating-mla.s.cs +0 -15
  113. data/test/MC/AArch64/neon-scalar-by-elem-saturating-mul.s.cs +0 -18
  114. data/test/MC/AArch64/neon-scalar-compare.s.cs +0 -12
  115. data/test/MC/AArch64/neon-scalar-cvt.s.cs +0 -34
  116. data/test/MC/AArch64/neon-scalar-dup.s.cs +0 -23
  117. data/test/MC/AArch64/neon-scalar-extract-narrow.s.cs +0 -10
  118. data/test/MC/AArch64/neon-scalar-fp-compare.s.cs +0 -21
  119. data/test/MC/AArch64/neon-scalar-mul.s.cs +0 -13
  120. data/test/MC/AArch64/neon-scalar-neg.s.cs +0 -6
  121. data/test/MC/AArch64/neon-scalar-recip.s.cs +0 -11
  122. data/test/MC/AArch64/neon-scalar-reduce-pairwise.s.cs +0 -3
  123. data/test/MC/AArch64/neon-scalar-rounding-shift.s.cs +0 -3
  124. data/test/MC/AArch64/neon-scalar-saturating-add-sub.s.cs +0 -25
  125. data/test/MC/AArch64/neon-scalar-saturating-rounding-shift.s.cs +0 -9
  126. data/test/MC/AArch64/neon-scalar-saturating-shift.s.cs +0 -9
  127. data/test/MC/AArch64/neon-scalar-shift-imm.s.cs +0 -42
  128. data/test/MC/AArch64/neon-scalar-shift.s.cs +0 -3
  129. data/test/MC/AArch64/neon-shift-left-long.s.cs +0 -13
  130. data/test/MC/AArch64/neon-shift.s.cs +0 -22
  131. data/test/MC/AArch64/neon-simd-copy.s.cs +0 -42
  132. data/test/MC/AArch64/neon-simd-ldst-multi-elem.s.cs +0 -197
  133. data/test/MC/AArch64/neon-simd-ldst-one-elem.s.cs +0 -129
  134. data/test/MC/AArch64/neon-simd-misc.s.cs +0 -213
  135. data/test/MC/AArch64/neon-simd-post-ldst-multi-elem.s.cs +0 -107
  136. data/test/MC/AArch64/neon-simd-shift.s.cs +0 -151
  137. data/test/MC/AArch64/neon-tbl.s.cs +0 -21
  138. data/test/MC/AArch64/trace-regs.s.cs +0 -383
  139. data/test/MC/ARM/arm-aliases.s.cs +0 -7
  140. data/test/MC/ARM/arm-arithmetic-aliases.s.cs +0 -50
  141. data/test/MC/ARM/arm-it-block.s.cs +0 -2
  142. data/test/MC/ARM/arm-memory-instructions.s.cs +0 -138
  143. data/test/MC/ARM/arm-shift-encoding.s.cs +0 -50
  144. data/test/MC/ARM/arm-thumb-trustzone.s.cs +0 -3
  145. data/test/MC/ARM/arm-trustzone.s.cs +0 -3
  146. data/test/MC/ARM/arm_addrmode2.s.cs +0 -15
  147. data/test/MC/ARM/arm_addrmode3.s.cs +0 -9
  148. data/test/MC/ARM/arm_instructions.s.cs +0 -25
  149. data/test/MC/ARM/basic-arm-instructions-v8.s.cs +0 -10
  150. data/test/MC/ARM/basic-arm-instructions.s.cs +0 -997
  151. data/test/MC/ARM/basic-thumb-instructions.s.cs +0 -130
  152. data/test/MC/ARM/basic-thumb2-instructions-v8.s.cs +0 -1
  153. data/test/MC/ARM/basic-thumb2-instructions.s.cs +0 -1242
  154. data/test/MC/ARM/crc32-thumb.s.cs +0 -7
  155. data/test/MC/ARM/crc32.s.cs +0 -7
  156. data/test/MC/ARM/dot-req.s.cs +0 -3
  157. data/test/MC/ARM/fp-armv8.s.cs +0 -52
  158. data/test/MC/ARM/idiv-thumb.s.cs +0 -3
  159. data/test/MC/ARM/idiv.s.cs +0 -3
  160. data/test/MC/ARM/load-store-acquire-release-v8-thumb.s.cs +0 -15
  161. data/test/MC/ARM/load-store-acquire-release-v8.s.cs +0 -15
  162. data/test/MC/ARM/mode-switch.s.cs +0 -7
  163. data/test/MC/ARM/neon-abs-encoding.s.cs +0 -15
  164. data/test/MC/ARM/neon-absdiff-encoding.s.cs +0 -39
  165. data/test/MC/ARM/neon-add-encoding.s.cs +0 -119
  166. data/test/MC/ARM/neon-bitcount-encoding.s.cs +0 -15
  167. data/test/MC/ARM/neon-bitwise-encoding.s.cs +0 -126
  168. data/test/MC/ARM/neon-cmp-encoding.s.cs +0 -88
  169. data/test/MC/ARM/neon-convert-encoding.s.cs +0 -27
  170. data/test/MC/ARM/neon-crypto.s.cs +0 -16
  171. data/test/MC/ARM/neon-dup-encoding.s.cs +0 -13
  172. data/test/MC/ARM/neon-minmax-encoding.s.cs +0 -57
  173. data/test/MC/ARM/neon-mov-encoding.s.cs +0 -76
  174. data/test/MC/ARM/neon-mul-accum-encoding.s.cs +0 -39
  175. data/test/MC/ARM/neon-mul-encoding.s.cs +0 -72
  176. data/test/MC/ARM/neon-neg-encoding.s.cs +0 -15
  177. data/test/MC/ARM/neon-pairwise-encoding.s.cs +0 -47
  178. data/test/MC/ARM/neon-reciprocal-encoding.s.cs +0 -13
  179. data/test/MC/ARM/neon-reverse-encoding.s.cs +0 -13
  180. data/test/MC/ARM/neon-satshift-encoding.s.cs +0 -75
  181. data/test/MC/ARM/neon-shift-encoding.s.cs +0 -238
  182. data/test/MC/ARM/neon-shiftaccum-encoding.s.cs +0 -97
  183. data/test/MC/ARM/neon-shuffle-encoding.s.cs +0 -59
  184. data/test/MC/ARM/neon-sub-encoding.s.cs +0 -82
  185. data/test/MC/ARM/neon-table-encoding.s.cs +0 -9
  186. data/test/MC/ARM/neon-v8.s.cs +0 -38
  187. data/test/MC/ARM/neon-vld-encoding.s.cs +0 -213
  188. data/test/MC/ARM/neon-vst-encoding.s.cs +0 -120
  189. data/test/MC/ARM/neon-vswp.s.cs +0 -3
  190. data/test/MC/ARM/neont2-abs-encoding.s.cs +0 -15
  191. data/test/MC/ARM/neont2-absdiff-encoding.s.cs +0 -39
  192. data/test/MC/ARM/neont2-add-encoding.s.cs +0 -65
  193. data/test/MC/ARM/neont2-bitcount-encoding.s.cs +0 -15
  194. data/test/MC/ARM/neont2-bitwise-encoding.s.cs +0 -15
  195. data/test/MC/ARM/neont2-cmp-encoding.s.cs +0 -17
  196. data/test/MC/ARM/neont2-convert-encoding.s.cs +0 -19
  197. data/test/MC/ARM/neont2-dup-encoding.s.cs +0 -19
  198. data/test/MC/ARM/neont2-minmax-encoding.s.cs +0 -57
  199. data/test/MC/ARM/neont2-mov-encoding.s.cs +0 -58
  200. data/test/MC/ARM/neont2-mul-accum-encoding.s.cs +0 -41
  201. data/test/MC/ARM/neont2-mul-encoding.s.cs +0 -31
  202. data/test/MC/ARM/neont2-neg-encoding.s.cs +0 -15
  203. data/test/MC/ARM/neont2-pairwise-encoding.s.cs +0 -43
  204. data/test/MC/ARM/neont2-reciprocal-encoding.s.cs +0 -13
  205. data/test/MC/ARM/neont2-reverse-encoding.s.cs +0 -13
  206. data/test/MC/ARM/neont2-satshift-encoding.s.cs +0 -75
  207. data/test/MC/ARM/neont2-shift-encoding.s.cs +0 -80
  208. data/test/MC/ARM/neont2-shiftaccum-encoding.s.cs +0 -97
  209. data/test/MC/ARM/neont2-shuffle-encoding.s.cs +0 -23
  210. data/test/MC/ARM/neont2-sub-encoding.s.cs +0 -23
  211. data/test/MC/ARM/neont2-table-encoding.s.cs +0 -9
  212. data/test/MC/ARM/neont2-vld-encoding.s.cs +0 -51
  213. data/test/MC/ARM/neont2-vst-encoding.s.cs +0 -48
  214. data/test/MC/ARM/simple-fp-encoding.s.cs +0 -157
  215. data/test/MC/ARM/thumb-fp-armv8.s.cs +0 -51
  216. data/test/MC/ARM/thumb-hints.s.cs +0 -12
  217. data/test/MC/ARM/thumb-neon-crypto.s.cs +0 -16
  218. data/test/MC/ARM/thumb-neon-v8.s.cs +0 -38
  219. data/test/MC/ARM/thumb-shift-encoding.s.cs +0 -19
  220. data/test/MC/ARM/thumb.s.cs +0 -19
  221. data/test/MC/ARM/thumb2-b.w-encodingT4.s.cs +0 -2
  222. data/test/MC/ARM/thumb2-branches.s.cs +0 -85
  223. data/test/MC/ARM/thumb2-mclass.s.cs +0 -41
  224. data/test/MC/ARM/thumb2-narrow-dp.ll.cs +0 -379
  225. data/test/MC/ARM/thumb2-pldw.s.cs +0 -2
  226. data/test/MC/ARM/vfp4-thumb.s.cs +0 -13
  227. data/test/MC/ARM/vfp4.s.cs +0 -13
  228. data/test/MC/ARM/vpush-vpop-thumb.s.cs +0 -9
  229. data/test/MC/ARM/vpush-vpop.s.cs +0 -9
  230. data/test/MC/Mips/hilo-addressing.s.cs +0 -4
  231. data/test/MC/Mips/micromips-alu-instructions-EB.s.cs +0 -33
  232. data/test/MC/Mips/micromips-alu-instructions.s.cs +0 -33
  233. data/test/MC/Mips/micromips-branch-instructions-EB.s.cs +0 -11
  234. data/test/MC/Mips/micromips-branch-instructions.s.cs +0 -11
  235. data/test/MC/Mips/micromips-expansions.s.cs +0 -20
  236. data/test/MC/Mips/micromips-jump-instructions-EB.s.cs +0 -5
  237. data/test/MC/Mips/micromips-jump-instructions.s.cs +0 -6
  238. data/test/MC/Mips/micromips-loadstore-instructions-EB.s.cs +0 -9
  239. data/test/MC/Mips/micromips-loadstore-instructions.s.cs +0 -9
  240. data/test/MC/Mips/micromips-loadstore-unaligned-EB.s.cs +0 -5
  241. data/test/MC/Mips/micromips-loadstore-unaligned.s.cs +0 -5
  242. data/test/MC/Mips/micromips-movcond-instructions-EB.s.cs +0 -5
  243. data/test/MC/Mips/micromips-movcond-instructions.s.cs +0 -5
  244. data/test/MC/Mips/micromips-multiply-instructions-EB.s.cs +0 -5
  245. data/test/MC/Mips/micromips-multiply-instructions.s.cs +0 -5
  246. data/test/MC/Mips/micromips-shift-instructions-EB.s.cs +0 -9
  247. data/test/MC/Mips/micromips-shift-instructions.s.cs +0 -9
  248. data/test/MC/Mips/micromips-trap-instructions-EB.s.cs +0 -13
  249. data/test/MC/Mips/micromips-trap-instructions.s.cs +0 -13
  250. data/test/MC/Mips/mips-alu-instructions.s.cs +0 -53
  251. data/test/MC/Mips/mips-control-instructions-64.s.cs +0 -33
  252. data/test/MC/Mips/mips-control-instructions.s.cs +0 -33
  253. data/test/MC/Mips/mips-coprocessor-encodings.s.cs +0 -17
  254. data/test/MC/Mips/mips-dsp-instructions.s.cs +0 -43
  255. data/test/MC/Mips/mips-expansions.s.cs +0 -20
  256. data/test/MC/Mips/mips-fpu-instructions.s.cs +0 -93
  257. data/test/MC/Mips/mips-jump-instructions.s.cs +0 -1
  258. data/test/MC/Mips/mips-memory-instructions.s.cs +0 -17
  259. data/test/MC/Mips/mips-register-names.s.cs +0 -33
  260. data/test/MC/Mips/mips64-alu-instructions.s.cs +0 -47
  261. data/test/MC/Mips/mips64-instructions.s.cs +0 -3
  262. data/test/MC/Mips/mips64-register-names.s.cs +0 -33
  263. data/test/MC/Mips/mips_directives.s.cs +0 -12
  264. data/test/MC/Mips/nabi-regs.s.cs +0 -12
  265. data/test/MC/Mips/set-at-directive.s.cs +0 -6
  266. data/test/MC/Mips/test_2r.s.cs +0 -16
  267. data/test/MC/Mips/test_2rf.s.cs +0 -33
  268. data/test/MC/Mips/test_3r.s.cs +0 -243
  269. data/test/MC/Mips/test_3rf.s.cs +0 -83
  270. data/test/MC/Mips/test_bit.s.cs +0 -49
  271. data/test/MC/Mips/test_cbranch.s.cs +0 -11
  272. data/test/MC/Mips/test_ctrlregs.s.cs +0 -33
  273. data/test/MC/Mips/test_elm.s.cs +0 -16
  274. data/test/MC/Mips/test_elm_insert.s.cs +0 -4
  275. data/test/MC/Mips/test_elm_insve.s.cs +0 -5
  276. data/test/MC/Mips/test_i10.s.cs +0 -5
  277. data/test/MC/Mips/test_i5.s.cs +0 -45
  278. data/test/MC/Mips/test_i8.s.cs +0 -11
  279. data/test/MC/Mips/test_lsa.s.cs +0 -5
  280. data/test/MC/Mips/test_mi10.s.cs +0 -24
  281. data/test/MC/Mips/test_vec.s.cs +0 -8
  282. data/test/MC/PowerPC/ppc64-encoding-bookII.s.cs +0 -25
  283. data/test/MC/PowerPC/ppc64-encoding-bookIII.s.cs +0 -35
  284. data/test/MC/PowerPC/ppc64-encoding-ext.s.cs +0 -535
  285. data/test/MC/PowerPC/ppc64-encoding-fp.s.cs +0 -110
  286. data/test/MC/PowerPC/ppc64-encoding-vmx.s.cs +0 -170
  287. data/test/MC/PowerPC/ppc64-encoding.s.cs +0 -202
  288. data/test/MC/PowerPC/ppc64-operands.s.cs +0 -32
  289. data/test/MC/README +0 -6
  290. data/test/MC/Sparc/sparc-alu-instructions.s.cs +0 -47
  291. data/test/MC/Sparc/sparc-atomic-instructions.s.cs +0 -7
  292. data/test/MC/Sparc/sparc-ctrl-instructions.s.cs +0 -11
  293. data/test/MC/Sparc/sparc-fp-instructions.s.cs +0 -59
  294. data/test/MC/Sparc/sparc-mem-instructions.s.cs +0 -25
  295. data/test/MC/Sparc/sparc-vis.s.cs +0 -2
  296. data/test/MC/Sparc/sparc64-alu-instructions.s.cs +0 -13
  297. data/test/MC/Sparc/sparc64-ctrl-instructions.s.cs +0 -102
  298. data/test/MC/Sparc/sparcv8-instructions.s.cs +0 -7
  299. data/test/MC/Sparc/sparcv9-instructions.s.cs +0 -1
  300. data/test/MC/SystemZ/insn-good-z196.s.cs +0 -589
  301. data/test/MC/SystemZ/insn-good.s.cs +0 -2265
  302. data/test/MC/SystemZ/regs-good.s.cs +0 -45
  303. data/test/MC/X86/3DNow.s.cs +0 -29
  304. data/test/MC/X86/address-size.s.cs +0 -5
  305. data/test/MC/X86/avx512-encodings.s.cs +0 -12
  306. data/test/MC/X86/intel-syntax-encoding.s.cs +0 -30
  307. data/test/MC/X86/x86-32-avx.s.cs +0 -833
  308. data/test/MC/X86/x86-32-fma3.s.cs +0 -169
  309. data/test/MC/X86/x86-32-ms-inline-asm.s.cs +0 -27
  310. data/test/MC/X86/x86_64-avx-clmul-encoding.s.cs +0 -11
  311. data/test/MC/X86/x86_64-avx-encoding.s.cs +0 -1058
  312. data/test/MC/X86/x86_64-bmi-encoding.s.cs +0 -51
  313. data/test/MC/X86/x86_64-encoding.s.cs +0 -59
  314. data/test/MC/X86/x86_64-fma3-encoding.s.cs +0 -169
  315. data/test/MC/X86/x86_64-fma4-encoding.s.cs +0 -98
  316. data/test/MC/X86/x86_64-hle-encoding.s.cs +0 -3
  317. data/test/MC/X86/x86_64-imm-widths.s.cs +0 -27
  318. data/test/MC/X86/x86_64-rand-encoding.s.cs +0 -13
  319. data/test/MC/X86/x86_64-rtm-encoding.s.cs +0 -4
  320. data/test/MC/X86/x86_64-sse4a.s.cs +0 -1
  321. data/test/MC/X86/x86_64-tbm-encoding.s.cs +0 -40
  322. data/test/MC/X86/x86_64-xop-encoding.s.cs +0 -152
  323. data/test/README +0 -6
  324. data/test/test.rb +0 -205
  325. data/test/test.rb.SPEC +0 -235
  326. data/test/test_arm.rb +0 -202
  327. data/test/test_arm.rb.SPEC +0 -275
  328. data/test/test_arm64.rb +0 -150
  329. data/test/test_arm64.rb.SPEC +0 -116
  330. data/test/test_detail.rb +0 -228
  331. data/test/test_detail.rb.SPEC +0 -322
  332. data/test/test_exhaustive.rb +0 -80
  333. data/test/test_mips.rb +0 -118
  334. data/test/test_mips.rb.SPEC +0 -91
  335. data/test/test_ppc.rb +0 -137
  336. data/test/test_ppc.rb.SPEC +0 -84
  337. data/test/test_sanity.rb +0 -83
  338. data/test/test_skipdata.rb +0 -111
  339. data/test/test_skipdata.rb.SPEC +0 -58
  340. data/test/test_sparc.rb +0 -113
  341. data/test/test_sparc.rb.SPEC +0 -116
  342. data/test/test_sysz.rb +0 -111
  343. data/test/test_sysz.rb.SPEC +0 -61
  344. data/test/test_x86.rb +0 -189
  345. data/test/test_x86.rb.SPEC +0 -579
  346. data/test/test_xcore.rb +0 -100
  347. data/test/test_xcore.rb.SPEC +0 -75
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'crabstone/constants'
4
+ require 'crabstone/cs_version'
5
+
6
+ # require all files under 'crabstone/arch/<cs_major_version>'
7
+ Dir.glob(File.join(__dir__, 'arch', Crabstone.cs_major_version.to_s, '*.rb')).each do |f|
8
+ require f
9
+ end
10
+
11
+ module Crabstone
12
+ module Arch
13
+ module_function
14
+
15
+ # @param [Integer] arch
16
+ # @return [Module]
17
+ # @example
18
+ # Arch.module_of(Crabstone::ARCH_X86)
19
+ # #=> Crabstone::X86
20
+ def module_of(arch)
21
+ case arch
22
+ when ARCH_ARM then ARM
23
+ when ARCH_ARM64 then ARM64
24
+ when ARCH_X86 then X86
25
+ when ARCH_MIPS then MIPS
26
+ when ARCH_PPC then PPC
27
+ when ARCH_SPARC then Sparc
28
+ when ARCH_SYSZ then SysZ
29
+ when ARCH_XCORE then XCore
30
+ when ARCH_M68K then M68K
31
+ when ARCH_TMS320C64X then TMS320C64X
32
+ when ARCH_M680X then M680X
33
+ when ARCH_EVM then EVM
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,15 +1,14 @@
1
- # Library by Nguyen Anh Quynh
2
- # Original binding by Nguyen Anh Quynh and Tan Sheng Di
3
- # Additional binding work by Ben Nagy
4
- # (c) 2013 COSEINC. All Rights Reserved.
1
+ # frozen_string_literal: true
2
+
3
+ # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
5
4
 
6
5
  require 'ffi'
7
6
 
7
+ require 'crabstone/arch/extension'
8
8
  require_relative 'arm_const'
9
9
 
10
10
  module Crabstone
11
11
  module ARM
12
-
13
12
  class OperandShift < FFI::Struct
14
13
  layout(
15
14
  :type, :uint,
@@ -17,7 +16,7 @@ module Crabstone
17
16
  )
18
17
  end
19
18
 
20
- class MemoryOperand < FFI::Struct
19
+ class OperandMemory < FFI::Struct
21
20
  layout(
22
21
  :base, :uint,
23
22
  :index, :uint,
@@ -29,9 +28,9 @@ module Crabstone
29
28
  class OperandValue < FFI::Union
30
29
  layout(
31
30
  :reg, :uint,
32
- :imm, :int32,
31
+ :imm, :int,
33
32
  :fp, :double,
34
- :mem, MemoryOperand,
33
+ :mem, OperandMemory,
35
34
  :setend, :int
36
35
  )
37
36
  end
@@ -45,29 +44,29 @@ module Crabstone
45
44
  :subtracted, :bool
46
45
  )
47
46
 
48
- def value
49
- case self[:type]
50
- when *[OP_REG, OP_SYSREG]
51
- self[:value][:reg]
52
- when *[OP_IMM, OP_CIMM, OP_PIMM]
53
- self[:value][:imm]
54
- when OP_MEM
55
- self[:value][:mem]
56
- when OP_FP
57
- self[:value][:fp]
58
- when OP_SETEND
59
- self[:value][:setend]
60
- else
61
- nil
62
- end
63
- end
47
+ include Crabstone::Extension::Operand
64
48
 
65
49
  def reg?
66
- [OP_REG, OP_SYSREG].include? self[:type]
50
+ [
51
+ OP_REG,
52
+ OP_SYSREG
53
+ ].include?(self[:type])
67
54
  end
68
55
 
69
56
  def imm?
70
- [OP_IMM, OP_CIMM, OP_PIMM].include? self[:type]
57
+ [
58
+ OP_IMM,
59
+ OP_CIMM,
60
+ OP_PIMM
61
+ ].include?(self[:type])
62
+ end
63
+
64
+ def mem?
65
+ self[:type] == OP_MEM
66
+ end
67
+
68
+ def fp?
69
+ self[:type] == OP_FP
71
70
  end
72
71
 
73
72
  def cimm?
@@ -78,30 +77,13 @@ module Crabstone
78
77
  self[:type] == OP_PIMM
79
78
  end
80
79
 
81
- def mem?
82
- self[:type] == OP_MEM
83
- end
84
-
85
- def fp?
86
- self[:type] == OP_FP
80
+ def setend?
81
+ self[:type] == OP_SETEND
87
82
  end
88
83
 
89
84
  def sysreg?
90
85
  self[:type] == OP_SYSREG
91
86
  end
92
-
93
- def valid?
94
- [
95
- OP_MEM,
96
- OP_IMM,
97
- OP_CIMM,
98
- OP_PIMM,
99
- OP_FP,
100
- OP_REG,
101
- OP_SYSREG,
102
- OP_SETEND
103
- ].include? self[:type]
104
- end
105
87
  end
106
88
 
107
89
  class Instruction < FFI::Struct
@@ -119,10 +101,7 @@ module Crabstone
119
101
  :operands, [Operand, 36]
120
102
  )
121
103
 
122
- def operands
123
- self[:operands].take_while {|op| op[:type].nonzero?}
124
- end
125
-
104
+ include Crabstone::Extension::Instruction
126
105
  end
127
106
  end
128
107
  end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
4
+
5
+ require 'ffi'
6
+
7
+ require 'crabstone/arch/extension'
8
+ require_relative 'arm64_const'
9
+
10
+ module Crabstone
11
+ module ARM64
12
+ class OperandShift < FFI::Struct
13
+ layout(
14
+ :type, :uint,
15
+ :value, :uint
16
+ )
17
+ end
18
+
19
+ class OperandMemory < FFI::Struct
20
+ layout(
21
+ :base, :uint,
22
+ :index, :uint,
23
+ :disp, :int
24
+ )
25
+ end
26
+
27
+ class OperandValue < FFI::Union
28
+ layout(
29
+ :reg, :uint,
30
+ :imm, :long,
31
+ :fp, :double,
32
+ :mem, OperandMemory,
33
+ :pstate, :int,
34
+ :sys, :uint,
35
+ :prefetch, :int,
36
+ :barrier, :int
37
+ )
38
+ end
39
+
40
+ class Operand < FFI::Struct
41
+ layout(
42
+ :vector_index, :int,
43
+ :vas, :int,
44
+ :vess, :int,
45
+ :shift, OperandShift,
46
+ :ext, :uint,
47
+ :type, :uint,
48
+ :value, OperandValue
49
+ )
50
+ def shift?
51
+ self[:shift][:type] != SFT_INVALID
52
+ end
53
+
54
+ def ext?
55
+ self[:ext] != EXT_INVALID
56
+ end
57
+
58
+ include Crabstone::Extension::Operand
59
+
60
+ def reg?
61
+ [
62
+ OP_REG,
63
+ OP_REG_MRS,
64
+ OP_REG_MSR
65
+ ].include?(self[:type])
66
+ end
67
+
68
+ def imm?
69
+ [
70
+ OP_IMM,
71
+ OP_CIMM
72
+ ].include?(self[:type])
73
+ end
74
+
75
+ def mem?
76
+ self[:type] == OP_MEM
77
+ end
78
+
79
+ def fp?
80
+ self[:type] == OP_FP
81
+ end
82
+
83
+ def cimm?
84
+ self[:type] == OP_CIMM
85
+ end
86
+
87
+ def reg_mrs?
88
+ self[:type] == OP_REG_MRS
89
+ end
90
+
91
+ def reg_msr?
92
+ self[:type] == OP_REG_MSR
93
+ end
94
+
95
+ def pstate?
96
+ self[:type] == OP_PSTATE
97
+ end
98
+
99
+ def sys?
100
+ self[:type] == OP_SYS
101
+ end
102
+
103
+ def prefetch?
104
+ self[:type] == OP_PREFETCH
105
+ end
106
+
107
+ def barrier?
108
+ self[:type] == OP_BARRIER
109
+ end
110
+ end
111
+
112
+ class Instruction < FFI::Struct
113
+ layout(
114
+ :cc, :uint,
115
+ :update_flags, :bool,
116
+ :writeback, :bool,
117
+ :op_count, :uint8,
118
+ :operands, [Operand, 8]
119
+ )
120
+
121
+ include Crabstone::Extension::Instruction
122
+ end
123
+ end
124
+ end
@@ -1,26 +1,18 @@
1
- # Library by Nguyen Anh Quynh
2
- # Original binding by Nguyen Anh Quynh and Tan Sheng Di
3
- # Additional binding work by Ben Nagy
4
- # (c) 2013 COSEINC. All Rights Reserved.
1
+ # frozen_string_literal: true
5
2
 
6
3
  # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
7
- # Command: ./genconst /Users/ben/src/capstone/bindings/python/capstone/
8
- # 2015-05-02T13:24:01+12:00
4
+
5
+ require 'crabstone/arch/register'
9
6
 
10
7
  module Crabstone
11
8
  module ARM64
12
-
13
- # ARM64 shift type
14
-
15
9
  SFT_INVALID = 0
16
10
  SFT_LSL = 1
17
11
  SFT_MSL = 2
18
12
  SFT_LSR = 3
19
13
  SFT_ASR = 4
20
14
  SFT_ROR = 5
21
-
22
- # ARM64 extender type
23
-
15
+
24
16
  EXT_INVALID = 0
25
17
  EXT_UXTB = 1
26
18
  EXT_UXTH = 2
@@ -30,9 +22,7 @@ module Crabstone
30
22
  EXT_SXTH = 6
31
23
  EXT_SXTW = 7
32
24
  EXT_SXTX = 8
33
-
34
- # ARM64 condition code
35
-
25
+
36
26
  CC_INVALID = 0
37
27
  CC_EQ = 1
38
28
  CC_NE = 2
@@ -50,11 +40,7 @@ module Crabstone
50
40
  CC_LE = 14
51
41
  CC_AL = 15
52
42
  CC_NV = 16
53
-
54
- # System registers
55
-
56
- # System registers for MRS
57
-
43
+
58
44
  SYSREG_INVALID = 0
59
45
  SYSREG_MDCCSR_EL0 = 0x9808
60
46
  SYSREG_DBGDTRRX_EL0 = 0x9828
@@ -148,8 +134,7 @@ module Crabstone
148
134
  SYSREG_ICH_VTR_EL2 = 0xe659
149
135
  SYSREG_ICH_EISR_EL2 = 0xe65b
150
136
  SYSREG_ICH_ELSR_EL2 = 0xe65d
151
-
152
- # System registers for MSR
137
+
153
138
  SYSREG_DBGDTRTX_EL0 = 0x9828
154
139
  SYSREG_OSLAR_EL1 = 0x8084
155
140
  SYSREG_PMSWINC_EL0 = 0xdce4
@@ -161,16 +146,12 @@ module Crabstone
161
146
  SYSREG_ICC_SGI1R_EL1 = 0xc65d
162
147
  SYSREG_ICC_ASGI1R_EL1 = 0xc65e
163
148
  SYSREG_ICC_SGI0R_EL1 = 0xc65f
164
-
165
- # System PState Field (MSR instruction)
166
-
149
+
167
150
  PSTATE_INVALID = 0
168
151
  PSTATE_SPSEL = 0x05
169
152
  PSTATE_DAIFSET = 0x1e
170
153
  PSTATE_DAIFCLR = 0x1f
171
-
172
- # Vector arrangement specifier (for FloatingPoint/Advanced SIMD insn)
173
-
154
+
174
155
  VAS_INVALID = 0
175
156
  VAS_8B = 1
176
157
  VAS_16B = 2
@@ -181,17 +162,13 @@ module Crabstone
181
162
  VAS_1D = 7
182
163
  VAS_2D = 8
183
164
  VAS_1Q = 9
184
-
185
- # Vector element size specifier
186
-
165
+
187
166
  VESS_INVALID = 0
188
167
  VESS_B = 1
189
168
  VESS_H = 2
190
169
  VESS_S = 3
191
170
  VESS_D = 4
192
-
193
- # Memory barrier operands
194
-
171
+
195
172
  BARRIER_INVALID = 0
196
173
  BARRIER_OSHLD = 0x1
197
174
  BARRIER_OSHST = 0x2
@@ -205,9 +182,7 @@ module Crabstone
205
182
  BARRIER_LD = 0xd
206
183
  BARRIER_ST = 0xe
207
184
  BARRIER_SY = 0xf
208
-
209
- # Operand type for instruction's operands
210
-
185
+
211
186
  OP_INVALID = 0
212
187
  OP_REG = 1
213
188
  OP_IMM = 2
@@ -220,9 +195,7 @@ module Crabstone
220
195
  OP_SYS = 68
221
196
  OP_PREFETCH = 69
222
197
  OP_BARRIER = 70
223
-
224
- # TLBI operations
225
-
198
+
226
199
  TLBI_INVALID = 0
227
200
  TLBI_VMALLE1IS = 1
228
201
  TLBI_VAE1IS = 2
@@ -256,8 +229,7 @@ module Crabstone
256
229
  TLBI_ALLE3 = 30
257
230
  TLBI_VAE3 = 31
258
231
  TLBI_VALE3 = 32
259
-
260
- # AT operations
232
+
261
233
  AT_S1E1R = 33
262
234
  AT_S1E1W = 34
263
235
  AT_S1E0R = 35
@@ -270,9 +242,7 @@ module Crabstone
270
242
  AT_S12E0W = 42
271
243
  AT_S1E3R = 43
272
244
  AT_S1E3W = 44
273
-
274
- # DC operations
275
-
245
+
276
246
  DC_INVALID = 0
277
247
  DC_ZVA = 1
278
248
  DC_IVAC = 2
@@ -282,38 +252,32 @@ module Crabstone
282
252
  DC_CVAU = 6
283
253
  DC_CIVAC = 7
284
254
  DC_CISW = 8
285
-
286
- # IC operations
287
-
255
+
288
256
  IC_INVALID = 0
289
257
  IC_IALLUIS = 1
290
258
  IC_IALLU = 2
291
259
  IC_IVAU = 3
292
-
293
- # Prefetch operations (PRFM)
294
-
260
+
295
261
  PRFM_INVALID = 0
296
- PRFM_PLDL1KEEP = 0x00+1
297
- PRFM_PLDL1STRM = 0x01+1
298
- PRFM_PLDL2KEEP = 0x02+1
299
- PRFM_PLDL2STRM = 0x03+1
300
- PRFM_PLDL3KEEP = 0x04+1
301
- PRFM_PLDL3STRM = 0x05+1
302
- PRFM_PLIL1KEEP = 0x08+1
303
- PRFM_PLIL1STRM = 0x09+1
304
- PRFM_PLIL2KEEP = 0x0a+1
305
- PRFM_PLIL2STRM = 0x0b+1
306
- PRFM_PLIL3KEEP = 0x0c+1
307
- PRFM_PLIL3STRM = 0x0d+1
308
- PRFM_PSTL1KEEP = 0x10+1
309
- PRFM_PSTL1STRM = 0x11+1
310
- PRFM_PSTL2KEEP = 0x12+1
311
- PRFM_PSTL2STRM = 0x13+1
312
- PRFM_PSTL3KEEP = 0x14+1
313
- PRFM_PSTL3STRM = 0x15+1
314
-
315
- # ARM64 registers
316
-
262
+ PRFM_PLDL1KEEP = 0x00 + 1
263
+ PRFM_PLDL1STRM = 0x01 + 1
264
+ PRFM_PLDL2KEEP = 0x02 + 1
265
+ PRFM_PLDL2STRM = 0x03 + 1
266
+ PRFM_PLDL3KEEP = 0x04 + 1
267
+ PRFM_PLDL3STRM = 0x05 + 1
268
+ PRFM_PLIL1KEEP = 0x08 + 1
269
+ PRFM_PLIL1STRM = 0x09 + 1
270
+ PRFM_PLIL2KEEP = 0x0a + 1
271
+ PRFM_PLIL2STRM = 0x0b + 1
272
+ PRFM_PLIL3KEEP = 0x0c + 1
273
+ PRFM_PLIL3STRM = 0x0d + 1
274
+ PRFM_PSTL1KEEP = 0x10 + 1
275
+ PRFM_PSTL1STRM = 0x11 + 1
276
+ PRFM_PSTL2KEEP = 0x12 + 1
277
+ PRFM_PSTL2STRM = 0x13 + 1
278
+ PRFM_PSTL3KEEP = 0x14 + 1
279
+ PRFM_PSTL3STRM = 0x15 + 1
280
+
317
281
  REG_INVALID = 0
318
282
  REG_X29 = 1
319
283
  REG_X30 = 2
@@ -575,15 +539,12 @@ module Crabstone
575
539
  REG_V30 = 258
576
540
  REG_V31 = 259
577
541
  REG_ENDING = 260
578
-
579
- # alias registers
580
- REG_IP1 = REG_X16
581
- REG_IP0 = REG_X17
542
+
543
+ REG_IP0 = REG_X16
544
+ REG_IP1 = REG_X17
582
545
  REG_FP = REG_X29
583
546
  REG_LR = REG_X30
584
-
585
- # ARM64 instruction
586
-
547
+
587
548
  INS_INVALID = 0
588
549
  INS_ABS = 1
589
550
  INS_ADC = 2
@@ -1037,19 +998,17 @@ module Crabstone
1037
998
  INS_AT = 450
1038
999
  INS_TLBI = 451
1039
1000
  INS_ENDING = 452
1040
-
1041
- # Group of ARM64 instructions
1042
-
1001
+
1043
1002
  GRP_INVALID = 0
1044
-
1045
- # Generic groups
1003
+
1046
1004
  GRP_JUMP = 1
1047
-
1048
- # Architecture-specific groups
1005
+
1049
1006
  GRP_CRYPTO = 128
1050
1007
  GRP_FPARMV8 = 129
1051
1008
  GRP_NEON = 130
1052
1009
  GRP_CRC = 131
1053
1010
  GRP_ENDING = 132
1011
+
1012
+ extend Register
1054
1013
  end
1055
1014
  end