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
@@ -1,58 +0,0 @@
1
- ****************
2
- Platform: X86 32 (Intel syntax) - Skip data
3
- Code: 0x8d 0x4c 0x32 0x08 0x01 0xd8 0x81 0xc6 0x34 0x12 0x00 0x00 0x00 0x91 0x92
4
- Disasm:
5
- 0x1000: lea ecx, dword ptr [edx + esi + 8]
6
- 0x1004: add eax, ebx
7
- 0x1006: add esi, 0x1234
8
- 0x100c: .byte 0x00
9
- 0x100d: xchg eax, ecx
10
- 0x100e: xchg eax, edx
11
- 0x100f:
12
-
13
- ****************
14
- Platform: Arm - Skip data
15
- Code: 0xed 0x00 0x00 0x00 0x00 0x1a 0x5a 0x0f 0x1f 0xff 0xc2 0x09 0x80 0x00 0x00 0x00 0x07 0xf7 0xeb 0x2a 0xff 0xff 0x7f 0x57 0xe3 0x01 0xff 0xff 0x7f 0x57 0xeb 0x00 0xf0 0x00 0x00 0x24 0xb2 0x4f 0x00 0x78
16
- Disasm:
17
- 0x1000: andeq r0, r0, sp, ror #1
18
- 0x1004: svceq #0x5a1a00
19
- 0x1008: stmibeq r2, {r0, r1, r2, r3, r4, r8, sb, sl, fp, ip, sp, lr, pc} ^
20
- 0x100c: andeq r0, r0, r0, lsl #1
21
- 0x1010: bhs #0xffafec34
22
- 0x1014: .byte 0xff, 0xff, 0x7f, 0x57
23
- 0x1018: .byte 0xe3, 0x01, 0xff, 0xff
24
- 0x101c: rsceq r5, fp, pc, ror r7
25
- 0x1020: strhs r0, [r0], #-0xf0
26
- 0x1024: stmdavc r0, {r1, r4, r5, r7, r8, sb, sl, fp, lr}
27
- 0x1028:
28
-
29
- ****************
30
- Platform: X86 32 (Intel syntax) - Skip data with custom mnemonic
31
- Code: 0x8d 0x4c 0x32 0x08 0x01 0xd8 0x81 0xc6 0x34 0x12 0x00 0x00 0x00 0x91 0x92
32
- Disasm:
33
- 0x1000: lea ecx, dword ptr [edx + esi + 8]
34
- 0x1004: add eax, ebx
35
- 0x1006: add esi, 0x1234
36
- 0x100c: db 0x00
37
- 0x100d: xchg eax, ecx
38
- 0x100e: xchg eax, edx
39
- 0x100f:
40
-
41
- ****************
42
- Platform: Arm - Skip data with callback
43
- Code: 0xed 0x00 0x00 0x00 0x00 0x1a 0x5a 0x0f 0x1f 0xff 0xc2 0x09 0x80 0x00 0x00 0x00 0x07 0xf7 0xeb 0x2a 0xff 0xff 0x7f 0x57 0xe3 0x01 0xff 0xff 0x7f 0x57 0xeb 0x00 0xf0 0x00 0x00 0x24 0xb2 0x4f 0x00 0x78
44
- Disasm:
45
- 0x1000: andeq r0, r0, sp, ror #1
46
- 0x1004: svceq #0x5a1a00
47
- 0x1008: stmibeq r2, {r0, r1, r2, r3, r4, r8, sb, sl, fp, ip, sp, lr, pc} ^
48
- 0x100c: andeq r0, r0, r0, lsl #1
49
- 0x1010: bhs #0xffafec34
50
- 0x1014: db 0xff, 0xff
51
- 0x1016: db 0x7f, 0x57
52
- 0x1018: db 0xe3, 0x01
53
- 0x101a: db 0xff, 0xff
54
- 0x101c: rsceq r5, fp, pc, ror r7
55
- 0x1020: strhs r0, [r0], #-0xf0
56
- 0x1024: stmdavc r0, {r1, r4, r5, r7, r8, sb, sl, fp, lr}
57
- 0x1028:
58
-
@@ -1,113 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # Library by Nguyen Anh Quynh
4
- # Original binding by Nguyen Anh Quynh and Tan Sheng Di
5
- # Additional binding work by Ben Nagy
6
- # (c) 2013 COSEINC. All Rights Reserved.
7
-
8
- require 'crabstone'
9
- require 'stringio'
10
-
11
- module TestSparc
12
-
13
- SPARC_CODE = "\x80\xa0\x40\x02\x85\xc2\x60\x08\x85\xe8\x20\x01\x81\xe8\x00\x00\x90\x10\x20\x01\xd5\xf6\x10\x16\x21\x00\x00\x0a\x86\x00\x40\x02\x01\x00\x00\x00\x12\xbf\xff\xff\x10\xbf\xff\xff\xa0\x02\x00\x09\x0d\xbf\xff\xff\xd4\x20\x60\x00\xd4\x4e\x00\x16\x2a\xc2\x80\x03"
14
- SPARCV9_CODE = "\x81\xa8\x0a\x24\x89\xa0\x10\x20\x89\xa0\x1a\x60\x89\xa0\x00\xe0"
15
-
16
- include Crabstone
17
- include Crabstone::Sparc
18
-
19
- @platforms = [
20
- Hash[
21
- 'arch' => ARCH_SPARC,
22
- 'mode' => MODE_BIG_ENDIAN,
23
- 'code' => SPARC_CODE,
24
- 'comment' => "Sparc"
25
- ],
26
- Hash[
27
- 'arch' => ARCH_SPARC,
28
- 'mode' => MODE_BIG_ENDIAN + MODE_V9,
29
- 'code' => SPARCV9_CODE,
30
- 'comment' => "SparcV9"
31
- ]
32
- ]
33
-
34
- def self.uint32 i
35
- Integer(i) & 0xffffffff
36
- end
37
-
38
- def self.print_detail cs, insn, sio
39
- if insn.op_count > 0
40
- sio.puts "\top_count: #{insn.op_count}"
41
- insn.operands.each_with_index do |op,idx|
42
- case op[:type]
43
- when OP_REG
44
- sio.puts "\t\toperands[#{idx}].type: REG = #{cs.reg_name(op.value)}"
45
- when OP_IMM
46
- sio.puts "\t\toperands[#{idx}].type: IMM = 0x#{self.uint32(op.value).to_s(16)}"
47
- when OP_MEM
48
- sio.puts "\t\toperands[#{idx}].type: MEM"
49
- if op.value[:base].nonzero?
50
- sio.puts "\t\t\toperands[#{idx}].mem.base: REG = %s" % cs.reg_name(op.value[:base])
51
- end
52
- if op.value[:index].nonzero?
53
- sio.puts "\t\t\toperands[#{idx}].mem.index: REG = %s" % cs.reg_name(op.value[:index])
54
- end
55
- if op.value[:disp].nonzero?
56
- sio.puts "\t\t\toperands[#{idx}].mem.disp: 0x%x" % (self.uint32(op.value[:disp]))
57
- end
58
- end
59
- end
60
- end
61
-
62
- if insn.cc.nonzero?
63
- sio.puts("\tCode condition: %u" % insn.cc)
64
- end
65
-
66
- if insn.hint.nonzero?
67
- sio.puts("\tHint code: %u" % insn.hint)
68
- end
69
-
70
- sio.puts
71
- end
72
-
73
- ours = StringIO.new
74
-
75
- begin
76
- cs = Disassembler.new(0,0)
77
- print "Sparc Test: Capstone v #{cs.version.join('.')} - "
78
- ensure
79
- cs.close
80
- end
81
-
82
- #Test through all modes and architectures
83
- @platforms.each do |p|
84
- ours.puts "****************"
85
- ours.puts "Platform: #{p['comment']}"
86
- ours.puts "Code:#{p['code'].bytes.map {|b| "0x%.2x" % b}.join(' ')} "
87
- ours.puts "Disasm:"
88
-
89
- cs = Disassembler.new(p['arch'], p['mode'])
90
- cs.decomposer = true
91
- cache = nil
92
-
93
- cs.disasm(p['code'], 0x1000).each {|insn|
94
- ours.puts "0x#{insn.address.to_s(16)}:\t#{insn.mnemonic}\t#{insn.op_str}"
95
- self.print_detail(cs, insn, ours)
96
- cache = insn.address + insn.size
97
- }
98
-
99
- ours.printf("0x%x:\n", cache)
100
- ours.puts
101
- cs.close
102
- end
103
-
104
- ours.rewind
105
- theirs = File.binread(__FILE__ + ".SPEC")
106
- if ours.read == theirs
107
- puts "#{__FILE__}: PASS"
108
- else
109
- ours.rewind
110
- puts ours.read
111
- puts "#{__FILE__}: FAIL"
112
- end
113
- end
@@ -1,116 +0,0 @@
1
- ****************
2
- Platform: Sparc
3
- Code:0x80 0xa0 0x40 0x02 0x85 0xc2 0x60 0x08 0x85 0xe8 0x20 0x01 0x81 0xe8 0x00 0x00 0x90 0x10 0x20 0x01 0xd5 0xf6 0x10 0x16 0x21 0x00 0x00 0x0a 0x86 0x00 0x40 0x02 0x01 0x00 0x00 0x00 0x12 0xbf 0xff 0xff 0x10 0xbf 0xff 0xff 0xa0 0x02 0x00 0x09 0x0d 0xbf 0xff 0xff 0xd4 0x20 0x60 0x00 0xd4 0x4e 0x00 0x16 0x2a 0xc2 0x80 0x03
4
- Disasm:
5
- 0x1000: cmp %g1, %g2
6
- op_count: 2
7
- operands[0].type: REG = g1
8
- operands[1].type: REG = g2
9
-
10
- 0x1004: jmpl %o1+8, %g2
11
- op_count: 2
12
- operands[0].type: MEM
13
- operands[0].mem.base: REG = o1
14
- operands[0].mem.disp: 0x8
15
- operands[1].type: REG = g2
16
-
17
- 0x1008: restore %g0, 1, %g2
18
- op_count: 3
19
- operands[0].type: REG = g0
20
- operands[1].type: IMM = 0x1
21
- operands[2].type: REG = g2
22
-
23
- 0x100c: restore
24
-
25
- 0x1010: mov 1, %o0
26
- op_count: 2
27
- operands[0].type: IMM = 0x1
28
- operands[1].type: REG = o0
29
-
30
- 0x1014: casx [%i0], %l6, %o2
31
- op_count: 3
32
- operands[0].type: MEM
33
- operands[0].mem.base: REG = i0
34
- operands[1].type: REG = l6
35
- operands[2].type: REG = o2
36
-
37
- 0x1018: sethi 0xa, %l0
38
- op_count: 2
39
- operands[0].type: IMM = 0xa
40
- operands[1].type: REG = l0
41
-
42
- 0x101c: add %g1, %g2, %g3
43
- op_count: 3
44
- operands[0].type: REG = g1
45
- operands[1].type: REG = g2
46
- operands[2].type: REG = g3
47
-
48
- 0x1020: nop
49
-
50
- 0x1024: bne 0x1020
51
- op_count: 1
52
- operands[0].type: IMM = 0x1020
53
- Code condition: 265
54
-
55
- 0x1028: ba 0x1024
56
- op_count: 1
57
- operands[0].type: IMM = 0x1024
58
-
59
- 0x102c: add %o0, %o1, %l0
60
- op_count: 3
61
- operands[0].type: REG = o0
62
- operands[1].type: REG = o1
63
- operands[2].type: REG = l0
64
-
65
- 0x1030: fbg 0x102c
66
- op_count: 1
67
- operands[0].type: IMM = 0x102c
68
- Code condition: 278
69
-
70
- 0x1034: st %o2, [%g1]
71
- op_count: 2
72
- operands[0].type: REG = o2
73
- operands[1].type: MEM
74
- operands[1].mem.base: REG = g1
75
-
76
- 0x1038: ldsb [%i0+%l6], %o2
77
- op_count: 2
78
- operands[0].type: MEM
79
- operands[0].mem.base: REG = i0
80
- operands[0].mem.index: REG = l6
81
- operands[1].type: REG = o2
82
-
83
- 0x103c: brnz,a,pn %o2, 0x1048
84
- op_count: 2
85
- operands[0].type: REG = o2
86
- operands[1].type: IMM = 0x1048
87
- Hint code: 5
88
-
89
- 0x1040:
90
-
91
- ****************
92
- Platform: SparcV9
93
- Code:0x81 0xa8 0x0a 0x24 0x89 0xa0 0x10 0x20 0x89 0xa0 0x1a 0x60 0x89 0xa0 0x00 0xe0
94
- Disasm:
95
- 0x1000: fcmps %f0, %f4
96
- op_count: 2
97
- operands[0].type: REG = f0
98
- operands[1].type: REG = f4
99
-
100
- 0x1004: fstox %f0, %f4
101
- op_count: 2
102
- operands[0].type: REG = f0
103
- operands[1].type: REG = f4
104
-
105
- 0x1008: fqtoi %f0, %f4
106
- op_count: 2
107
- operands[0].type: REG = f0
108
- operands[1].type: REG = f4
109
-
110
- 0x100c: fnegq %f0, %f4
111
- op_count: 2
112
- operands[0].type: REG = f0
113
- operands[1].type: REG = f4
114
-
115
- 0x1010:
116
-
@@ -1,111 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # Library by Nguyen Anh Quynh
4
- # Original binding by Nguyen Anh Quynh and Tan Sheng Di
5
- # Additional binding work by Ben Nagy
6
- # (c) 2013 COSEINC. All Rights Reserved.
7
-
8
- require 'crabstone'
9
- require 'stringio'
10
-
11
- module TestSysZ
12
-
13
- SYSZ_CODE = "\xed\x00\x00\x00\x00\x1a\x5a\x0f\x1f\xff\xc2\x09\x80\x00\x00\x00\x07\xf7\xeb\x2a\xff\xff\x7f\x57\xe3\x01\xff\xff\x7f\x57\xeb\x00\xf0\x00\x00\x24\xb2\x4f\x00\x78\xec\x18\x00\x00\xc1\x7f"
14
-
15
- include Crabstone
16
- include Crabstone::SysZ
17
-
18
- @platforms = [
19
- Hash[
20
- 'arch' => ARCH_SYSZ,
21
- 'mode' => MODE_BIG_ENDIAN,
22
- 'code' => SYSZ_CODE,
23
- 'comment' => "SystemZ"
24
- ]
25
- ]
26
-
27
- def self.uint32 i
28
- Integer(i) & 0xffffffff
29
- end
30
-
31
- def self.uint64 i
32
- Integer(i) & 0xffffffffffffffff
33
- end
34
-
35
- def self.print_detail cs, insn, sio
36
- if insn.op_count > 0
37
- sio.puts "\top_count: #{insn.op_count}"
38
- insn.operands.each_with_index do |op,idx|
39
- case op[:type]
40
- when OP_REG
41
- sio.puts "\t\toperands[#{idx}].type: REG = #{cs.reg_name(op.value)}"
42
- when OP_ACREG
43
- sio.puts "\t\toperands[#{idx}].type: ACREG = #{op.value}"
44
- when OP_IMM
45
- sio.puts "\t\toperands[#{idx}].type: IMM = 0x#{self.uint64(op.value).to_s(16)}"
46
- when OP_MEM
47
- sio.puts "\t\toperands[#{idx}].type: MEM"
48
- if op.value[:base].nonzero?
49
- sio.puts "\t\t\toperands[#{idx}].mem.base: REG = %s" % cs.reg_name(op.value[:base])
50
- end
51
- if op.value[:index].nonzero?
52
- sio.puts "\t\t\toperands[#{idx}].mem.index: REG = %s" % cs.reg_name(op.value[:index])
53
- end
54
- if op.value[:length].nonzero?
55
- sio.puts "\t\t\toperands[#{idx}].mem.length: REG = %s" % cs.reg_name(op.value[:length])
56
- end
57
- if op.value[:disp].nonzero?
58
- sio.puts "\t\t\toperands[#{idx}].mem.disp: 0x%x" % (self.uint32(op.value[:disp]))
59
- end
60
- end
61
- end
62
- end
63
-
64
- if insn.cc.nonzero?
65
- sio.puts("\tCode condition: %u" % insn.cc)
66
- end
67
-
68
- sio.puts
69
- end
70
-
71
- ours = StringIO.new
72
-
73
- begin
74
- cs = Disassembler.new(0,0)
75
- print "SystemZ Test: Capstone v #{cs.version.join('.')} - "
76
- ensure
77
- cs.close
78
- end
79
-
80
- #Test through all modes and architectures
81
- @platforms.each do |p|
82
- ours.puts "****************"
83
- ours.puts "Platform: #{p['comment']}"
84
- ours.puts "Code:#{p['code'].bytes.map {|b| "0x%.2x" % b}.join(' ')} "
85
- ours.puts "Disasm:"
86
-
87
- cs = Disassembler.new(p['arch'], p['mode'])
88
- cs.decomposer = true
89
- cache = nil
90
-
91
- cs.disasm(p['code'], 0x1000).each {|insn|
92
- ours.puts "0x#{insn.address.to_s(16)}:\t#{insn.mnemonic}\t#{insn.op_str}"
93
- self.print_detail(cs, insn, ours)
94
- cache = insn.address + insn.size
95
- }
96
-
97
- ours.printf("0x%x:\n", cache)
98
- ours.puts
99
- cs.close
100
- end
101
-
102
- ours.rewind
103
- theirs = File.binread(__FILE__ + ".SPEC")
104
- if ours.read == theirs
105
- puts "#{__FILE__}: PASS"
106
- else
107
- ours.rewind
108
- puts ours.read
109
- puts "#{__FILE__}: FAIL"
110
- end
111
- end
@@ -1,61 +0,0 @@
1
- ****************
2
- Platform: SystemZ
3
- Code:0xed 0x00 0x00 0x00 0x00 0x1a 0x5a 0x0f 0x1f 0xff 0xc2 0x09 0x80 0x00 0x00 0x00 0x07 0xf7 0xeb 0x2a 0xff 0xff 0x7f 0x57 0xe3 0x01 0xff 0xff 0x7f 0x57 0xeb 0x00 0xf0 0x00 0x00 0x24 0xb2 0x4f 0x00 0x78 0xec 0x18 0x00 0x00 0xc1 0x7f
4
- Disasm:
5
- 0x1000: adb %f0, 0
6
- op_count: 2
7
- operands[0].type: REG = f0
8
- operands[1].type: IMM = 0x0
9
-
10
- 0x1006: a %r0, 0xfff(%r15, %r1)
11
- op_count: 2
12
- operands[0].type: REG = 0
13
- operands[1].type: MEM
14
- operands[1].mem.base: REG = 1
15
- operands[1].mem.index: REG = 15
16
- operands[1].mem.disp: 0xfff
17
-
18
- 0x100a: afi %r0, -0x80000000
19
- op_count: 2
20
- operands[0].type: REG = 0
21
- operands[1].type: IMM = 0xffffffff80000000
22
-
23
- 0x1010: br %r7
24
- op_count: 1
25
- operands[0].type: REG = 7
26
-
27
- 0x1012: xiy 0x7ffff(%r15), 0x2a
28
- op_count: 2
29
- operands[0].type: MEM
30
- operands[0].mem.base: REG = 15
31
- operands[0].mem.disp: 0x7ffff
32
- operands[1].type: IMM = 0x2a
33
-
34
- 0x1018: xy %r0, 0x7ffff(%r1, %r15)
35
- op_count: 2
36
- operands[0].type: REG = 0
37
- operands[1].type: MEM
38
- operands[1].mem.base: REG = 15
39
- operands[1].mem.index: REG = 1
40
- operands[1].mem.disp: 0x7ffff
41
-
42
- 0x101e: stmg %r0, %r0, 0(%r15)
43
- op_count: 3
44
- operands[0].type: REG = 0
45
- operands[1].type: REG = 0
46
- operands[2].type: MEM
47
- operands[2].mem.base: REG = 15
48
-
49
- 0x1024: ear %r7, %a8
50
- op_count: 2
51
- operands[0].type: REG = 7
52
- operands[1].type: ACREG = 8
53
-
54
- 0x1028: clije %r1, 0xc1, 0x1028
55
- op_count: 3
56
- operands[0].type: REG = 1
57
- operands[1].type: IMM = 0xc1
58
- operands[2].type: IMM = 0x1028
59
-
60
- 0x102e:
61
-