crabstone 3.0.3 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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