crabstone 4.0.3 → 5.0.0

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +20 -0
  3. data/README.md +25 -8
  4. data/lib/crabstone/arch/3/constants.rb +86 -0
  5. data/lib/crabstone/arch/4/constants.rb +116 -0
  6. data/lib/crabstone/arch/5/arm.rb +111 -0
  7. data/lib/crabstone/arch/5/arm64.rb +131 -0
  8. data/lib/crabstone/arch/5/arm64_const.rb +3015 -0
  9. data/lib/crabstone/arch/5/arm_const.rb +840 -0
  10. data/lib/crabstone/arch/5/bpf.rb +81 -0
  11. data/lib/crabstone/arch/5/bpf_const.rb +124 -0
  12. data/lib/crabstone/arch/5/constants.rb +155 -0
  13. data/lib/crabstone/arch/5/evm.rb +20 -0
  14. data/lib/crabstone/arch/5/evm_const.rb +161 -0
  15. data/lib/crabstone/arch/5/m680x.rb +106 -0
  16. data/lib/crabstone/arch/5/m680x_const.rb +426 -0
  17. data/lib/crabstone/arch/5/m68k.rb +129 -0
  18. data/lib/crabstone/arch/5/m68k_const.rb +496 -0
  19. data/lib/crabstone/arch/5/mips.rb +57 -0
  20. data/lib/crabstone/arch/5/mips_const.rb +869 -0
  21. data/lib/crabstone/arch/5/mos65xx.rb +52 -0
  22. data/lib/crabstone/arch/5/mos65xx_const.rb +162 -0
  23. data/lib/crabstone/arch/5/ppc.rb +69 -0
  24. data/lib/crabstone/arch/5/ppc_const.rb +2024 -0
  25. data/lib/crabstone/arch/5/riscv.rb +58 -0
  26. data/lib/crabstone/arch/5/riscv_const.rb +455 -0
  27. data/lib/crabstone/arch/5/sh.rb +72 -0
  28. data/lib/crabstone/arch/5/sh_const.rb +376 -0
  29. data/lib/crabstone/arch/5/sparc.rb +60 -0
  30. data/lib/crabstone/arch/5/sparc_const.rb +439 -0
  31. data/lib/crabstone/arch/5/sysz.rb +60 -0
  32. data/lib/crabstone/arch/5/sysz_const.rb +2532 -0
  33. data/lib/crabstone/arch/5/tms320c64x.rb +87 -0
  34. data/lib/crabstone/arch/5/tms320c64x_const.rb +287 -0
  35. data/lib/crabstone/arch/5/tricore.rb +59 -0
  36. data/lib/crabstone/arch/5/tricore_const.rb +488 -0
  37. data/lib/crabstone/arch/5/wasm.rb +81 -0
  38. data/lib/crabstone/arch/5/wasm_const.rb +201 -0
  39. data/lib/crabstone/arch/5/x86.rb +98 -0
  40. data/lib/crabstone/arch/5/x86_const.rb +1999 -0
  41. data/lib/crabstone/arch/5/xcore.rb +59 -0
  42. data/lib/crabstone/arch/5/xcore_const.rb +171 -0
  43. data/lib/crabstone/arch/extension.rb +2 -1
  44. data/lib/crabstone/arch/register.rb +1 -1
  45. data/lib/crabstone/arch.rb +6 -0
  46. data/lib/crabstone/binding/5/detail.rb +47 -0
  47. data/lib/crabstone/binding/5/instruction.rb +23 -0
  48. data/lib/crabstone/binding.rb +4 -5
  49. data/lib/crabstone/constants.rb +2 -107
  50. data/lib/crabstone/cs_version.rb +2 -3
  51. data/lib/crabstone/disassembler.rb +2 -3
  52. data/lib/crabstone/instruction.rb +0 -1
  53. data/lib/crabstone/version.rb +1 -1
  54. metadata +51 -4
@@ -0,0 +1,201 @@
1
+ # frozen_string_literal: true
2
+
3
+ # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
4
+
5
+ require 'crabstone/arch/register'
6
+
7
+ module Crabstone
8
+ module WASM
9
+ OP_INVALID = 0
10
+ OP_NONE = 1
11
+ OP_INT7 = 2
12
+ OP_VARUINT32 = 3
13
+ OP_VARUINT64 = 4
14
+ OP_UINT32 = 5
15
+ OP_UINT64 = 6
16
+ OP_IMM = 7
17
+ OP_BRTABLE = 8
18
+ INS_UNREACHABLE = 0x0
19
+ INS_NOP = 0x1
20
+ INS_BLOCK = 0x2
21
+ INS_LOOP = 0x3
22
+ INS_IF = 0x4
23
+ INS_ELSE = 0x5
24
+ INS_END = 0xb
25
+ INS_BR = 0xc
26
+ INS_BR_IF = 0xd
27
+ INS_BR_TABLE = 0xe
28
+ INS_RETURN = 0xf
29
+ INS_CALL = 0x10
30
+ INS_CALL_INDIRECT = 0x11
31
+ INS_DROP = 0x1a
32
+ INS_SELECT = 0x1b
33
+ INS_GET_LOCAL = 0x20
34
+ INS_SET_LOCAL = 0x21
35
+ INS_TEE_LOCAL = 0x22
36
+ INS_GET_GLOBAL = 0x23
37
+ INS_SET_GLOBAL = 0x24
38
+ INS_I32_LOAD = 0x28
39
+ INS_I64_LOAD = 0x29
40
+ INS_F32_LOAD = 0x2a
41
+ INS_F64_LOAD = 0x2b
42
+ INS_I32_LOAD8_S = 0x2c
43
+ INS_I32_LOAD8_U = 0x2d
44
+ INS_I32_LOAD16_S = 0x2e
45
+ INS_I32_LOAD16_U = 0x2f
46
+ INS_I64_LOAD8_S = 0x30
47
+ INS_I64_LOAD8_U = 0x31
48
+ INS_I64_LOAD16_S = 0x32
49
+ INS_I64_LOAD16_U = 0x33
50
+ INS_I64_LOAD32_S = 0x34
51
+ INS_I64_LOAD32_U = 0x35
52
+ INS_I32_STORE = 0x36
53
+ INS_I64_STORE = 0x37
54
+ INS_F32_STORE = 0x38
55
+ INS_F64_STORE = 0x39
56
+ INS_I32_STORE8 = 0x3a
57
+ INS_I32_STORE16 = 0x3b
58
+ INS_I64_STORE8 = 0x3c
59
+ INS_I64_STORE16 = 0x3d
60
+ INS_I64_STORE32 = 0x3e
61
+ INS_CURRENT_MEMORY = 0x3f
62
+ INS_GROW_MEMORY = 0x40
63
+ INS_I32_CONST = 0x41
64
+ INS_I64_CONST = 0x42
65
+ INS_F32_CONST = 0x43
66
+ INS_F64_CONST = 0x44
67
+ INS_I32_EQZ = 0x45
68
+ INS_I32_EQ = 0x46
69
+ INS_I32_NE = 0x47
70
+ INS_I32_LT_S = 0x48
71
+ INS_I32_LT_U = 0x49
72
+ INS_I32_GT_S = 0x4a
73
+ INS_I32_GT_U = 0x4b
74
+ INS_I32_LE_S = 0x4c
75
+ INS_I32_LE_U = 0x4d
76
+ INS_I32_GE_S = 0x4e
77
+ INS_I32_GE_U = 0x4f
78
+ INS_I64_EQZ = 0x50
79
+ INS_I64_EQ = 0x51
80
+ INS_I64_NE = 0x52
81
+ INS_I64_LT_S = 0x53
82
+ INS_I64_LT_U = 0x54
83
+ INS_I64_GT_U = 0x56
84
+ INS_I64_LE_S = 0x57
85
+ INS_I64_LE_U = 0x58
86
+ INS_I64_GE_S = 0x59
87
+ INS_I64_GE_U = 0x5a
88
+ INS_F32_EQ = 0x5b
89
+ INS_F32_NE = 0x5c
90
+ INS_F32_LT = 0x5d
91
+ INS_F32_GT = 0x5e
92
+ INS_F32_LE = 0x5f
93
+ INS_F32_GE = 0x60
94
+ INS_F64_EQ = 0x61
95
+ INS_F64_NE = 0x62
96
+ INS_F64_LT = 0x63
97
+ INS_F64_GT = 0x64
98
+ INS_F64_LE = 0x65
99
+ INS_F64_GE = 0x66
100
+ INS_I32_CLZ = 0x67
101
+ INS_I32_CTZ = 0x68
102
+ INS_I32_POPCNT = 0x69
103
+ INS_I32_ADD = 0x6a
104
+ INS_I32_SUB = 0x6b
105
+ INS_I32_MUL = 0x6c
106
+ INS_I32_DIV_S = 0x6d
107
+ INS_I32_DIV_U = 0x6e
108
+ INS_I32_REM_S = 0x6f
109
+ INS_I32_REM_U = 0x70
110
+ INS_I32_AND = 0x71
111
+ INS_I32_OR = 0x72
112
+ INS_I32_XOR = 0x73
113
+ INS_I32_SHL = 0x74
114
+ INS_I32_SHR_S = 0x75
115
+ INS_I32_SHR_U = 0x76
116
+ INS_I32_ROTL = 0x77
117
+ INS_I32_ROTR = 0x78
118
+ INS_I64_CLZ = 0x79
119
+ INS_I64_CTZ = 0x7a
120
+ INS_I64_POPCNT = 0x7b
121
+ INS_I64_ADD = 0x7c
122
+ INS_I64_SUB = 0x7d
123
+ INS_I64_MUL = 0x7e
124
+ INS_I64_DIV_S = 0x7f
125
+ INS_I64_DIV_U = 0x80
126
+ INS_I64_REM_S = 0x81
127
+ INS_I64_REM_U = 0x82
128
+ INS_I64_AND = 0x83
129
+ INS_I64_OR = 0x84
130
+ INS_I64_XOR = 0x85
131
+ INS_I64_SHL = 0x86
132
+ INS_I64_SHR_S = 0x87
133
+ INS_I64_SHR_U = 0x88
134
+ INS_I64_ROTL = 0x89
135
+ INS_I64_ROTR = 0x8a
136
+ INS_F32_ABS = 0x8b
137
+ INS_F32_NEG = 0x8c
138
+ INS_F32_CEIL = 0x8d
139
+ INS_F32_FLOOR = 0x8e
140
+ INS_F32_TRUNC = 0x8f
141
+ INS_F32_NEAREST = 0x90
142
+ INS_F32_SQRT = 0x91
143
+ INS_F32_ADD = 0x92
144
+ INS_F32_SUB = 0x93
145
+ INS_F32_MUL = 0x94
146
+ INS_F32_DIV = 0x95
147
+ INS_F32_MIN = 0x96
148
+ INS_F32_MAX = 0x97
149
+ INS_F32_COPYSIGN = 0x98
150
+ INS_F64_ABS = 0x99
151
+ INS_F64_NEG = 0x9a
152
+ INS_F64_CEIL = 0x9b
153
+ INS_F64_FLOOR = 0x9c
154
+ INS_F64_TRUNC = 0x9d
155
+ INS_F64_NEAREST = 0x9e
156
+ INS_F64_SQRT = 0x9f
157
+ INS_F64_ADD = 0xa0
158
+ INS_F64_SUB = 0xa1
159
+ INS_F64_MUL = 0xa2
160
+ INS_F64_DIV = 0xa3
161
+ INS_F64_MIN = 0xa4
162
+ INS_F64_MAX = 0xa5
163
+ INS_F64_COPYSIGN = 0xa6
164
+ INS_I32_WARP_I64 = 0xa7
165
+ INS_I32_TRUNC_U_F32 = 0xa9
166
+ INS_I32_TRUNC_S_F64 = 0xaa
167
+ INS_I32_TRUNC_U_F64 = 0xab
168
+ INS_I64_EXTEND_S_I32 = 0xac
169
+ INS_I64_EXTEND_U_I32 = 0xad
170
+ INS_I64_TRUNC_S_F32 = 0xae
171
+ INS_I64_TRUNC_U_F32 = 0xaf
172
+ INS_I64_TRUNC_S_F64 = 0xb0
173
+ INS_I64_TRUNC_U_F64 = 0xb1
174
+ INS_F32_CONVERT_S_I32 = 0xb2
175
+ INS_F32_CONVERT_U_I32 = 0xb3
176
+ INS_F32_CONVERT_S_I64 = 0xb4
177
+ INS_F32_CONVERT_U_I64 = 0xb5
178
+ INS_F32_DEMOTE_F64 = 0xb6
179
+ INS_F64_CONVERT_S_I32 = 0xb7
180
+ INS_F64_CONVERT_U_I32 = 0xb8
181
+ INS_F64_CONVERT_S_I64 = 0xb9
182
+ INS_F64_CONVERT_U_I64 = 0xba
183
+ INS_F64_PROMOTE_F32 = 0xbb
184
+ INS_I32_REINTERPRET_F32 = 0xbc
185
+ INS_I64_REINTERPRET_F64 = 0xbd
186
+ INS_F32_REINTERPRET_I32 = 0xbe
187
+ INS_F64_REINTERPRET_I64 = 0xbf
188
+ INS_INVALID = 512
189
+ INS_ENDING = 513
190
+
191
+ GRP_INVALID = 0
192
+ GRP_NUMBERIC = 8
193
+ GRP_PARAMETRIC = 9
194
+ GRP_VARIABLE = 10
195
+ GRP_MEMORY = 11
196
+ GRP_CONTROL = 12
197
+ GRP_ENDING = 13
198
+
199
+ extend Register
200
+ end
201
+ end
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
4
+
5
+ require 'ffi'
6
+
7
+ require 'crabstone/arch/extension'
8
+ require_relative 'x86_const'
9
+
10
+ module Crabstone
11
+ module X86
12
+ class Flags < FFI::Union
13
+ layout(
14
+ :eflags, :ulong,
15
+ :fpu_flags, :ulong
16
+ )
17
+ end
18
+
19
+ class OperandMemory < FFI::Struct
20
+ layout(
21
+ :segment, :uint,
22
+ :base, :uint,
23
+ :index, :uint,
24
+ :scale, :int,
25
+ :disp, :long
26
+ )
27
+ end
28
+
29
+ class OperandValue < FFI::Union
30
+ layout(
31
+ :reg, :uint,
32
+ :imm, :long,
33
+ :mem, OperandMemory
34
+ )
35
+ end
36
+
37
+ class Operand < FFI::Struct
38
+ layout(
39
+ :type, :uint,
40
+ :value, OperandValue,
41
+ :size, :uint8,
42
+ :access, :uint8,
43
+ :avx_bcast, :uint,
44
+ :avx_zero_opmask, :bool
45
+ )
46
+
47
+ include Crabstone::Extension::Operand
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
+ end
61
+
62
+ class Encoding < FFI::Struct
63
+ layout(
64
+ :modrm_offset, :uint8,
65
+ :disp_offset, :uint8,
66
+ :disp_size, :uint8,
67
+ :imm_offset, :uint8,
68
+ :imm_size, :uint8
69
+ )
70
+ end
71
+
72
+ class Instruction < FFI::Struct
73
+ layout(
74
+ :prefix, [:uint8, 4],
75
+ :opcode, [:uint8, 4],
76
+ :rex, :uint8,
77
+ :addr_size, :uint8,
78
+ :modrm, :uint8,
79
+ :sib, :uint8,
80
+ :disp, :long,
81
+ :sib_index, :uint,
82
+ :sib_scale, :int8,
83
+ :sib_base, :uint,
84
+ :xop_cc, :uint,
85
+ :sse_cc, :uint,
86
+ :avx_cc, :uint,
87
+ :avx_sae, :bool,
88
+ :avx_rm, :uint,
89
+ :flags, Flags,
90
+ :op_count, :uint8,
91
+ :operands, [Operand, 8],
92
+ :encoding, Encoding
93
+ )
94
+
95
+ include Crabstone::Extension::Instruction
96
+ end
97
+ end
98
+ end