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,202 +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 TestARM
12
-
13
- include Crabstone
14
- include Crabstone::ARM
15
-
16
- ARM_CODE = "\xED\xFF\xFF\xEB\x04\xe0\x2d\xe5\x00\x00\x00\x00\xe0\x83\x22\xe5\xf1\x02\x03\x0e\x00\x00\xa0\xe3\x02\x30\xc1\xe7\x00\x00\x53\xe3\x00\x02\x01\xf1\x05\x40\xd0\xe8\xf4\x80\x00\x00"
17
- ARM_CODE2 = "\xd1\xe8\x00\xf0\xf0\x24\x04\x07\x1f\x3c\xf2\xc0\x00\x00\x4f\xf0\x00\x01\x46\x6c"
18
- THUMB_CODE = "\x70\x47\xeb\x46\x83\xb0\xc9\x68\x1f\xb1\x30\xbf\xaf\xf3\x20\x84"
19
- THUMB_CODE2 = "\x4f\xf0\x00\x01\xbd\xe8\x00\x88\xd1\xe8\x00\xf0\x18\xbf\xad\xbf\xf3\xff\x0b\x0c\x86\xf3\x00\x89\x80\xf3\x00\x8c\x4f\xfa\x99\xf6\xd0\xff\xa2\x01"
20
- THUMB_MCLASS = "\xef\xf3\x02\x80"
21
- ARMV8 = "\xe0\x3b\xb2\xee\x42\x00\x01\xe1\x51\xf0\x7f\xf5"
22
-
23
- @platforms = [
24
- Hash[
25
- 'arch' => ARCH_ARM,
26
- 'mode' => MODE_ARM,
27
- 'code' => ARM_CODE,
28
- 'comment' => "ARM"
29
- ],
30
- Hash[
31
- 'arch' => ARCH_ARM,
32
- 'mode' => MODE_THUMB,
33
- 'code' => THUMB_CODE,
34
- 'comment' => "Thumb"
35
- ],
36
- Hash[
37
- 'arch' => ARCH_ARM,
38
- 'mode' => MODE_THUMB,
39
- 'code' => ARM_CODE2,
40
- 'comment' => "Thumb-mixed"
41
- ],
42
- Hash[
43
- 'arch' => ARCH_ARM,
44
- 'mode' => MODE_THUMB,
45
- 'code' => THUMB_CODE2,
46
- 'comment' => "Thumb-2 & register named with numbers",
47
- 'syntax' => :no_regname
48
- ],
49
- Hash[
50
- 'arch' => ARCH_ARM,
51
- 'mode' => MODE_THUMB + MODE_MCLASS,
52
- 'code' => THUMB_MCLASS,
53
- 'comment' => "Thumb-MClass",
54
- 'syntax' => :no_regname
55
- ],
56
- Hash[
57
- 'arch' => ARCH_ARM,
58
- 'mode' => MODE_ARM + MODE_V8,
59
- 'code' => ARMV8,
60
- 'comment' => "Arm-V8",
61
- 'syntax' => :no_regname
62
- ],
63
- ]
64
-
65
- def self.uint32 i
66
- Integer(i) & 0xffffffff
67
- end
68
-
69
- def self.uint64 i
70
- Integer(i) & ((1<<64)-1)
71
- end
72
-
73
- def self.print_detail(cs, i, sio)
74
-
75
- # Sanity checks for register equivalency (string, const or numeric literal)
76
- if i.reads_reg?( 'sp' ) || i.reads_reg?( 12 ) || i.reads_reg?( REG_SP )
77
- unless i.reads_reg?( 'sp' ) && i.reads_reg?( 12 ) && i.reads_reg?( REG_SP )
78
- fail "Error in reg read decomposition"
79
- end
80
- end
81
- if i.writes_reg?( 'lr' ) || i.writes_reg?( 10 ) || i.writes_reg?( REG_LR )
82
- unless i.writes_reg?( 'lr' ) && i.writes_reg?( 10 ) && i.writes_reg?( REG_LR )
83
- fail "Error in reg write decomposition"
84
- end
85
- end
86
-
87
- if i.op_count > 0 then
88
- sio.puts "\top_count: #{i.op_count}"
89
- i.operands.each.with_index do |op,idx|
90
-
91
- case op[:type]
92
- when OP_REG
93
- sio.puts "\t\toperands[#{idx}].type: REG = #{cs.reg_name(op[:value][:reg])}"
94
- when OP_IMM
95
- sio.puts "\t\toperands[#{idx}].type: IMM = 0x#{self.uint64(op.value).to_s(16)}"
96
- when OP_FP
97
- sio.puts "\t\toperands[#{idx}].type: FP = 0x#{self.uint32(op[:value][:fp])}"
98
- when OP_CIMM
99
- sio.puts "\t\toperands[#{idx}].type: C-IMM = #{self.uint32(op[:value][:imm])}"
100
- when OP_PIMM
101
- sio.puts "\t\toperands[#{idx}].type: P-IMM = #{self.uint32(op[:value][:imm])}"
102
- when OP_SETEND
103
- if op.value == SETEND_BE
104
- sio.puts "\t\toperands[#{idx}].type: SETEND = be"
105
- else
106
- sio.puts "\t\toperands[#{idx}].type: SETEND = le"
107
- end
108
- when OP_SYSREG
109
- sio.puts "\t\toperands[#{idx}].type: SYSREG = #{op.value}"
110
- when OP_MEM
111
- sio.puts "\t\toperands[#{idx}].type: MEM"
112
- if op[:value][:mem][:base] != 0 then
113
- sio.puts "\t\t\toperands[#{idx}].mem.base: REG = %s" % cs.reg_name(op.value[:base])
114
- end
115
- if op[:value][:mem][:index] != 0 then
116
- sio.puts "\t\t\toperands[#{idx}].mem.index: REG = %s" % cs.reg_name(op.value[:index])
117
- end
118
- if op[:value][:mem][:scale] != 1 then
119
- sio.puts "\t\t\toperands[#{idx}].mem.scale = %u" % op[:value][:mem][:scale]
120
- end
121
- if op[:value][:mem][:disp] != 0 then
122
- sio.puts "\t\t\toperands[#{idx}].mem.disp: 0x#{self.uint32(op.value[:disp]).to_s(16)}"
123
- end
124
- else
125
- # unknown type - test will fail anyway
126
- end
127
-
128
- if op[:shift][:type].nonzero? && op[:shift][:value]
129
- sio.puts "\t\t\tShift: #{op[:shift][:type]} = #{op[:shift][:value]}"
130
- end
131
-
132
- if op[:vector_index] != -1
133
- sio.puts "\t\toperands[#{idx}].vector_index = #{op[:vector_index]}"
134
- end
135
-
136
- if op[:subtracted]
137
- sio.puts "\t\tSubtracted: True\n"
138
- end
139
-
140
- end
141
- end
142
-
143
- if not [CC_AL, CC_INVALID].include? i.cc
144
- sio.puts "\tCode condition: #{i.cc}"
145
- end
146
- sio.puts "\tUpdate-flags: True" if i.update_flags
147
- sio.puts "\tWrite-back: True" if i.writeback
148
- sio.puts "\tCPSI-mode: #{i.cps_mode}" if i.cps_mode.nonzero?
149
- sio.puts "\tCPSI-flag: #{i.cps_flag}" if i.cps_flag.nonzero?
150
- sio.puts "\tVector-data: #{i.vector_data}" if i.vector_data.nonzero?
151
- sio.puts "\tVector-size: #{i.vector_size}" if i.vector_size.nonzero?
152
- sio.puts "\tUser-mode: True" if i.usermode
153
- sio.puts "\tMemory-barrier: #{i.mem_barrier}" if i.mem_barrier.nonzero?
154
-
155
- sio.puts
156
-
157
- end
158
-
159
- ours = StringIO.new
160
-
161
- begin
162
- cs = Disassembler.new(0,0)
163
- print "ARM Test: Capstone v #{cs.version.join('.')} - "
164
- ensure
165
- cs.close
166
- end
167
-
168
- #Test through all modes and architectures
169
- @platforms.each do |p|
170
- ours.puts "****************"
171
- ours.puts "Platform: #{p['comment']}"
172
- ours.puts "Code:#{p['code'].bytes.map {|b| "0x%.2x" % b}.join(' ')} "
173
- ours.puts "Disasm:"
174
- cs = Disassembler.new(p['arch'], p['mode'])
175
-
176
- if p['syntax']
177
- cs.syntax = p['syntax']
178
- end
179
-
180
- cs.decomposer = true
181
- cache = nil
182
- cs.disasm(p['code'], 0x1000).each {|insn|
183
- ours.puts "0x#{insn.address.to_s(16)}:\t#{insn.mnemonic}\t#{insn.op_str}"
184
- self.print_detail(cs, insn, ours)
185
- cache = insn.address + insn.size
186
- }
187
- ours.printf("0x%x:\n", cache)
188
- ours.puts
189
-
190
- cs.close
191
- end
192
-
193
- ours.rewind
194
- theirs = File.binread(__FILE__ + ".SPEC")
195
- if ours.read == theirs
196
- puts "#{__FILE__}: PASS"
197
- else
198
- ours.rewind
199
- puts ours.read
200
- puts "#{__FILE__}: FAIL"
201
- end
202
- end
@@ -1,275 +0,0 @@
1
- ****************
2
- Platform: ARM
3
- Code:0xed 0xff 0xff 0xeb 0x04 0xe0 0x2d 0xe5 0x00 0x00 0x00 0x00 0xe0 0x83 0x22 0xe5 0xf1 0x02 0x03 0x0e 0x00 0x00 0xa0 0xe3 0x02 0x30 0xc1 0xe7 0x00 0x00 0x53 0xe3 0x00 0x02 0x01 0xf1 0x05 0x40 0xd0 0xe8 0xf4 0x80 0x00 0x00
4
- Disasm:
5
- 0x1000: bl #0xfbc
6
- op_count: 1
7
- operands[0].type: IMM = 0xfbc
8
-
9
- 0x1004: str lr, [sp, #-4]!
10
- op_count: 2
11
- operands[0].type: REG = lr
12
- operands[1].type: MEM
13
- operands[1].mem.base: REG = sp
14
- operands[1].mem.disp: 0xfffffffc
15
- Write-back: True
16
-
17
- 0x1008: andeq r0, r0, r0
18
- op_count: 3
19
- operands[0].type: REG = r0
20
- operands[1].type: REG = r0
21
- operands[2].type: REG = r0
22
- Code condition: 1
23
-
24
- 0x100c: str r8, [r2, #-0x3e0]!
25
- op_count: 2
26
- operands[0].type: REG = r8
27
- operands[1].type: MEM
28
- operands[1].mem.base: REG = r2
29
- operands[1].mem.disp: 0xfffffc20
30
- Write-back: True
31
-
32
- 0x1010: mcreq p2, #0, r0, c3, c1, #7
33
- op_count: 6
34
- operands[0].type: P-IMM = 2
35
- operands[1].type: IMM = 0x0
36
- operands[2].type: REG = r0
37
- operands[3].type: C-IMM = 3
38
- operands[4].type: C-IMM = 1
39
- operands[5].type: IMM = 0x7
40
- Code condition: 1
41
-
42
- 0x1014: mov r0, #0
43
- op_count: 2
44
- operands[0].type: REG = r0
45
- operands[1].type: IMM = 0x0
46
-
47
- 0x1018: strb r3, [r1, r2]
48
- op_count: 2
49
- operands[0].type: REG = r3
50
- operands[1].type: MEM
51
- operands[1].mem.base: REG = r1
52
- operands[1].mem.index: REG = r2
53
-
54
- 0x101c: cmp r3, #0
55
- op_count: 2
56
- operands[0].type: REG = r3
57
- operands[1].type: IMM = 0x0
58
- Update-flags: True
59
-
60
- 0x1020: setend be
61
- op_count: 1
62
- operands[0].type: SETEND = be
63
-
64
- 0x1024: ldm r0, {r0, r2, lr} ^
65
- op_count: 4
66
- operands[0].type: REG = r0
67
- operands[1].type: REG = r0
68
- operands[2].type: REG = r2
69
- operands[3].type: REG = lr
70
- User-mode: True
71
-
72
- 0x1028: strdeq r8, sb, [r0], -r4
73
- op_count: 4
74
- operands[0].type: REG = r8
75
- operands[1].type: REG = sb
76
- operands[2].type: MEM
77
- operands[2].mem.base: REG = r0
78
- operands[3].type: REG = r4
79
- Subtracted: True
80
- Code condition: 1
81
- Write-back: True
82
-
83
- 0x102c:
84
-
85
- ****************
86
- Platform: Thumb
87
- Code:0x70 0x47 0xeb 0x46 0x83 0xb0 0xc9 0x68 0x1f 0xb1 0x30 0xbf 0xaf 0xf3 0x20 0x84
88
- Disasm:
89
- 0x1000: bx lr
90
- op_count: 1
91
- operands[0].type: REG = lr
92
-
93
- 0x1002: mov fp, sp
94
- op_count: 2
95
- operands[0].type: REG = fp
96
- operands[1].type: REG = sp
97
-
98
- 0x1004: sub sp, #0xc
99
- op_count: 2
100
- operands[0].type: REG = sp
101
- operands[1].type: IMM = 0xc
102
-
103
- 0x1006: ldr r1, [r1, #0xc]
104
- op_count: 2
105
- operands[0].type: REG = r1
106
- operands[1].type: MEM
107
- operands[1].mem.base: REG = r1
108
- operands[1].mem.disp: 0xc
109
-
110
- 0x1008: cbz r7, #0x1012
111
- op_count: 2
112
- operands[0].type: REG = r7
113
- operands[1].type: IMM = 0x1012
114
-
115
- 0x100a: wfi
116
-
117
- 0x100c: cpsie.w f
118
- CPSI-mode: 2
119
- CPSI-flag: 1
120
-
121
- 0x1010:
122
-
123
- ****************
124
- Platform: Thumb-mixed
125
- Code:0xd1 0xe8 0x00 0xf0 0xf0 0x24 0x04 0x07 0x1f 0x3c 0xf2 0xc0 0x00 0x00 0x4f 0xf0 0x00 0x01 0x46 0x6c
126
- Disasm:
127
- 0x1000: tbb [r1, r0]
128
- op_count: 1
129
- operands[0].type: MEM
130
- operands[0].mem.base: REG = r1
131
- operands[0].mem.index: REG = r0
132
-
133
- 0x1004: movs r4, #0xf0
134
- op_count: 2
135
- operands[0].type: REG = r4
136
- operands[1].type: IMM = 0xf0
137
- Update-flags: True
138
-
139
- 0x1006: lsls r4, r0, #0x1c
140
- op_count: 3
141
- operands[0].type: REG = r4
142
- operands[1].type: REG = r0
143
- operands[2].type: IMM = 0x1c
144
- Update-flags: True
145
-
146
- 0x1008: subs r4, #0x1f
147
- op_count: 2
148
- operands[0].type: REG = r4
149
- operands[1].type: IMM = 0x1f
150
- Update-flags: True
151
-
152
- 0x100a: stm r0!, {r1, r4, r5, r6, r7}
153
- op_count: 6
154
- operands[0].type: REG = r0
155
- operands[1].type: REG = r1
156
- operands[2].type: REG = r4
157
- operands[3].type: REG = r5
158
- operands[4].type: REG = r6
159
- operands[5].type: REG = r7
160
- Write-back: True
161
-
162
- 0x100c: movs r0, r0
163
- op_count: 2
164
- operands[0].type: REG = r0
165
- operands[1].type: REG = r0
166
- Update-flags: True
167
-
168
- 0x100e: mov.w r1, #0
169
- op_count: 2
170
- operands[0].type: REG = r1
171
- operands[1].type: IMM = 0x0
172
-
173
- 0x1012: ldr r6, [r0, #0x44]
174
- op_count: 2
175
- operands[0].type: REG = r6
176
- operands[1].type: MEM
177
- operands[1].mem.base: REG = r0
178
- operands[1].mem.disp: 0x44
179
-
180
- 0x1014:
181
-
182
- ****************
183
- Platform: Thumb-2 & register named with numbers
184
- Code:0x4f 0xf0 0x00 0x01 0xbd 0xe8 0x00 0x88 0xd1 0xe8 0x00 0xf0 0x18 0xbf 0xad 0xbf 0xf3 0xff 0x0b 0x0c 0x86 0xf3 0x00 0x89 0x80 0xf3 0x00 0x8c 0x4f 0xfa 0x99 0xf6 0xd0 0xff 0xa2 0x01
185
- Disasm:
186
- 0x1000: mov.w r1, #0
187
- op_count: 2
188
- operands[0].type: REG = r1
189
- operands[1].type: IMM = 0x0
190
-
191
- 0x1004: pop.w {r11, pc}
192
- op_count: 2
193
- operands[0].type: REG = r11
194
- operands[1].type: REG = pc
195
-
196
- 0x1008: tbb [r1, r0]
197
- op_count: 1
198
- operands[0].type: MEM
199
- operands[0].mem.base: REG = r1
200
- operands[0].mem.index: REG = r0
201
-
202
- 0x100c: it ne
203
- Code condition: 2
204
-
205
- 0x100e: iteet ge
206
- Code condition: 11
207
-
208
- 0x1010: vdupge.8 d16, d11[1]
209
- op_count: 2
210
- operands[0].type: REG = d16
211
- operands[1].type: REG = d11
212
- operands[1].vector_index = 1
213
- Code condition: 11
214
- Vector-size: 8
215
-
216
- 0x1014: msrlt cpsr_fc, r6
217
- op_count: 2
218
- operands[0].type: SYSREG = 144
219
- operands[1].type: REG = r6
220
- Code condition: 12
221
-
222
- 0x1018: msrlt apsr_nzcvqg, r0
223
- op_count: 2
224
- operands[0].type: SYSREG = 259
225
- operands[1].type: REG = r0
226
- Code condition: 12
227
-
228
- 0x101c: sxtbge.w r6, r9, ror #8
229
- op_count: 2
230
- operands[0].type: REG = r6
231
- operands[1].type: REG = r9
232
- Shift: 4 = 8
233
- Code condition: 11
234
-
235
- 0x1020: vaddw.u16 q8, q8, d18
236
- op_count: 3
237
- operands[0].type: REG = q8
238
- operands[1].type: REG = q8
239
- operands[2].type: REG = d18
240
- Vector-data: 10
241
-
242
- 0x1024:
243
-
244
- ****************
245
- Platform: Thumb-MClass
246
- Code:0xef 0xf3 0x02 0x80
247
- Disasm:
248
- 0x1000: mrs r0, eapsr
249
- op_count: 2
250
- operands[0].type: REG = r0
251
- operands[1].type: SYSREG = 263
252
-
253
- 0x1004:
254
-
255
- ****************
256
- Platform: Arm-V8
257
- Code:0xe0 0x3b 0xb2 0xee 0x42 0x00 0x01 0xe1 0x51 0xf0 0x7f 0xf5
258
- Disasm:
259
- 0x1000: vcvtt.f64.f16 d3, s1
260
- op_count: 2
261
- operands[0].type: REG = d3
262
- operands[1].type: REG = s1
263
- Vector-data: 17
264
-
265
- 0x1004: crc32b r0, r1, r2
266
- op_count: 3
267
- operands[0].type: REG = r0
268
- operands[1].type: REG = r1
269
- operands[2].type: REG = r2
270
-
271
- 0x1008: dmb oshld
272
- Memory-barrier: 2
273
-
274
- 0x100c:
275
-