crabstone 3.0.3 → 4.0.4

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 +59 -42
  3. data/README.md +37 -39
  4. data/lib/{arch → crabstone/arch/3}/arm.rb +28 -49
  5. data/lib/crabstone/arch/3/arm64.rb +124 -0
  6. data/lib/{arch → crabstone/arch/3}/arm64_const.rb +45 -86
  7. data/lib/{arch → crabstone/arch/3}/arm_const.rb +19 -47
  8. data/lib/crabstone/arch/3/mips.rb +57 -0
  9. data/lib/{arch → crabstone/arch/3}/mips_const.rb +18 -38
  10. data/lib/crabstone/arch/3/ppc.rb +73 -0
  11. data/lib/{arch → crabstone/arch/3}/ppc_const.rb +27 -43
  12. data/lib/crabstone/arch/3/sparc.rb +60 -0
  13. data/lib/{arch → crabstone/arch/3}/sparc_const.rb +49 -67
  14. data/lib/crabstone/arch/3/sysz.rb +67 -0
  15. data/lib/{arch → crabstone/arch/3}/sysz_const.rb +11 -25
  16. data/lib/crabstone/arch/3/x86.rb +82 -0
  17. data/lib/{arch → crabstone/arch/3}/x86_const.rb +15 -36
  18. data/lib/crabstone/arch/3/xcore.rb +59 -0
  19. data/lib/{arch → crabstone/arch/3}/xcore_const.rb +10 -22
  20. data/lib/crabstone/arch/4/arm.rb +110 -0
  21. data/lib/crabstone/arch/4/arm64.rb +125 -0
  22. data/lib/crabstone/arch/4/arm64_const.rb +1016 -0
  23. data/lib/crabstone/arch/4/arm_const.rb +785 -0
  24. data/lib/crabstone/arch/4/evm.rb +20 -0
  25. data/lib/crabstone/arch/4/evm_const.rb +161 -0
  26. data/lib/crabstone/arch/4/m680x.rb +106 -0
  27. data/lib/crabstone/arch/4/m680x_const.rb +426 -0
  28. data/lib/crabstone/arch/4/m68k.rb +129 -0
  29. data/lib/crabstone/arch/4/m68k_const.rb +496 -0
  30. data/lib/crabstone/arch/4/mips.rb +57 -0
  31. data/lib/crabstone/arch/4/mips_const.rb +869 -0
  32. data/lib/crabstone/arch/4/ppc.rb +73 -0
  33. data/lib/crabstone/arch/4/ppc_const.rb +1375 -0
  34. data/lib/crabstone/arch/4/sparc.rb +60 -0
  35. data/lib/crabstone/arch/4/sparc_const.rb +439 -0
  36. data/lib/crabstone/arch/4/sysz.rb +67 -0
  37. data/lib/crabstone/arch/4/sysz_const.rb +763 -0
  38. data/lib/crabstone/arch/4/tms320c64x.rb +87 -0
  39. data/lib/crabstone/arch/4/tms320c64x_const.rb +287 -0
  40. data/lib/crabstone/arch/4/x86.rb +91 -0
  41. data/lib/crabstone/arch/4/x86_const.rb +1972 -0
  42. data/lib/crabstone/arch/4/xcore.rb +59 -0
  43. data/lib/crabstone/arch/4/xcore_const.rb +171 -0
  44. data/lib/crabstone/arch/extension.rb +27 -0
  45. data/lib/crabstone/arch/register.rb +34 -0
  46. data/lib/crabstone/arch.rb +37 -0
  47. data/lib/crabstone/binding/3/detail.rb +36 -0
  48. data/lib/crabstone/binding/3/instruction.rb +23 -0
  49. data/lib/crabstone/binding/4/detail.rb +40 -0
  50. data/lib/crabstone/binding/4/instruction.rb +23 -0
  51. data/lib/crabstone/binding/structs.rb +32 -0
  52. data/lib/crabstone/binding.rb +59 -0
  53. data/lib/crabstone/constants.rb +110 -0
  54. data/lib/crabstone/cs_version.rb +57 -0
  55. data/lib/crabstone/disassembler.rb +147 -0
  56. data/lib/crabstone/error.rb +74 -0
  57. data/lib/crabstone/instruction.rb +178 -0
  58. data/lib/crabstone/version.rb +5 -0
  59. data/lib/crabstone.rb +5 -557
  60. metadata +142 -331
  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
data/lib/arch/arm64.rb DELETED
@@ -1,167 +0,0 @@
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.
5
-
6
- require 'ffi'
7
-
8
- require_relative 'arm64_const'
9
-
10
- module Crabstone
11
- module ARM64
12
-
13
-
14
- class OperandShift < FFI::Struct
15
- layout(
16
- :type, :uint,
17
- :value, :uint
18
- )
19
- end
20
-
21
- class MemoryOperand < FFI::Struct
22
- layout(
23
- :base, :uint,
24
- :index, :uint,
25
- :disp, :int32
26
- )
27
- end
28
-
29
- class OperandValue < FFI::Union
30
- layout(
31
- :reg, :uint,
32
- :imm, :int64,
33
- :fp, :double,
34
- :mem, MemoryOperand,
35
- :pstate, :int,
36
- :sys, :uint,
37
- :prefetch, :int,
38
- :barrier, :int
39
- )
40
- end
41
-
42
- class Operand < FFI::Struct
43
-
44
- layout(
45
- :vector_index, :int,
46
- :vas, :int,
47
- :vess, :int,
48
- :shift, OperandShift,
49
- :ext, :uint,
50
- :type, :uint,
51
- :value, OperandValue
52
- )
53
-
54
- def value
55
- case self[:type]
56
- when *[OP_REG, OP_REG_MRS, OP_REG_MSR] # Register operand.
57
- self[:value][:reg]
58
- when *[OP_IMM, OP_CIMM] # Immediate operand.
59
- self[:value][:imm]
60
- when OP_FP # Floating-Point immediate operand.
61
- self[:value][:fp]
62
- when OP_MEM # Memory operand
63
- self[:value][:mem]
64
- when OP_PSTATE # PState operand.
65
- self[:value][:pstate]
66
- when OP_SYS # SYS operand for IC/DC/AT/TLBI instructions.
67
- self[:value][:sys]
68
- when OP_PREFETCH # Prefetch operand (PRFM).
69
- self[:value][:prefetch]
70
- when OP_BARRIER # Memory barrier operand (ISB/DMB/DSB instructions).
71
- self[:value][:barrier]
72
- else
73
- nil
74
- end
75
- end
76
-
77
- def shift_type
78
- self[:shift][:type]
79
- end
80
-
81
- def shift_value
82
- self[:shift][:value]
83
- end
84
-
85
- def shift?
86
- self[:shift][:type] != SFT_INVALID
87
- end
88
-
89
- def ext?
90
- self[:ext] != EXT_INVALID
91
- end
92
-
93
- def reg?
94
- self[:type] == OP_REG
95
- end
96
-
97
- def imm?
98
- self[:type] == OP_IMM
99
- end
100
-
101
- def cimm?
102
- self[:type] == OP_CIMM
103
- end
104
-
105
- def mem?
106
- self[:type] == OP_MEM
107
- end
108
-
109
- def fp?
110
- self[:type] == OP_FP
111
- end
112
-
113
- def pstate?
114
- self[:type] == OP_PSTATE
115
- end
116
-
117
- def msr?
118
- self[:type] == OP_REG_MSR
119
- end
120
-
121
- def mrs?
122
- self[:type] == OP_REG_MRS
123
- end
124
-
125
- def barrier?
126
- self[:type] == OP_BARRIER
127
- end
128
-
129
- def prefetch?
130
- self[:type] == OP_PREFETCH
131
- end
132
-
133
- def valid?
134
- [
135
- OP_INVALID,
136
- OP_REG,
137
- OP_CIMM,
138
- OP_IMM,
139
- OP_FP,
140
- OP_MEM,
141
- OP_REG_MRS,
142
- OP_REG_MSR,
143
- OP_PSTATE,
144
- OP_SYS,
145
- OP_PREFETCH,
146
- OP_BARRIER
147
- ].include? self[:type]
148
- end
149
-
150
- end
151
-
152
- class Instruction < FFI::Struct
153
- layout(
154
- :cc, :uint,
155
- :update_flags, :bool,
156
- :writeback, :bool,
157
- :op_count, :uint8,
158
- :operands, [Operand, 8]
159
- )
160
-
161
- def operands
162
- self[:operands].take_while {|op| op[:type].nonzero?}
163
- end
164
-
165
- end
166
- end
167
- end
@@ -1,295 +0,0 @@
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.
5
-
6
- # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
7
- # Command: ./genreg /Users/ben/src/capstone/bindings/python/capstone/
8
- # 2015-05-02T13:24:07+12:00
9
-
10
- module Crabstone
11
- module ARM64
12
- REG_LOOKUP = {
13
- 'INVALID' => 0,
14
- 'X29' => 1,
15
- 'X30' => 2,
16
- 'NZCV' => 3,
17
- 'SP' => 4,
18
- 'WSP' => 5,
19
- 'WZR' => 6,
20
- 'XZR' => 7,
21
- 'B0' => 8,
22
- 'B1' => 9,
23
- 'B2' => 10,
24
- 'B3' => 11,
25
- 'B4' => 12,
26
- 'B5' => 13,
27
- 'B6' => 14,
28
- 'B7' => 15,
29
- 'B8' => 16,
30
- 'B9' => 17,
31
- 'B10' => 18,
32
- 'B11' => 19,
33
- 'B12' => 20,
34
- 'B13' => 21,
35
- 'B14' => 22,
36
- 'B15' => 23,
37
- 'B16' => 24,
38
- 'B17' => 25,
39
- 'B18' => 26,
40
- 'B19' => 27,
41
- 'B20' => 28,
42
- 'B21' => 29,
43
- 'B22' => 30,
44
- 'B23' => 31,
45
- 'B24' => 32,
46
- 'B25' => 33,
47
- 'B26' => 34,
48
- 'B27' => 35,
49
- 'B28' => 36,
50
- 'B29' => 37,
51
- 'B30' => 38,
52
- 'B31' => 39,
53
- 'D0' => 40,
54
- 'D1' => 41,
55
- 'D2' => 42,
56
- 'D3' => 43,
57
- 'D4' => 44,
58
- 'D5' => 45,
59
- 'D6' => 46,
60
- 'D7' => 47,
61
- 'D8' => 48,
62
- 'D9' => 49,
63
- 'D10' => 50,
64
- 'D11' => 51,
65
- 'D12' => 52,
66
- 'D13' => 53,
67
- 'D14' => 54,
68
- 'D15' => 55,
69
- 'D16' => 56,
70
- 'D17' => 57,
71
- 'D18' => 58,
72
- 'D19' => 59,
73
- 'D20' => 60,
74
- 'D21' => 61,
75
- 'D22' => 62,
76
- 'D23' => 63,
77
- 'D24' => 64,
78
- 'D25' => 65,
79
- 'D26' => 66,
80
- 'D27' => 67,
81
- 'D28' => 68,
82
- 'D29' => 69,
83
- 'D30' => 70,
84
- 'D31' => 71,
85
- 'H0' => 72,
86
- 'H1' => 73,
87
- 'H2' => 74,
88
- 'H3' => 75,
89
- 'H4' => 76,
90
- 'H5' => 77,
91
- 'H6' => 78,
92
- 'H7' => 79,
93
- 'H8' => 80,
94
- 'H9' => 81,
95
- 'H10' => 82,
96
- 'H11' => 83,
97
- 'H12' => 84,
98
- 'H13' => 85,
99
- 'H14' => 86,
100
- 'H15' => 87,
101
- 'H16' => 88,
102
- 'H17' => 89,
103
- 'H18' => 90,
104
- 'H19' => 91,
105
- 'H20' => 92,
106
- 'H21' => 93,
107
- 'H22' => 94,
108
- 'H23' => 95,
109
- 'H24' => 96,
110
- 'H25' => 97,
111
- 'H26' => 98,
112
- 'H27' => 99,
113
- 'H28' => 100,
114
- 'H29' => 101,
115
- 'H30' => 102,
116
- 'H31' => 103,
117
- 'Q0' => 104,
118
- 'Q1' => 105,
119
- 'Q2' => 106,
120
- 'Q3' => 107,
121
- 'Q4' => 108,
122
- 'Q5' => 109,
123
- 'Q6' => 110,
124
- 'Q7' => 111,
125
- 'Q8' => 112,
126
- 'Q9' => 113,
127
- 'Q10' => 114,
128
- 'Q11' => 115,
129
- 'Q12' => 116,
130
- 'Q13' => 117,
131
- 'Q14' => 118,
132
- 'Q15' => 119,
133
- 'Q16' => 120,
134
- 'Q17' => 121,
135
- 'Q18' => 122,
136
- 'Q19' => 123,
137
- 'Q20' => 124,
138
- 'Q21' => 125,
139
- 'Q22' => 126,
140
- 'Q23' => 127,
141
- 'Q24' => 128,
142
- 'Q25' => 129,
143
- 'Q26' => 130,
144
- 'Q27' => 131,
145
- 'Q28' => 132,
146
- 'Q29' => 133,
147
- 'Q30' => 134,
148
- 'Q31' => 135,
149
- 'S0' => 136,
150
- 'S1' => 137,
151
- 'S2' => 138,
152
- 'S3' => 139,
153
- 'S4' => 140,
154
- 'S5' => 141,
155
- 'S6' => 142,
156
- 'S7' => 143,
157
- 'S8' => 144,
158
- 'S9' => 145,
159
- 'S10' => 146,
160
- 'S11' => 147,
161
- 'S12' => 148,
162
- 'S13' => 149,
163
- 'S14' => 150,
164
- 'S15' => 151,
165
- 'S16' => 152,
166
- 'S17' => 153,
167
- 'S18' => 154,
168
- 'S19' => 155,
169
- 'S20' => 156,
170
- 'S21' => 157,
171
- 'S22' => 158,
172
- 'S23' => 159,
173
- 'S24' => 160,
174
- 'S25' => 161,
175
- 'S26' => 162,
176
- 'S27' => 163,
177
- 'S28' => 164,
178
- 'S29' => 165,
179
- 'S30' => 166,
180
- 'S31' => 167,
181
- 'W0' => 168,
182
- 'W1' => 169,
183
- 'W2' => 170,
184
- 'W3' => 171,
185
- 'W4' => 172,
186
- 'W5' => 173,
187
- 'W6' => 174,
188
- 'W7' => 175,
189
- 'W8' => 176,
190
- 'W9' => 177,
191
- 'W10' => 178,
192
- 'W11' => 179,
193
- 'W12' => 180,
194
- 'W13' => 181,
195
- 'W14' => 182,
196
- 'W15' => 183,
197
- 'W16' => 184,
198
- 'W17' => 185,
199
- 'W18' => 186,
200
- 'W19' => 187,
201
- 'W20' => 188,
202
- 'W21' => 189,
203
- 'W22' => 190,
204
- 'W23' => 191,
205
- 'W24' => 192,
206
- 'W25' => 193,
207
- 'W26' => 194,
208
- 'W27' => 195,
209
- 'W28' => 196,
210
- 'W29' => 197,
211
- 'W30' => 198,
212
- 'X0' => 199,
213
- 'X1' => 200,
214
- 'X2' => 201,
215
- 'X3' => 202,
216
- 'X4' => 203,
217
- 'X5' => 204,
218
- 'X6' => 205,
219
- 'X7' => 206,
220
- 'X8' => 207,
221
- 'X9' => 208,
222
- 'X10' => 209,
223
- 'X11' => 210,
224
- 'X12' => 211,
225
- 'X13' => 212,
226
- 'X14' => 213,
227
- 'X15' => 214,
228
- 'X16' => 215,
229
- 'X17' => 216,
230
- 'X18' => 217,
231
- 'X19' => 218,
232
- 'X20' => 219,
233
- 'X21' => 220,
234
- 'X22' => 221,
235
- 'X23' => 222,
236
- 'X24' => 223,
237
- 'X25' => 224,
238
- 'X26' => 225,
239
- 'X27' => 226,
240
- 'X28' => 227,
241
- 'V0' => 228,
242
- 'V1' => 229,
243
- 'V2' => 230,
244
- 'V3' => 231,
245
- 'V4' => 232,
246
- 'V5' => 233,
247
- 'V6' => 234,
248
- 'V7' => 235,
249
- 'V8' => 236,
250
- 'V9' => 237,
251
- 'V10' => 238,
252
- 'V11' => 239,
253
- 'V12' => 240,
254
- 'V13' => 241,
255
- 'V14' => 242,
256
- 'V15' => 243,
257
- 'V16' => 244,
258
- 'V17' => 245,
259
- 'V18' => 246,
260
- 'V19' => 247,
261
- 'V20' => 248,
262
- 'V21' => 249,
263
- 'V22' => 250,
264
- 'V23' => 251,
265
- 'V24' => 252,
266
- 'V25' => 253,
267
- 'V26' => 254,
268
- 'V27' => 255,
269
- 'V28' => 256,
270
- 'V29' => 257,
271
- 'V30' => 258,
272
- 'V31' => 259
273
- }
274
-
275
- ID_LOOKUP = REG_LOOKUP.invert
276
-
277
- # alias registers
278
- REG_LOOKUP['IP1'] = REG_LOOKUP['X16']
279
- REG_LOOKUP['IP0'] = REG_LOOKUP['X17']
280
- REG_LOOKUP['FP'] = REG_LOOKUP['X29']
281
- REG_LOOKUP['LR'] = REG_LOOKUP['X30']
282
-
283
- SYM_LOOKUP = Hash[REG_LOOKUP.map {|k,v| [k.downcase.to_sym,v]}]
284
-
285
- def self.register reg
286
- return reg if ID_LOOKUP[reg]
287
- return SYM_LOOKUP[reg] if SYM_LOOKUP[reg]
288
- if reg.respond_to? :upcase
289
- return REG_LOOKUP[reg.upcase] || REG_LOOKUP['INVALID']
290
- end
291
- REG_LOOKUP['INVALID']
292
- end
293
-
294
- end
295
- end
@@ -1,149 +0,0 @@
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.
5
-
6
- # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
7
- # Command: ./genreg /Users/ben/src/capstone/bindings/python/capstone/
8
- # 2015-05-02T13:24:07+12:00
9
-
10
- module Crabstone
11
- module ARM
12
- REG_LOOKUP = {
13
- 'INVALID' => 0,
14
- 'APSR' => 1,
15
- 'APSR_NZCV' => 2,
16
- 'CPSR' => 3,
17
- 'FPEXC' => 4,
18
- 'FPINST' => 5,
19
- 'FPSCR' => 6,
20
- 'FPSCR_NZCV' => 7,
21
- 'FPSID' => 8,
22
- 'ITSTATE' => 9,
23
- 'LR' => 10,
24
- 'PC' => 11,
25
- 'SP' => 12,
26
- 'SPSR' => 13,
27
- 'D0' => 14,
28
- 'D1' => 15,
29
- 'D2' => 16,
30
- 'D3' => 17,
31
- 'D4' => 18,
32
- 'D5' => 19,
33
- 'D6' => 20,
34
- 'D7' => 21,
35
- 'D8' => 22,
36
- 'D9' => 23,
37
- 'D10' => 24,
38
- 'D11' => 25,
39
- 'D12' => 26,
40
- 'D13' => 27,
41
- 'D14' => 28,
42
- 'D15' => 29,
43
- 'D16' => 30,
44
- 'D17' => 31,
45
- 'D18' => 32,
46
- 'D19' => 33,
47
- 'D20' => 34,
48
- 'D21' => 35,
49
- 'D22' => 36,
50
- 'D23' => 37,
51
- 'D24' => 38,
52
- 'D25' => 39,
53
- 'D26' => 40,
54
- 'D27' => 41,
55
- 'D28' => 42,
56
- 'D29' => 43,
57
- 'D30' => 44,
58
- 'D31' => 45,
59
- 'FPINST2' => 46,
60
- 'MVFR0' => 47,
61
- 'MVFR1' => 48,
62
- 'MVFR2' => 49,
63
- 'Q0' => 50,
64
- 'Q1' => 51,
65
- 'Q2' => 52,
66
- 'Q3' => 53,
67
- 'Q4' => 54,
68
- 'Q5' => 55,
69
- 'Q6' => 56,
70
- 'Q7' => 57,
71
- 'Q8' => 58,
72
- 'Q9' => 59,
73
- 'Q10' => 60,
74
- 'Q11' => 61,
75
- 'Q12' => 62,
76
- 'Q13' => 63,
77
- 'Q14' => 64,
78
- 'Q15' => 65,
79
- 'R0' => 66,
80
- 'R1' => 67,
81
- 'R2' => 68,
82
- 'R3' => 69,
83
- 'R4' => 70,
84
- 'R5' => 71,
85
- 'R6' => 72,
86
- 'R7' => 73,
87
- 'R8' => 74,
88
- 'R9' => 75,
89
- 'R10' => 76,
90
- 'R11' => 77,
91
- 'R12' => 78,
92
- 'S0' => 79,
93
- 'S1' => 80,
94
- 'S2' => 81,
95
- 'S3' => 82,
96
- 'S4' => 83,
97
- 'S5' => 84,
98
- 'S6' => 85,
99
- 'S7' => 86,
100
- 'S8' => 87,
101
- 'S9' => 88,
102
- 'S10' => 89,
103
- 'S11' => 90,
104
- 'S12' => 91,
105
- 'S13' => 92,
106
- 'S14' => 93,
107
- 'S15' => 94,
108
- 'S16' => 95,
109
- 'S17' => 96,
110
- 'S18' => 97,
111
- 'S19' => 98,
112
- 'S20' => 99,
113
- 'S21' => 100,
114
- 'S22' => 101,
115
- 'S23' => 102,
116
- 'S24' => 103,
117
- 'S25' => 104,
118
- 'S26' => 105,
119
- 'S27' => 106,
120
- 'S28' => 107,
121
- 'S29' => 108,
122
- 'S30' => 109,
123
- 'S31' => 110
124
- }
125
-
126
- ID_LOOKUP = REG_LOOKUP.invert
127
-
128
- # alias registers
129
- REG_LOOKUP['R13'] = REG_LOOKUP['SP']
130
- REG_LOOKUP['R14'] = REG_LOOKUP['LR']
131
- REG_LOOKUP['R15'] = REG_LOOKUP['PC']
132
- REG_LOOKUP['SB'] = REG_LOOKUP['R9']
133
- REG_LOOKUP['SL'] = REG_LOOKUP['R10']
134
- REG_LOOKUP['FP'] = REG_LOOKUP['R11']
135
- REG_LOOKUP['IP'] = REG_LOOKUP['R12']
136
-
137
- SYM_LOOKUP = Hash[REG_LOOKUP.map {|k,v| [k.downcase.to_sym,v]}]
138
-
139
- def self.register reg
140
- return reg if ID_LOOKUP[reg]
141
- return SYM_LOOKUP[reg] if SYM_LOOKUP[reg]
142
- if reg.respond_to? :upcase
143
- return REG_LOOKUP[reg.upcase] || REG_LOOKUP['INVALID']
144
- end
145
- REG_LOOKUP['INVALID']
146
- end
147
-
148
- end
149
- end
data/lib/arch/mips.rb DELETED
@@ -1,78 +0,0 @@
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.
5
-
6
- require 'ffi'
7
-
8
- require_relative 'mips_const'
9
-
10
- module Crabstone
11
- module MIPS
12
-
13
- class MemoryOperand < FFI::Struct
14
- layout(
15
- :base, :uint,
16
- :disp, :int64
17
- )
18
- end
19
-
20
- class OperandValue < FFI::Union
21
- layout(
22
- :reg, :uint,
23
- :imm, :long_long,
24
- :mem, MemoryOperand
25
- )
26
- end
27
-
28
- class Operand < FFI::Struct
29
- layout(
30
- :type, :uint,
31
- :value, OperandValue
32
- )
33
-
34
- def value
35
- case self[:type]
36
- when OP_REG
37
- self[:value][:reg]
38
- when OP_IMM
39
- self[:value][:imm]
40
- when OP_MEM
41
- self[:value][:mem]
42
- when OP_FP
43
- self[:value][:fp]
44
- else
45
- nil
46
- end
47
- end
48
-
49
- def reg?
50
- self[:type] == OP_REG
51
- end
52
-
53
- def imm?
54
- self[:type] == OP_IMM
55
- end
56
-
57
- def mem?
58
- self[:type] == OP_MEM
59
- end
60
-
61
- def valid?
62
- [OP_MEM, OP_IMM, OP_REG].include? self[:type]
63
- end
64
- end
65
-
66
- class Instruction < FFI::Struct
67
- layout(
68
- :op_count, :uint8,
69
- :operands, [Operand, 8]
70
- )
71
-
72
- def operands
73
- self[:operands].take_while {|op| op[:type].nonzero?}
74
- end
75
-
76
- end
77
- end
78
- end