crabstone 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (302) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES.md +61 -0
  3. data/LICENSE +25 -0
  4. data/MANIFEST +312 -0
  5. data/README.md +103 -0
  6. data/Rakefile +27 -0
  7. data/bin/genconst +66 -0
  8. data/bin/genreg +99 -0
  9. data/crabstone.gemspec +27 -0
  10. data/examples/hello_world.rb +43 -0
  11. data/lib/arch/arm.rb +128 -0
  12. data/lib/arch/arm64.rb +167 -0
  13. data/lib/arch/arm64_const.rb +1055 -0
  14. data/lib/arch/arm64_registers.rb +295 -0
  15. data/lib/arch/arm_const.rb +777 -0
  16. data/lib/arch/arm_registers.rb +149 -0
  17. data/lib/arch/mips.rb +78 -0
  18. data/lib/arch/mips_const.rb +850 -0
  19. data/lib/arch/mips_registers.rb +208 -0
  20. data/lib/arch/ppc.rb +90 -0
  21. data/lib/arch/ppc_const.rb +1181 -0
  22. data/lib/arch/ppc_registers.rb +209 -0
  23. data/lib/arch/sparc.rb +79 -0
  24. data/lib/arch/sparc_const.rb +461 -0
  25. data/lib/arch/sparc_registers.rb +121 -0
  26. data/lib/arch/systemz.rb +79 -0
  27. data/lib/arch/sysz_const.rb +779 -0
  28. data/lib/arch/sysz_registers.rb +66 -0
  29. data/lib/arch/x86.rb +107 -0
  30. data/lib/arch/x86_const.rb +1698 -0
  31. data/lib/arch/x86_registers.rb +265 -0
  32. data/lib/arch/xcore.rb +78 -0
  33. data/lib/arch/xcore_const.rb +185 -0
  34. data/lib/arch/xcore_registers.rb +57 -0
  35. data/lib/crabstone.rb +564 -0
  36. data/test/MC/AArch64/basic-a64-instructions.s.cs +2014 -0
  37. data/test/MC/AArch64/gicv3-regs.s.cs +111 -0
  38. data/test/MC/AArch64/neon-2velem.s.cs +113 -0
  39. data/test/MC/AArch64/neon-3vdiff.s.cs +143 -0
  40. data/test/MC/AArch64/neon-aba-abd.s.cs +28 -0
  41. data/test/MC/AArch64/neon-across.s.cs +40 -0
  42. data/test/MC/AArch64/neon-add-pairwise.s.cs +11 -0
  43. data/test/MC/AArch64/neon-add-sub-instructions.s.cs +21 -0
  44. data/test/MC/AArch64/neon-bitwise-instructions.s.cs +17 -0
  45. data/test/MC/AArch64/neon-compare-instructions.s.cs +136 -0
  46. data/test/MC/AArch64/neon-crypto.s.cs +15 -0
  47. data/test/MC/AArch64/neon-extract.s.cs +3 -0
  48. data/test/MC/AArch64/neon-facge-facgt.s.cs +13 -0
  49. data/test/MC/AArch64/neon-frsqrt-frecp.s.cs +7 -0
  50. data/test/MC/AArch64/neon-halving-add-sub.s.cs +25 -0
  51. data/test/MC/AArch64/neon-max-min-pairwise.s.cs +37 -0
  52. data/test/MC/AArch64/neon-max-min.s.cs +37 -0
  53. data/test/MC/AArch64/neon-mla-mls-instructions.s.cs +19 -0
  54. data/test/MC/AArch64/neon-mov.s.cs +74 -0
  55. data/test/MC/AArch64/neon-mul-div-instructions.s.cs +24 -0
  56. data/test/MC/AArch64/neon-perm.s.cs +43 -0
  57. data/test/MC/AArch64/neon-rounding-halving-add.s.cs +13 -0
  58. data/test/MC/AArch64/neon-rounding-shift.s.cs +15 -0
  59. data/test/MC/AArch64/neon-saturating-add-sub.s.cs +29 -0
  60. data/test/MC/AArch64/neon-saturating-rounding-shift.s.cs +15 -0
  61. data/test/MC/AArch64/neon-saturating-shift.s.cs +15 -0
  62. data/test/MC/AArch64/neon-scalar-abs.s.cs +8 -0
  63. data/test/MC/AArch64/neon-scalar-add-sub.s.cs +3 -0
  64. data/test/MC/AArch64/neon-scalar-by-elem-mla.s.cs +13 -0
  65. data/test/MC/AArch64/neon-scalar-by-elem-mul.s.cs +13 -0
  66. data/test/MC/AArch64/neon-scalar-by-elem-saturating-mla.s.cs +15 -0
  67. data/test/MC/AArch64/neon-scalar-by-elem-saturating-mul.s.cs +18 -0
  68. data/test/MC/AArch64/neon-scalar-compare.s.cs +12 -0
  69. data/test/MC/AArch64/neon-scalar-cvt.s.cs +34 -0
  70. data/test/MC/AArch64/neon-scalar-dup.s.cs +23 -0
  71. data/test/MC/AArch64/neon-scalar-extract-narrow.s.cs +10 -0
  72. data/test/MC/AArch64/neon-scalar-fp-compare.s.cs +21 -0
  73. data/test/MC/AArch64/neon-scalar-mul.s.cs +13 -0
  74. data/test/MC/AArch64/neon-scalar-neg.s.cs +6 -0
  75. data/test/MC/AArch64/neon-scalar-recip.s.cs +11 -0
  76. data/test/MC/AArch64/neon-scalar-reduce-pairwise.s.cs +3 -0
  77. data/test/MC/AArch64/neon-scalar-rounding-shift.s.cs +3 -0
  78. data/test/MC/AArch64/neon-scalar-saturating-add-sub.s.cs +25 -0
  79. data/test/MC/AArch64/neon-scalar-saturating-rounding-shift.s.cs +9 -0
  80. data/test/MC/AArch64/neon-scalar-saturating-shift.s.cs +9 -0
  81. data/test/MC/AArch64/neon-scalar-shift-imm.s.cs +42 -0
  82. data/test/MC/AArch64/neon-scalar-shift.s.cs +3 -0
  83. data/test/MC/AArch64/neon-shift-left-long.s.cs +13 -0
  84. data/test/MC/AArch64/neon-shift.s.cs +22 -0
  85. data/test/MC/AArch64/neon-simd-copy.s.cs +42 -0
  86. data/test/MC/AArch64/neon-simd-ldst-multi-elem.s.cs +197 -0
  87. data/test/MC/AArch64/neon-simd-ldst-one-elem.s.cs +129 -0
  88. data/test/MC/AArch64/neon-simd-misc.s.cs +213 -0
  89. data/test/MC/AArch64/neon-simd-post-ldst-multi-elem.s.cs +107 -0
  90. data/test/MC/AArch64/neon-simd-shift.s.cs +151 -0
  91. data/test/MC/AArch64/neon-tbl.s.cs +21 -0
  92. data/test/MC/AArch64/trace-regs.s.cs +383 -0
  93. data/test/MC/ARM/arm-aliases.s.cs +7 -0
  94. data/test/MC/ARM/arm-arithmetic-aliases.s.cs +50 -0
  95. data/test/MC/ARM/arm-it-block.s.cs +2 -0
  96. data/test/MC/ARM/arm-memory-instructions.s.cs +138 -0
  97. data/test/MC/ARM/arm-shift-encoding.s.cs +50 -0
  98. data/test/MC/ARM/arm-thumb-trustzone.s.cs +3 -0
  99. data/test/MC/ARM/arm-trustzone.s.cs +3 -0
  100. data/test/MC/ARM/arm_addrmode2.s.cs +15 -0
  101. data/test/MC/ARM/arm_addrmode3.s.cs +9 -0
  102. data/test/MC/ARM/arm_instructions.s.cs +25 -0
  103. data/test/MC/ARM/basic-arm-instructions-v8.s.cs +10 -0
  104. data/test/MC/ARM/basic-arm-instructions.s.cs +997 -0
  105. data/test/MC/ARM/basic-thumb-instructions.s.cs +130 -0
  106. data/test/MC/ARM/basic-thumb2-instructions-v8.s.cs +1 -0
  107. data/test/MC/ARM/basic-thumb2-instructions.s.cs +1242 -0
  108. data/test/MC/ARM/crc32-thumb.s.cs +7 -0
  109. data/test/MC/ARM/crc32.s.cs +7 -0
  110. data/test/MC/ARM/dot-req.s.cs +3 -0
  111. data/test/MC/ARM/fp-armv8.s.cs +52 -0
  112. data/test/MC/ARM/idiv-thumb.s.cs +3 -0
  113. data/test/MC/ARM/idiv.s.cs +3 -0
  114. data/test/MC/ARM/load-store-acquire-release-v8-thumb.s.cs +15 -0
  115. data/test/MC/ARM/load-store-acquire-release-v8.s.cs +15 -0
  116. data/test/MC/ARM/mode-switch.s.cs +7 -0
  117. data/test/MC/ARM/neon-abs-encoding.s.cs +15 -0
  118. data/test/MC/ARM/neon-absdiff-encoding.s.cs +39 -0
  119. data/test/MC/ARM/neon-add-encoding.s.cs +119 -0
  120. data/test/MC/ARM/neon-bitcount-encoding.s.cs +15 -0
  121. data/test/MC/ARM/neon-bitwise-encoding.s.cs +126 -0
  122. data/test/MC/ARM/neon-cmp-encoding.s.cs +88 -0
  123. data/test/MC/ARM/neon-convert-encoding.s.cs +27 -0
  124. data/test/MC/ARM/neon-crypto.s.cs +16 -0
  125. data/test/MC/ARM/neon-dup-encoding.s.cs +13 -0
  126. data/test/MC/ARM/neon-minmax-encoding.s.cs +57 -0
  127. data/test/MC/ARM/neon-mov-encoding.s.cs +76 -0
  128. data/test/MC/ARM/neon-mul-accum-encoding.s.cs +39 -0
  129. data/test/MC/ARM/neon-mul-encoding.s.cs +72 -0
  130. data/test/MC/ARM/neon-neg-encoding.s.cs +15 -0
  131. data/test/MC/ARM/neon-pairwise-encoding.s.cs +47 -0
  132. data/test/MC/ARM/neon-reciprocal-encoding.s.cs +13 -0
  133. data/test/MC/ARM/neon-reverse-encoding.s.cs +13 -0
  134. data/test/MC/ARM/neon-satshift-encoding.s.cs +75 -0
  135. data/test/MC/ARM/neon-shift-encoding.s.cs +238 -0
  136. data/test/MC/ARM/neon-shiftaccum-encoding.s.cs +97 -0
  137. data/test/MC/ARM/neon-shuffle-encoding.s.cs +59 -0
  138. data/test/MC/ARM/neon-sub-encoding.s.cs +82 -0
  139. data/test/MC/ARM/neon-table-encoding.s.cs +9 -0
  140. data/test/MC/ARM/neon-v8.s.cs +38 -0
  141. data/test/MC/ARM/neon-vld-encoding.s.cs +213 -0
  142. data/test/MC/ARM/neon-vst-encoding.s.cs +120 -0
  143. data/test/MC/ARM/neon-vswp.s.cs +3 -0
  144. data/test/MC/ARM/neont2-abs-encoding.s.cs +15 -0
  145. data/test/MC/ARM/neont2-absdiff-encoding.s.cs +39 -0
  146. data/test/MC/ARM/neont2-add-encoding.s.cs +65 -0
  147. data/test/MC/ARM/neont2-bitcount-encoding.s.cs +15 -0
  148. data/test/MC/ARM/neont2-bitwise-encoding.s.cs +15 -0
  149. data/test/MC/ARM/neont2-cmp-encoding.s.cs +17 -0
  150. data/test/MC/ARM/neont2-convert-encoding.s.cs +19 -0
  151. data/test/MC/ARM/neont2-dup-encoding.s.cs +19 -0
  152. data/test/MC/ARM/neont2-minmax-encoding.s.cs +57 -0
  153. data/test/MC/ARM/neont2-mov-encoding.s.cs +58 -0
  154. data/test/MC/ARM/neont2-mul-accum-encoding.s.cs +41 -0
  155. data/test/MC/ARM/neont2-mul-encoding.s.cs +31 -0
  156. data/test/MC/ARM/neont2-neg-encoding.s.cs +15 -0
  157. data/test/MC/ARM/neont2-pairwise-encoding.s.cs +43 -0
  158. data/test/MC/ARM/neont2-reciprocal-encoding.s.cs +13 -0
  159. data/test/MC/ARM/neont2-reverse-encoding.s.cs +13 -0
  160. data/test/MC/ARM/neont2-satshift-encoding.s.cs +75 -0
  161. data/test/MC/ARM/neont2-shift-encoding.s.cs +80 -0
  162. data/test/MC/ARM/neont2-shiftaccum-encoding.s.cs +97 -0
  163. data/test/MC/ARM/neont2-shuffle-encoding.s.cs +23 -0
  164. data/test/MC/ARM/neont2-sub-encoding.s.cs +23 -0
  165. data/test/MC/ARM/neont2-table-encoding.s.cs +9 -0
  166. data/test/MC/ARM/neont2-vld-encoding.s.cs +51 -0
  167. data/test/MC/ARM/neont2-vst-encoding.s.cs +48 -0
  168. data/test/MC/ARM/simple-fp-encoding.s.cs +157 -0
  169. data/test/MC/ARM/thumb-fp-armv8.s.cs +51 -0
  170. data/test/MC/ARM/thumb-hints.s.cs +12 -0
  171. data/test/MC/ARM/thumb-neon-crypto.s.cs +16 -0
  172. data/test/MC/ARM/thumb-neon-v8.s.cs +38 -0
  173. data/test/MC/ARM/thumb-shift-encoding.s.cs +19 -0
  174. data/test/MC/ARM/thumb.s.cs +19 -0
  175. data/test/MC/ARM/thumb2-b.w-encodingT4.s.cs +2 -0
  176. data/test/MC/ARM/thumb2-branches.s.cs +85 -0
  177. data/test/MC/ARM/thumb2-mclass.s.cs +41 -0
  178. data/test/MC/ARM/thumb2-narrow-dp.ll.cs +379 -0
  179. data/test/MC/ARM/thumb2-pldw.s.cs +2 -0
  180. data/test/MC/ARM/vfp4-thumb.s.cs +13 -0
  181. data/test/MC/ARM/vfp4.s.cs +13 -0
  182. data/test/MC/ARM/vpush-vpop-thumb.s.cs +9 -0
  183. data/test/MC/ARM/vpush-vpop.s.cs +9 -0
  184. data/test/MC/Mips/hilo-addressing.s.cs +4 -0
  185. data/test/MC/Mips/micromips-alu-instructions-EB.s.cs +33 -0
  186. data/test/MC/Mips/micromips-alu-instructions.s.cs +33 -0
  187. data/test/MC/Mips/micromips-branch-instructions-EB.s.cs +11 -0
  188. data/test/MC/Mips/micromips-branch-instructions.s.cs +11 -0
  189. data/test/MC/Mips/micromips-expansions.s.cs +20 -0
  190. data/test/MC/Mips/micromips-jump-instructions-EB.s.cs +5 -0
  191. data/test/MC/Mips/micromips-jump-instructions.s.cs +6 -0
  192. data/test/MC/Mips/micromips-loadstore-instructions-EB.s.cs +9 -0
  193. data/test/MC/Mips/micromips-loadstore-instructions.s.cs +9 -0
  194. data/test/MC/Mips/micromips-loadstore-unaligned-EB.s.cs +5 -0
  195. data/test/MC/Mips/micromips-loadstore-unaligned.s.cs +5 -0
  196. data/test/MC/Mips/micromips-movcond-instructions-EB.s.cs +5 -0
  197. data/test/MC/Mips/micromips-movcond-instructions.s.cs +5 -0
  198. data/test/MC/Mips/micromips-multiply-instructions-EB.s.cs +5 -0
  199. data/test/MC/Mips/micromips-multiply-instructions.s.cs +5 -0
  200. data/test/MC/Mips/micromips-shift-instructions-EB.s.cs +9 -0
  201. data/test/MC/Mips/micromips-shift-instructions.s.cs +9 -0
  202. data/test/MC/Mips/micromips-trap-instructions-EB.s.cs +13 -0
  203. data/test/MC/Mips/micromips-trap-instructions.s.cs +13 -0
  204. data/test/MC/Mips/mips-alu-instructions.s.cs +53 -0
  205. data/test/MC/Mips/mips-control-instructions-64.s.cs +33 -0
  206. data/test/MC/Mips/mips-control-instructions.s.cs +33 -0
  207. data/test/MC/Mips/mips-coprocessor-encodings.s.cs +17 -0
  208. data/test/MC/Mips/mips-dsp-instructions.s.cs +43 -0
  209. data/test/MC/Mips/mips-expansions.s.cs +20 -0
  210. data/test/MC/Mips/mips-fpu-instructions.s.cs +93 -0
  211. data/test/MC/Mips/mips-jump-instructions.s.cs +1 -0
  212. data/test/MC/Mips/mips-memory-instructions.s.cs +17 -0
  213. data/test/MC/Mips/mips-register-names.s.cs +33 -0
  214. data/test/MC/Mips/mips64-alu-instructions.s.cs +47 -0
  215. data/test/MC/Mips/mips64-instructions.s.cs +3 -0
  216. data/test/MC/Mips/mips64-register-names.s.cs +33 -0
  217. data/test/MC/Mips/mips_directives.s.cs +12 -0
  218. data/test/MC/Mips/nabi-regs.s.cs +12 -0
  219. data/test/MC/Mips/set-at-directive.s.cs +6 -0
  220. data/test/MC/Mips/test_2r.s.cs +16 -0
  221. data/test/MC/Mips/test_2rf.s.cs +33 -0
  222. data/test/MC/Mips/test_3r.s.cs +243 -0
  223. data/test/MC/Mips/test_3rf.s.cs +83 -0
  224. data/test/MC/Mips/test_bit.s.cs +49 -0
  225. data/test/MC/Mips/test_cbranch.s.cs +11 -0
  226. data/test/MC/Mips/test_ctrlregs.s.cs +33 -0
  227. data/test/MC/Mips/test_elm.s.cs +16 -0
  228. data/test/MC/Mips/test_elm_insert.s.cs +4 -0
  229. data/test/MC/Mips/test_elm_insve.s.cs +5 -0
  230. data/test/MC/Mips/test_i10.s.cs +5 -0
  231. data/test/MC/Mips/test_i5.s.cs +45 -0
  232. data/test/MC/Mips/test_i8.s.cs +11 -0
  233. data/test/MC/Mips/test_lsa.s.cs +5 -0
  234. data/test/MC/Mips/test_mi10.s.cs +24 -0
  235. data/test/MC/Mips/test_vec.s.cs +8 -0
  236. data/test/MC/PowerPC/ppc64-encoding-bookII.s.cs +25 -0
  237. data/test/MC/PowerPC/ppc64-encoding-bookIII.s.cs +35 -0
  238. data/test/MC/PowerPC/ppc64-encoding-ext.s.cs +535 -0
  239. data/test/MC/PowerPC/ppc64-encoding-fp.s.cs +110 -0
  240. data/test/MC/PowerPC/ppc64-encoding-vmx.s.cs +170 -0
  241. data/test/MC/PowerPC/ppc64-encoding.s.cs +202 -0
  242. data/test/MC/PowerPC/ppc64-operands.s.cs +32 -0
  243. data/test/MC/README +6 -0
  244. data/test/MC/Sparc/sparc-alu-instructions.s.cs +47 -0
  245. data/test/MC/Sparc/sparc-atomic-instructions.s.cs +7 -0
  246. data/test/MC/Sparc/sparc-ctrl-instructions.s.cs +11 -0
  247. data/test/MC/Sparc/sparc-fp-instructions.s.cs +59 -0
  248. data/test/MC/Sparc/sparc-mem-instructions.s.cs +25 -0
  249. data/test/MC/Sparc/sparc-vis.s.cs +2 -0
  250. data/test/MC/Sparc/sparc64-alu-instructions.s.cs +13 -0
  251. data/test/MC/Sparc/sparc64-ctrl-instructions.s.cs +102 -0
  252. data/test/MC/Sparc/sparcv8-instructions.s.cs +7 -0
  253. data/test/MC/Sparc/sparcv9-instructions.s.cs +1 -0
  254. data/test/MC/SystemZ/insn-good-z196.s.cs +589 -0
  255. data/test/MC/SystemZ/insn-good.s.cs +2265 -0
  256. data/test/MC/SystemZ/regs-good.s.cs +45 -0
  257. data/test/MC/X86/3DNow.s.cs +29 -0
  258. data/test/MC/X86/address-size.s.cs +5 -0
  259. data/test/MC/X86/avx512-encodings.s.cs +12 -0
  260. data/test/MC/X86/intel-syntax-encoding.s.cs +30 -0
  261. data/test/MC/X86/x86-32-avx.s.cs +833 -0
  262. data/test/MC/X86/x86-32-fma3.s.cs +169 -0
  263. data/test/MC/X86/x86-32-ms-inline-asm.s.cs +27 -0
  264. data/test/MC/X86/x86_64-avx-clmul-encoding.s.cs +11 -0
  265. data/test/MC/X86/x86_64-avx-encoding.s.cs +1058 -0
  266. data/test/MC/X86/x86_64-bmi-encoding.s.cs +51 -0
  267. data/test/MC/X86/x86_64-encoding.s.cs +59 -0
  268. data/test/MC/X86/x86_64-fma3-encoding.s.cs +169 -0
  269. data/test/MC/X86/x86_64-fma4-encoding.s.cs +98 -0
  270. data/test/MC/X86/x86_64-hle-encoding.s.cs +3 -0
  271. data/test/MC/X86/x86_64-imm-widths.s.cs +27 -0
  272. data/test/MC/X86/x86_64-rand-encoding.s.cs +13 -0
  273. data/test/MC/X86/x86_64-rtm-encoding.s.cs +4 -0
  274. data/test/MC/X86/x86_64-sse4a.s.cs +1 -0
  275. data/test/MC/X86/x86_64-tbm-encoding.s.cs +40 -0
  276. data/test/MC/X86/x86_64-xop-encoding.s.cs +152 -0
  277. data/test/README +6 -0
  278. data/test/test.rb +205 -0
  279. data/test/test.rb.SPEC +235 -0
  280. data/test/test_arm.rb +202 -0
  281. data/test/test_arm.rb.SPEC +275 -0
  282. data/test/test_arm64.rb +150 -0
  283. data/test/test_arm64.rb.SPEC +116 -0
  284. data/test/test_detail.rb +228 -0
  285. data/test/test_detail.rb.SPEC +322 -0
  286. data/test/test_exhaustive.rb +80 -0
  287. data/test/test_mips.rb +118 -0
  288. data/test/test_mips.rb.SPEC +91 -0
  289. data/test/test_ppc.rb +137 -0
  290. data/test/test_ppc.rb.SPEC +84 -0
  291. data/test/test_sanity.rb +83 -0
  292. data/test/test_skipdata.rb +111 -0
  293. data/test/test_skipdata.rb.SPEC +58 -0
  294. data/test/test_sparc.rb +113 -0
  295. data/test/test_sparc.rb.SPEC +116 -0
  296. data/test/test_sysz.rb +111 -0
  297. data/test/test_sysz.rb.SPEC +61 -0
  298. data/test/test_x86.rb +189 -0
  299. data/test/test_x86.rb.SPEC +579 -0
  300. data/test/test_xcore.rb +100 -0
  301. data/test/test_xcore.rb.SPEC +75 -0
  302. metadata +393 -0
@@ -0,0 +1,265 @@
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:08+12:00
9
+
10
+ module Crabstone
11
+ module X86
12
+ REG_LOOKUP = {
13
+ 'INVALID' => 0,
14
+ 'AH' => 1,
15
+ 'AL' => 2,
16
+ 'AX' => 3,
17
+ 'BH' => 4,
18
+ 'BL' => 5,
19
+ 'BP' => 6,
20
+ 'BPL' => 7,
21
+ 'BX' => 8,
22
+ 'CH' => 9,
23
+ 'CL' => 10,
24
+ 'CS' => 11,
25
+ 'CX' => 12,
26
+ 'DH' => 13,
27
+ 'DI' => 14,
28
+ 'DIL' => 15,
29
+ 'DL' => 16,
30
+ 'DS' => 17,
31
+ 'DX' => 18,
32
+ 'EAX' => 19,
33
+ 'EBP' => 20,
34
+ 'EBX' => 21,
35
+ 'ECX' => 22,
36
+ 'EDI' => 23,
37
+ 'EDX' => 24,
38
+ 'EFLAGS' => 25,
39
+ 'EIP' => 26,
40
+ 'EIZ' => 27,
41
+ 'ES' => 28,
42
+ 'ESI' => 29,
43
+ 'ESP' => 30,
44
+ 'FPSW' => 31,
45
+ 'FS' => 32,
46
+ 'GS' => 33,
47
+ 'IP' => 34,
48
+ 'RAX' => 35,
49
+ 'RBP' => 36,
50
+ 'RBX' => 37,
51
+ 'RCX' => 38,
52
+ 'RDI' => 39,
53
+ 'RDX' => 40,
54
+ 'RIP' => 41,
55
+ 'RIZ' => 42,
56
+ 'RSI' => 43,
57
+ 'RSP' => 44,
58
+ 'SI' => 45,
59
+ 'SIL' => 46,
60
+ 'SP' => 47,
61
+ 'SPL' => 48,
62
+ 'SS' => 49,
63
+ 'CR0' => 50,
64
+ 'CR1' => 51,
65
+ 'CR2' => 52,
66
+ 'CR3' => 53,
67
+ 'CR4' => 54,
68
+ 'CR5' => 55,
69
+ 'CR6' => 56,
70
+ 'CR7' => 57,
71
+ 'CR8' => 58,
72
+ 'CR9' => 59,
73
+ 'CR10' => 60,
74
+ 'CR11' => 61,
75
+ 'CR12' => 62,
76
+ 'CR13' => 63,
77
+ 'CR14' => 64,
78
+ 'CR15' => 65,
79
+ 'DR0' => 66,
80
+ 'DR1' => 67,
81
+ 'DR2' => 68,
82
+ 'DR3' => 69,
83
+ 'DR4' => 70,
84
+ 'DR5' => 71,
85
+ 'DR6' => 72,
86
+ 'DR7' => 73,
87
+ 'FP0' => 74,
88
+ 'FP1' => 75,
89
+ 'FP2' => 76,
90
+ 'FP3' => 77,
91
+ 'FP4' => 78,
92
+ 'FP5' => 79,
93
+ 'FP6' => 80,
94
+ 'FP7' => 81,
95
+ 'K0' => 82,
96
+ 'K1' => 83,
97
+ 'K2' => 84,
98
+ 'K3' => 85,
99
+ 'K4' => 86,
100
+ 'K5' => 87,
101
+ 'K6' => 88,
102
+ 'K7' => 89,
103
+ 'MM0' => 90,
104
+ 'MM1' => 91,
105
+ 'MM2' => 92,
106
+ 'MM3' => 93,
107
+ 'MM4' => 94,
108
+ 'MM5' => 95,
109
+ 'MM6' => 96,
110
+ 'MM7' => 97,
111
+ 'R8' => 98,
112
+ 'R9' => 99,
113
+ 'R10' => 100,
114
+ 'R11' => 101,
115
+ 'R12' => 102,
116
+ 'R13' => 103,
117
+ 'R14' => 104,
118
+ 'R15' => 105,
119
+ 'ST0' => 106,
120
+ 'ST1' => 107,
121
+ 'ST2' => 108,
122
+ 'ST3' => 109,
123
+ 'ST4' => 110,
124
+ 'ST5' => 111,
125
+ 'ST6' => 112,
126
+ 'ST7' => 113,
127
+ 'XMM0' => 114,
128
+ 'XMM1' => 115,
129
+ 'XMM2' => 116,
130
+ 'XMM3' => 117,
131
+ 'XMM4' => 118,
132
+ 'XMM5' => 119,
133
+ 'XMM6' => 120,
134
+ 'XMM7' => 121,
135
+ 'XMM8' => 122,
136
+ 'XMM9' => 123,
137
+ 'XMM10' => 124,
138
+ 'XMM11' => 125,
139
+ 'XMM12' => 126,
140
+ 'XMM13' => 127,
141
+ 'XMM14' => 128,
142
+ 'XMM15' => 129,
143
+ 'XMM16' => 130,
144
+ 'XMM17' => 131,
145
+ 'XMM18' => 132,
146
+ 'XMM19' => 133,
147
+ 'XMM20' => 134,
148
+ 'XMM21' => 135,
149
+ 'XMM22' => 136,
150
+ 'XMM23' => 137,
151
+ 'XMM24' => 138,
152
+ 'XMM25' => 139,
153
+ 'XMM26' => 140,
154
+ 'XMM27' => 141,
155
+ 'XMM28' => 142,
156
+ 'XMM29' => 143,
157
+ 'XMM30' => 144,
158
+ 'XMM31' => 145,
159
+ 'YMM0' => 146,
160
+ 'YMM1' => 147,
161
+ 'YMM2' => 148,
162
+ 'YMM3' => 149,
163
+ 'YMM4' => 150,
164
+ 'YMM5' => 151,
165
+ 'YMM6' => 152,
166
+ 'YMM7' => 153,
167
+ 'YMM8' => 154,
168
+ 'YMM9' => 155,
169
+ 'YMM10' => 156,
170
+ 'YMM11' => 157,
171
+ 'YMM12' => 158,
172
+ 'YMM13' => 159,
173
+ 'YMM14' => 160,
174
+ 'YMM15' => 161,
175
+ 'YMM16' => 162,
176
+ 'YMM17' => 163,
177
+ 'YMM18' => 164,
178
+ 'YMM19' => 165,
179
+ 'YMM20' => 166,
180
+ 'YMM21' => 167,
181
+ 'YMM22' => 168,
182
+ 'YMM23' => 169,
183
+ 'YMM24' => 170,
184
+ 'YMM25' => 171,
185
+ 'YMM26' => 172,
186
+ 'YMM27' => 173,
187
+ 'YMM28' => 174,
188
+ 'YMM29' => 175,
189
+ 'YMM30' => 176,
190
+ 'YMM31' => 177,
191
+ 'ZMM0' => 178,
192
+ 'ZMM1' => 179,
193
+ 'ZMM2' => 180,
194
+ 'ZMM3' => 181,
195
+ 'ZMM4' => 182,
196
+ 'ZMM5' => 183,
197
+ 'ZMM6' => 184,
198
+ 'ZMM7' => 185,
199
+ 'ZMM8' => 186,
200
+ 'ZMM9' => 187,
201
+ 'ZMM10' => 188,
202
+ 'ZMM11' => 189,
203
+ 'ZMM12' => 190,
204
+ 'ZMM13' => 191,
205
+ 'ZMM14' => 192,
206
+ 'ZMM15' => 193,
207
+ 'ZMM16' => 194,
208
+ 'ZMM17' => 195,
209
+ 'ZMM18' => 196,
210
+ 'ZMM19' => 197,
211
+ 'ZMM20' => 198,
212
+ 'ZMM21' => 199,
213
+ 'ZMM22' => 200,
214
+ 'ZMM23' => 201,
215
+ 'ZMM24' => 202,
216
+ 'ZMM25' => 203,
217
+ 'ZMM26' => 204,
218
+ 'ZMM27' => 205,
219
+ 'ZMM28' => 206,
220
+ 'ZMM29' => 207,
221
+ 'ZMM30' => 208,
222
+ 'ZMM31' => 209,
223
+ 'R8B' => 210,
224
+ 'R9B' => 211,
225
+ 'R10B' => 212,
226
+ 'R11B' => 213,
227
+ 'R12B' => 214,
228
+ 'R13B' => 215,
229
+ 'R14B' => 216,
230
+ 'R15B' => 217,
231
+ 'R8D' => 218,
232
+ 'R9D' => 219,
233
+ 'R10D' => 220,
234
+ 'R11D' => 221,
235
+ 'R12D' => 222,
236
+ 'R13D' => 223,
237
+ 'R14D' => 224,
238
+ 'R15D' => 225,
239
+ 'R8W' => 226,
240
+ 'R9W' => 227,
241
+ 'R10W' => 228,
242
+ 'R11W' => 229,
243
+ 'R12W' => 230,
244
+ 'R13W' => 231,
245
+ 'R14W' => 232,
246
+ 'R15W' => 233
247
+ }
248
+
249
+ ID_LOOKUP = REG_LOOKUP.invert
250
+
251
+ # alias registers
252
+
253
+ SYM_LOOKUP = Hash[REG_LOOKUP.map {|k,v| [k.downcase.to_sym,v]}]
254
+
255
+ def self.register reg
256
+ return reg if ID_LOOKUP[reg]
257
+ return SYM_LOOKUP[reg] if SYM_LOOKUP[reg]
258
+ if reg.respond_to? :upcase
259
+ return REG_LOOKUP[reg.upcase] || REG_LOOKUP['INVALID']
260
+ end
261
+ REG_LOOKUP['INVALID']
262
+ end
263
+
264
+ end
265
+ end
@@ -0,0 +1,78 @@
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 'xcore_const'
9
+
10
+ module Crabstone
11
+ module XCore
12
+
13
+ class MemoryOperand < FFI::Struct
14
+ layout(
15
+ :base, :uint8,
16
+ :index, :uint8,
17
+ :disp, :int32,
18
+ :direct, :int
19
+ )
20
+ end
21
+
22
+ class OperandValue < FFI::Union
23
+ layout(
24
+ :reg, :uint,
25
+ :imm, :int32,
26
+ :mem, MemoryOperand
27
+ )
28
+ end
29
+
30
+ class Operand < FFI::Struct
31
+ layout(
32
+ :type, :uint,
33
+ :value, OperandValue
34
+ )
35
+
36
+ def value
37
+ case self[:type]
38
+ when OP_REG
39
+ self[:value][:reg]
40
+ when OP_IMM
41
+ self[:value][:imm]
42
+ when OP_MEM
43
+ self[:value][:mem]
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
@@ -0,0 +1,185 @@
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: ./genconst /Users/ben/src/capstone/bindings/python/capstone/
8
+ # 2015-05-02T13:24:01+12:00
9
+
10
+ module Crabstone
11
+ module XCore
12
+
13
+ # Operand type for instruction's operands
14
+
15
+ OP_INVALID = 0
16
+ OP_REG = 1
17
+ OP_IMM = 2
18
+ OP_MEM = 3
19
+
20
+ # XCore registers
21
+
22
+ REG_INVALID = 0
23
+ REG_CP = 1
24
+ REG_DP = 2
25
+ REG_LR = 3
26
+ REG_SP = 4
27
+ REG_R0 = 5
28
+ REG_R1 = 6
29
+ REG_R2 = 7
30
+ REG_R3 = 8
31
+ REG_R4 = 9
32
+ REG_R5 = 10
33
+ REG_R6 = 11
34
+ REG_R7 = 12
35
+ REG_R8 = 13
36
+ REG_R9 = 14
37
+ REG_R10 = 15
38
+ REG_R11 = 16
39
+
40
+ # pseudo registers
41
+ REG_PC = 17
42
+ REG_SCP = 18
43
+ REG_SSR = 19
44
+ REG_ET = 20
45
+ REG_ED = 21
46
+ REG_SED = 22
47
+ REG_KEP = 23
48
+ REG_KSP = 24
49
+ REG_ID = 25
50
+ REG_ENDING = 26
51
+
52
+ # XCore instruction
53
+
54
+ INS_INVALID = 0
55
+ INS_ADD = 1
56
+ INS_ANDNOT = 2
57
+ INS_AND = 3
58
+ INS_ASHR = 4
59
+ INS_BAU = 5
60
+ INS_BITREV = 6
61
+ INS_BLA = 7
62
+ INS_BLAT = 8
63
+ INS_BL = 9
64
+ INS_BF = 10
65
+ INS_BT = 11
66
+ INS_BU = 12
67
+ INS_BRU = 13
68
+ INS_BYTEREV = 14
69
+ INS_CHKCT = 15
70
+ INS_CLRE = 16
71
+ INS_CLRPT = 17
72
+ INS_CLRSR = 18
73
+ INS_CLZ = 19
74
+ INS_CRC8 = 20
75
+ INS_CRC32 = 21
76
+ INS_DCALL = 22
77
+ INS_DENTSP = 23
78
+ INS_DGETREG = 24
79
+ INS_DIVS = 25
80
+ INS_DIVU = 26
81
+ INS_DRESTSP = 27
82
+ INS_DRET = 28
83
+ INS_ECALLF = 29
84
+ INS_ECALLT = 30
85
+ INS_EDU = 31
86
+ INS_EEF = 32
87
+ INS_EET = 33
88
+ INS_EEU = 34
89
+ INS_ENDIN = 35
90
+ INS_ENTSP = 36
91
+ INS_EQ = 37
92
+ INS_EXTDP = 38
93
+ INS_EXTSP = 39
94
+ INS_FREER = 40
95
+ INS_FREET = 41
96
+ INS_GETD = 42
97
+ INS_GET = 43
98
+ INS_GETN = 44
99
+ INS_GETR = 45
100
+ INS_GETSR = 46
101
+ INS_GETST = 47
102
+ INS_GETTS = 48
103
+ INS_INCT = 49
104
+ INS_INIT = 50
105
+ INS_INPW = 51
106
+ INS_INSHR = 52
107
+ INS_INT = 53
108
+ INS_IN = 54
109
+ INS_KCALL = 55
110
+ INS_KENTSP = 56
111
+ INS_KRESTSP = 57
112
+ INS_KRET = 58
113
+ INS_LADD = 59
114
+ INS_LD16S = 60
115
+ INS_LD8U = 61
116
+ INS_LDA16 = 62
117
+ INS_LDAP = 63
118
+ INS_LDAW = 64
119
+ INS_LDC = 65
120
+ INS_LDW = 66
121
+ INS_LDIVU = 67
122
+ INS_LMUL = 68
123
+ INS_LSS = 69
124
+ INS_LSUB = 70
125
+ INS_LSU = 71
126
+ INS_MACCS = 72
127
+ INS_MACCU = 73
128
+ INS_MJOIN = 74
129
+ INS_MKMSK = 75
130
+ INS_MSYNC = 76
131
+ INS_MUL = 77
132
+ INS_NEG = 78
133
+ INS_NOT = 79
134
+ INS_OR = 80
135
+ INS_OUTCT = 81
136
+ INS_OUTPW = 82
137
+ INS_OUTSHR = 83
138
+ INS_OUTT = 84
139
+ INS_OUT = 85
140
+ INS_PEEK = 86
141
+ INS_REMS = 87
142
+ INS_REMU = 88
143
+ INS_RETSP = 89
144
+ INS_SETCLK = 90
145
+ INS_SET = 91
146
+ INS_SETC = 92
147
+ INS_SETD = 93
148
+ INS_SETEV = 94
149
+ INS_SETN = 95
150
+ INS_SETPSC = 96
151
+ INS_SETPT = 97
152
+ INS_SETRDY = 98
153
+ INS_SETSR = 99
154
+ INS_SETTW = 100
155
+ INS_SETV = 101
156
+ INS_SEXT = 102
157
+ INS_SHL = 103
158
+ INS_SHR = 104
159
+ INS_SSYNC = 105
160
+ INS_ST16 = 106
161
+ INS_ST8 = 107
162
+ INS_STW = 108
163
+ INS_SUB = 109
164
+ INS_SYNCR = 110
165
+ INS_TESTCT = 111
166
+ INS_TESTLCL = 112
167
+ INS_TESTWCT = 113
168
+ INS_TSETMR = 114
169
+ INS_START = 115
170
+ INS_WAITEF = 116
171
+ INS_WAITET = 117
172
+ INS_WAITEU = 118
173
+ INS_XOR = 119
174
+ INS_ZEXT = 120
175
+ INS_ENDING = 121
176
+
177
+ # Group of XCore instructions
178
+
179
+ GRP_INVALID = 0
180
+
181
+ # Generic groups
182
+ GRP_JUMP = 1
183
+ GRP_ENDING = 2
184
+ end
185
+ end