@fluffylabs/anan-as 1.2.0-e8a5af8 → 1.2.0-ef04361
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.
- package/dist/bin/src/trace-replay.js +2 -2
- package/dist/build/compiler-inline.js +1 -1
- package/dist/build/compiler.wasm +0 -0
- package/dist/build/debug-inline.js +1 -1
- package/dist/build/debug-raw-inline.js +1 -1
- package/dist/build/debug-raw.d.ts +34 -98
- package/dist/build/debug-raw.js +51 -105
- package/dist/build/debug-raw.wasm +0 -0
- package/dist/build/debug.d.ts +34 -98
- package/dist/build/debug.js +53 -112
- package/dist/build/debug.wasm +0 -0
- package/dist/build/js/assembly/api-debugger.d.ts +55 -0
- package/dist/build/js/assembly/api-debugger.js +245 -0
- package/dist/build/js/assembly/api-internal.d.ts +13 -0
- package/dist/build/js/assembly/api-internal.js +192 -0
- package/dist/build/js/assembly/api-types.d.ts +45 -0
- package/dist/build/js/assembly/api-types.js +53 -0
- package/dist/build/js/assembly/api-utils.d.ts +71 -0
- package/dist/build/js/assembly/api-utils.js +206 -0
- package/dist/build/js/assembly/arguments.d.ts +44 -0
- package/dist/build/js/assembly/arguments.js +164 -0
- package/dist/build/js/assembly/codec.d.ts +24 -0
- package/dist/build/js/assembly/codec.js +139 -0
- package/dist/build/js/assembly/gas-costs.d.ts +6 -0
- package/dist/build/js/assembly/gas-costs.js +39 -0
- package/dist/build/js/assembly/gas.d.ts +16 -0
- package/dist/build/js/assembly/gas.js +23 -0
- package/dist/build/js/assembly/index-shared.d.ts +4 -0
- package/dist/build/js/assembly/index-shared.js +4 -0
- package/dist/build/js/assembly/instructions/bit.d.ts +11 -0
- package/dist/build/js/assembly/instructions/bit.js +53 -0
- package/dist/build/js/assembly/instructions/branch.d.ts +17 -0
- package/dist/build/js/assembly/instructions/branch.js +120 -0
- package/dist/build/js/assembly/instructions/jump.d.ts +5 -0
- package/dist/build/js/assembly/instructions/jump.js +21 -0
- package/dist/build/js/assembly/instructions/load.d.ts +17 -0
- package/dist/build/js/assembly/instructions/load.js +134 -0
- package/dist/build/js/assembly/instructions/logic.d.ts +10 -0
- package/dist/build/js/assembly/instructions/logic.js +47 -0
- package/dist/build/js/assembly/instructions/math.d.ts +28 -0
- package/dist/build/js/assembly/instructions/math.js +225 -0
- package/dist/build/js/assembly/instructions/misc.d.ts +6 -0
- package/dist/build/js/assembly/instructions/misc.js +22 -0
- package/dist/build/js/assembly/instructions/mov.d.ts +6 -0
- package/dist/build/js/assembly/instructions/mov.js +35 -0
- package/dist/build/js/assembly/instructions/outcome.d.ts +30 -0
- package/dist/build/js/assembly/instructions/outcome.js +63 -0
- package/dist/build/js/assembly/instructions/rot.d.ts +15 -0
- package/dist/build/js/assembly/instructions/rot.js +66 -0
- package/dist/build/js/assembly/instructions/set.d.ts +7 -0
- package/dist/build/js/assembly/instructions/set.js +36 -0
- package/dist/build/js/assembly/instructions/shift.d.ts +19 -0
- package/dist/build/js/assembly/instructions/shift.js +121 -0
- package/dist/build/js/assembly/instructions/store.d.ts +17 -0
- package/dist/build/js/assembly/instructions/store.js +101 -0
- package/dist/build/js/assembly/instructions/utils.d.ts +23 -0
- package/dist/build/js/assembly/instructions/utils.js +75 -0
- package/dist/build/js/assembly/instructions-exe.d.ts +2 -0
- package/dist/build/js/assembly/instructions-exe.js +245 -0
- package/dist/build/js/assembly/instructions.d.ts +11 -0
- package/dist/build/js/assembly/instructions.js +252 -0
- package/dist/build/js/assembly/interpreter.d.ts +29 -0
- package/dist/build/js/assembly/interpreter.js +229 -0
- package/dist/build/js/assembly/math.d.ts +8 -0
- package/dist/build/js/assembly/math.js +14 -0
- package/dist/build/js/assembly/memory-page.d.ts +38 -0
- package/dist/build/js/assembly/memory-page.js +68 -0
- package/dist/build/js/assembly/memory.d.ts +82 -0
- package/dist/build/js/assembly/memory.js +386 -0
- package/dist/build/js/assembly/portable.d.ts +24 -0
- package/dist/build/js/assembly/portable.js +362 -0
- package/dist/build/js/assembly/program-build.d.ts +2 -0
- package/dist/build/js/assembly/program-build.js +104 -0
- package/dist/build/js/assembly/program.d.ts +78 -0
- package/dist/build/js/assembly/program.js +284 -0
- package/dist/build/js/assembly/registers.d.ts +6 -0
- package/dist/build/js/assembly/registers.js +9 -0
- package/dist/build/js/assembly/spi.d.ts +92 -0
- package/dist/build/js/assembly/spi.js +152 -0
- package/dist/build/js/portable/bootstrap.d.ts +1 -0
- package/dist/build/js/portable/bootstrap.js +5 -0
- package/dist/build/js/portable/index.d.ts +4 -0
- package/dist/build/js/portable/index.js +6 -0
- package/dist/build/js/portable-bundle.js +4309 -0
- package/dist/build/release-inline.js +1 -1
- package/dist/build/release-mini-inline.js +1 -1
- package/dist/build/release-mini.d.ts +34 -98
- package/dist/build/release-mini.js +53 -112
- package/dist/build/release-mini.wasm +0 -0
- package/dist/build/release-stub-inline.js +1 -1
- package/dist/build/release-stub.d.ts +34 -98
- package/dist/build/release-stub.js +53 -112
- package/dist/build/release-stub.wasm +0 -0
- package/dist/build/release.d.ts +34 -98
- package/dist/build/release.js +53 -112
- package/dist/build/release.wasm +0 -0
- package/dist/build/test-inline.js +1 -1
- package/dist/build/test.wasm +0 -0
- package/dist/test/test-w3f-common.js +126 -0
- package/dist/test/test-w3f-portable.js +5 -0
- package/dist/test/test-w3f.js +3 -120
- package/package.json +11 -4
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import * as bit from "./instructions/bit";
|
|
2
|
+
import * as branch from "./instructions/branch";
|
|
3
|
+
import * as jump from "./instructions/jump";
|
|
4
|
+
import * as load from "./instructions/load";
|
|
5
|
+
import * as logic from "./instructions/logic";
|
|
6
|
+
import * as math from "./instructions/math";
|
|
7
|
+
import { ecalli, fallthrough, INVALID, sbrk, trap } from "./instructions/misc";
|
|
8
|
+
import * as mov from "./instructions/mov";
|
|
9
|
+
import * as rot from "./instructions/rot";
|
|
10
|
+
import * as set from "./instructions/set";
|
|
11
|
+
import * as shift from "./instructions/shift";
|
|
12
|
+
import * as store from "./instructions/store";
|
|
13
|
+
export const RUN = [
|
|
14
|
+
/* 000 */ trap,
|
|
15
|
+
/* 001 */ fallthrough,
|
|
16
|
+
INVALID,
|
|
17
|
+
INVALID,
|
|
18
|
+
INVALID,
|
|
19
|
+
INVALID,
|
|
20
|
+
INVALID,
|
|
21
|
+
INVALID,
|
|
22
|
+
INVALID,
|
|
23
|
+
INVALID,
|
|
24
|
+
/* 010 */ ecalli,
|
|
25
|
+
INVALID,
|
|
26
|
+
INVALID,
|
|
27
|
+
INVALID,
|
|
28
|
+
INVALID,
|
|
29
|
+
INVALID,
|
|
30
|
+
INVALID,
|
|
31
|
+
INVALID,
|
|
32
|
+
INVALID,
|
|
33
|
+
INVALID,
|
|
34
|
+
/* 020 */ load.load_imm_64,
|
|
35
|
+
INVALID,
|
|
36
|
+
INVALID,
|
|
37
|
+
INVALID,
|
|
38
|
+
INVALID,
|
|
39
|
+
INVALID,
|
|
40
|
+
INVALID,
|
|
41
|
+
INVALID,
|
|
42
|
+
INVALID,
|
|
43
|
+
INVALID,
|
|
44
|
+
/* 030 */ store.store_imm_u8,
|
|
45
|
+
/* 031 */ store.store_imm_u16,
|
|
46
|
+
/* 032 */ store.store_imm_u32,
|
|
47
|
+
/* 033 */ store.store_imm_u64,
|
|
48
|
+
INVALID,
|
|
49
|
+
INVALID,
|
|
50
|
+
INVALID,
|
|
51
|
+
INVALID,
|
|
52
|
+
INVALID,
|
|
53
|
+
INVALID,
|
|
54
|
+
/* 040 */ jump.jump,
|
|
55
|
+
INVALID,
|
|
56
|
+
INVALID,
|
|
57
|
+
INVALID,
|
|
58
|
+
INVALID,
|
|
59
|
+
INVALID,
|
|
60
|
+
INVALID,
|
|
61
|
+
INVALID,
|
|
62
|
+
INVALID,
|
|
63
|
+
INVALID,
|
|
64
|
+
/* 050 */ jump.jump_ind,
|
|
65
|
+
/* 051 */ load.load_imm,
|
|
66
|
+
/* 052 */ load.load_u8,
|
|
67
|
+
/* 053 */ load.load_i8,
|
|
68
|
+
/* 054 */ load.load_u16,
|
|
69
|
+
/* 055 */ load.load_i16,
|
|
70
|
+
/* 056 */ load.load_u32,
|
|
71
|
+
/* 057 */ load.load_i32,
|
|
72
|
+
/* 058 */ load.load_u64,
|
|
73
|
+
/* 059 */ store.store_u8,
|
|
74
|
+
/* 060 */ store.store_u16,
|
|
75
|
+
/* 061 */ store.store_u32,
|
|
76
|
+
/* 062 */ store.store_u64,
|
|
77
|
+
INVALID,
|
|
78
|
+
INVALID,
|
|
79
|
+
INVALID,
|
|
80
|
+
INVALID,
|
|
81
|
+
INVALID,
|
|
82
|
+
INVALID,
|
|
83
|
+
INVALID,
|
|
84
|
+
/* 070 */ store.store_imm_ind_u8,
|
|
85
|
+
/* 071 */ store.store_imm_ind_u16,
|
|
86
|
+
/* 072 */ store.store_imm_ind_u32,
|
|
87
|
+
/* 073 */ store.store_imm_ind_u64,
|
|
88
|
+
INVALID,
|
|
89
|
+
INVALID,
|
|
90
|
+
INVALID,
|
|
91
|
+
INVALID,
|
|
92
|
+
INVALID,
|
|
93
|
+
INVALID,
|
|
94
|
+
/* 080 */ jump.load_imm_jump,
|
|
95
|
+
/* 081 */ branch.branch_eq_imm,
|
|
96
|
+
/* 082 */ branch.branch_ne_imm,
|
|
97
|
+
/* 083 */ branch.branch_lt_u_imm,
|
|
98
|
+
/* 084 */ branch.branch_le_u_imm,
|
|
99
|
+
/* 085 */ branch.branch_ge_u_imm,
|
|
100
|
+
/* 086 */ branch.branch_gt_u_imm,
|
|
101
|
+
/* 087 */ branch.branch_lt_s_imm,
|
|
102
|
+
/* 088 */ branch.branch_le_s_imm,
|
|
103
|
+
/* 089 */ branch.branch_ge_s_imm,
|
|
104
|
+
/* 090 */ branch.branch_gt_s_imm,
|
|
105
|
+
INVALID,
|
|
106
|
+
INVALID,
|
|
107
|
+
INVALID,
|
|
108
|
+
INVALID,
|
|
109
|
+
INVALID,
|
|
110
|
+
INVALID,
|
|
111
|
+
INVALID,
|
|
112
|
+
INVALID,
|
|
113
|
+
INVALID,
|
|
114
|
+
/* 100 */ mov.move_reg,
|
|
115
|
+
/* 101 */ sbrk,
|
|
116
|
+
/* 102 */ bit.count_set_bits_64,
|
|
117
|
+
/* 103 */ bit.count_set_bits_32,
|
|
118
|
+
/* 104 */ bit.leading_zero_bits_64,
|
|
119
|
+
/* 105 */ bit.leading_zero_bits_32,
|
|
120
|
+
/* 106 */ bit.trailing_zero_bits_64,
|
|
121
|
+
/* 107 */ bit.trailing_zero_bits_32,
|
|
122
|
+
/* 108 */ bit.sign_extend_8,
|
|
123
|
+
/* 109 */ bit.sign_extend_16,
|
|
124
|
+
/* 110 */ bit.zero_extend_16,
|
|
125
|
+
/* 111 */ bit.reverse_bytes,
|
|
126
|
+
INVALID,
|
|
127
|
+
INVALID,
|
|
128
|
+
INVALID,
|
|
129
|
+
INVALID,
|
|
130
|
+
INVALID,
|
|
131
|
+
INVALID,
|
|
132
|
+
INVALID,
|
|
133
|
+
INVALID,
|
|
134
|
+
/* 120 */ store.store_ind_u8,
|
|
135
|
+
/* 121 */ store.store_ind_u16,
|
|
136
|
+
/* 122 */ store.store_ind_u32,
|
|
137
|
+
/* 123 */ store.store_ind_u64,
|
|
138
|
+
/* 124 */ load.load_ind_u8,
|
|
139
|
+
/* 125 */ load.load_ind_i8,
|
|
140
|
+
/* 126 */ load.load_ind_u16,
|
|
141
|
+
/* 127 */ load.load_ind_i16,
|
|
142
|
+
/* 128 */ load.load_ind_u32,
|
|
143
|
+
/* 129 */ load.load_ind_i32,
|
|
144
|
+
/* 130 */ load.load_ind_u64,
|
|
145
|
+
/* 131 */ math.add_imm_32,
|
|
146
|
+
/* 132 */ logic.and_imm,
|
|
147
|
+
/* 133 */ logic.xor_imm,
|
|
148
|
+
/* 134 */ logic.or_imm,
|
|
149
|
+
/* 135 */ math.mul_imm_32,
|
|
150
|
+
/* 136 */ set.set_lt_u_imm,
|
|
151
|
+
/* 137 */ set.set_lt_s_imm,
|
|
152
|
+
/* 138 */ shift.shlo_l_imm_32,
|
|
153
|
+
/* 139 */ shift.shlo_r_imm_32,
|
|
154
|
+
/* 140 */ shift.shar_r_imm_32,
|
|
155
|
+
/* 141 */ math.neg_add_imm_32,
|
|
156
|
+
/* 142 */ set.set_gt_u_imm,
|
|
157
|
+
/* 143 */ set.set_gt_s_imm,
|
|
158
|
+
/* 144 */ shift.shlo_l_imm_alt_32,
|
|
159
|
+
/* 145 */ shift.shlo_r_imm_alt_32,
|
|
160
|
+
/* 146 */ shift.shar_r_imm_alt_32,
|
|
161
|
+
/* 147 */ mov.cmov_iz_imm,
|
|
162
|
+
/* 148 */ mov.cmov_nz_imm,
|
|
163
|
+
/* 149 */ math.add_imm,
|
|
164
|
+
/* 150 */ math.mul_imm,
|
|
165
|
+
/* 151 */ shift.shlo_l_imm,
|
|
166
|
+
/* 152 */ shift.shlo_r_imm,
|
|
167
|
+
/* 153 */ shift.shar_r_imm,
|
|
168
|
+
/* 154 */ math.neg_add_imm,
|
|
169
|
+
/* 155 */ shift.shlo_l_imm_alt,
|
|
170
|
+
/* 156 */ shift.shlo_r_imm_alt,
|
|
171
|
+
/* 157 */ shift.shar_r_imm_alt,
|
|
172
|
+
/* 158 */ rot.rot_r_64_imm,
|
|
173
|
+
/* 159 */ rot.rot_r_64_imm_alt,
|
|
174
|
+
/* 160 */ rot.rot_r_32_imm,
|
|
175
|
+
/* 161 */ rot.rot_r_32_imm_alt,
|
|
176
|
+
INVALID,
|
|
177
|
+
INVALID,
|
|
178
|
+
INVALID,
|
|
179
|
+
INVALID,
|
|
180
|
+
INVALID,
|
|
181
|
+
INVALID,
|
|
182
|
+
INVALID,
|
|
183
|
+
INVALID,
|
|
184
|
+
/* 170 */ branch.branch_eq,
|
|
185
|
+
/* 171 */ branch.branch_ne,
|
|
186
|
+
/* 172 */ branch.branch_lt_u,
|
|
187
|
+
/* 173 */ branch.branch_lt_s,
|
|
188
|
+
/* 174 */ branch.branch_ge_u,
|
|
189
|
+
/* 175 */ branch.branch_ge_s,
|
|
190
|
+
INVALID,
|
|
191
|
+
INVALID,
|
|
192
|
+
INVALID,
|
|
193
|
+
INVALID,
|
|
194
|
+
/* 180 */ jump.load_imm_jump_ind,
|
|
195
|
+
INVALID,
|
|
196
|
+
INVALID,
|
|
197
|
+
INVALID,
|
|
198
|
+
INVALID,
|
|
199
|
+
INVALID,
|
|
200
|
+
INVALID,
|
|
201
|
+
INVALID,
|
|
202
|
+
INVALID,
|
|
203
|
+
INVALID,
|
|
204
|
+
/* 190 */ math.add_32,
|
|
205
|
+
/* 191 */ math.sub_32,
|
|
206
|
+
/* 192 */ math.mul_32,
|
|
207
|
+
/* 193 */ math.div_u_32,
|
|
208
|
+
/* 194 */ math.div_s_32,
|
|
209
|
+
/* 195 */ math.rem_u_32,
|
|
210
|
+
/* 196 */ math.rem_s_32,
|
|
211
|
+
/* 197 */ shift.shlo_l_32,
|
|
212
|
+
/* 198 */ shift.shlo_r_32,
|
|
213
|
+
/* 199 */ shift.shar_r_32,
|
|
214
|
+
/* 200 */ math.add_64,
|
|
215
|
+
/* 201 */ math.sub,
|
|
216
|
+
/* 202 */ math.mul,
|
|
217
|
+
/* 203 */ math.div_u,
|
|
218
|
+
/* 204 */ math.div_s,
|
|
219
|
+
/* 205 */ math.rem_u,
|
|
220
|
+
/* 206 */ math.rem_s,
|
|
221
|
+
/* 207 */ shift.shlo_l,
|
|
222
|
+
/* 208 */ shift.shlo_r,
|
|
223
|
+
/* 209 */ shift.shar_r,
|
|
224
|
+
/* 210 */ logic.and,
|
|
225
|
+
/* 211 */ logic.xor,
|
|
226
|
+
/* 212 */ logic.or,
|
|
227
|
+
/* 213 */ math.mul_upper_s_s,
|
|
228
|
+
/* 214 */ math.mul_upper_u_u,
|
|
229
|
+
/* 215 */ math.mul_upper_s_u,
|
|
230
|
+
/* 216 */ set.set_lt_u,
|
|
231
|
+
/* 217 */ set.set_lt_s,
|
|
232
|
+
/* 218 */ mov.cmov_iz,
|
|
233
|
+
/* 219 */ mov.cmov_nz,
|
|
234
|
+
/* 220 */ rot.rot_l_64,
|
|
235
|
+
/* 221 */ rot.rot_l_32,
|
|
236
|
+
/* 222 */ rot.rot_r_64,
|
|
237
|
+
/* 223 */ rot.rot_r_32,
|
|
238
|
+
/* 224 */ logic.and_inv,
|
|
239
|
+
/* 225 */ logic.or_inv,
|
|
240
|
+
/* 226 */ logic.xnor,
|
|
241
|
+
/* 227 */ math.max,
|
|
242
|
+
/* 228 */ math.max_u,
|
|
243
|
+
/* 229 */ math.min,
|
|
244
|
+
/* 230 */ math.min_u,
|
|
245
|
+
];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Arguments } from "./arguments";
|
|
2
|
+
import { Gas } from "./gas";
|
|
3
|
+
export declare class Instruction {
|
|
4
|
+
name: string;
|
|
5
|
+
kind: Arguments;
|
|
6
|
+
gas: Gas;
|
|
7
|
+
isTerminating: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const MISSING_INSTRUCTION: Instruction;
|
|
10
|
+
export declare const SBRK: Instruction;
|
|
11
|
+
export declare const INSTRUCTIONS: Instruction[];
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { Arguments } from "./arguments";
|
|
2
|
+
export class Instruction {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.name = "";
|
|
5
|
+
this.kind = Arguments.Zero;
|
|
6
|
+
this.gas = i64(0);
|
|
7
|
+
this.isTerminating = false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function instruction(name, kind, gas, isTerminating = false) {
|
|
11
|
+
const i = new Instruction();
|
|
12
|
+
i.name = name;
|
|
13
|
+
i.kind = kind;
|
|
14
|
+
i.gas = i64(gas);
|
|
15
|
+
i.isTerminating = isTerminating;
|
|
16
|
+
return i;
|
|
17
|
+
}
|
|
18
|
+
export const MISSING_INSTRUCTION = instruction("INVALID", Arguments.Zero, 1, false);
|
|
19
|
+
export const SBRK = instruction("SBRK", Arguments.TwoReg, 1);
|
|
20
|
+
export const INSTRUCTIONS = [
|
|
21
|
+
/* 000 */ instruction("TRAP", Arguments.Zero, 1, true),
|
|
22
|
+
/* 001 */ instruction("FALLTHROUGH", Arguments.Zero, 1, true),
|
|
23
|
+
MISSING_INSTRUCTION,
|
|
24
|
+
MISSING_INSTRUCTION,
|
|
25
|
+
MISSING_INSTRUCTION,
|
|
26
|
+
MISSING_INSTRUCTION,
|
|
27
|
+
MISSING_INSTRUCTION,
|
|
28
|
+
MISSING_INSTRUCTION,
|
|
29
|
+
MISSING_INSTRUCTION,
|
|
30
|
+
MISSING_INSTRUCTION,
|
|
31
|
+
/* 010 */ instruction("ECALLI", Arguments.OneImm, 1),
|
|
32
|
+
MISSING_INSTRUCTION,
|
|
33
|
+
MISSING_INSTRUCTION,
|
|
34
|
+
MISSING_INSTRUCTION,
|
|
35
|
+
MISSING_INSTRUCTION,
|
|
36
|
+
MISSING_INSTRUCTION,
|
|
37
|
+
MISSING_INSTRUCTION,
|
|
38
|
+
MISSING_INSTRUCTION,
|
|
39
|
+
MISSING_INSTRUCTION,
|
|
40
|
+
MISSING_INSTRUCTION,
|
|
41
|
+
/* 020 */ instruction("LOAD_IMM_64", Arguments.OneRegOneExtImm, 1),
|
|
42
|
+
MISSING_INSTRUCTION,
|
|
43
|
+
MISSING_INSTRUCTION,
|
|
44
|
+
MISSING_INSTRUCTION,
|
|
45
|
+
MISSING_INSTRUCTION,
|
|
46
|
+
MISSING_INSTRUCTION,
|
|
47
|
+
MISSING_INSTRUCTION,
|
|
48
|
+
MISSING_INSTRUCTION,
|
|
49
|
+
MISSING_INSTRUCTION,
|
|
50
|
+
MISSING_INSTRUCTION,
|
|
51
|
+
/* 030 */ instruction("STORE_IMM_U8", Arguments.TwoImm, 1),
|
|
52
|
+
/* 031 */ instruction("STORE_IMM_U16", Arguments.TwoImm, 1),
|
|
53
|
+
/* 032 */ instruction("STORE_IMM_U32", Arguments.TwoImm, 1),
|
|
54
|
+
/* 033 */ instruction("STORE_IMM_U64", Arguments.TwoImm, 1),
|
|
55
|
+
MISSING_INSTRUCTION,
|
|
56
|
+
MISSING_INSTRUCTION,
|
|
57
|
+
MISSING_INSTRUCTION,
|
|
58
|
+
MISSING_INSTRUCTION,
|
|
59
|
+
MISSING_INSTRUCTION,
|
|
60
|
+
MISSING_INSTRUCTION,
|
|
61
|
+
/* 040 */ instruction("JUMP", Arguments.OneOff, 1, true),
|
|
62
|
+
MISSING_INSTRUCTION,
|
|
63
|
+
MISSING_INSTRUCTION,
|
|
64
|
+
MISSING_INSTRUCTION,
|
|
65
|
+
MISSING_INSTRUCTION,
|
|
66
|
+
MISSING_INSTRUCTION,
|
|
67
|
+
MISSING_INSTRUCTION,
|
|
68
|
+
MISSING_INSTRUCTION,
|
|
69
|
+
MISSING_INSTRUCTION,
|
|
70
|
+
MISSING_INSTRUCTION,
|
|
71
|
+
/* 050 */ instruction("JUMP_IND", Arguments.OneRegOneImm, 1, true),
|
|
72
|
+
/* 051 */ instruction("LOAD_IMM", Arguments.OneRegOneImm, 1),
|
|
73
|
+
/* 052 */ instruction("LOAD_U8", Arguments.OneRegOneImm, 1),
|
|
74
|
+
/* 053 */ instruction("LOAD_I8", Arguments.OneRegOneImm, 1),
|
|
75
|
+
/* 054 */ instruction("LOAD_U16", Arguments.OneRegOneImm, 1),
|
|
76
|
+
/* 055 */ instruction("LOAD_I16", Arguments.OneRegOneImm, 1),
|
|
77
|
+
/* 056 */ instruction("LOAD_U32", Arguments.OneRegOneImm, 1),
|
|
78
|
+
/* 057 */ instruction("LOAD_I32", Arguments.OneRegOneImm, 1),
|
|
79
|
+
/* 058 */ instruction("LOAD_U64", Arguments.OneRegOneImm, 1),
|
|
80
|
+
/* 059 */ instruction("STORE_U8", Arguments.OneRegOneImm, 1),
|
|
81
|
+
/* 060 */ instruction("STORE_U16", Arguments.OneRegOneImm, 1),
|
|
82
|
+
/* 061 */ instruction("STORE_U32", Arguments.OneRegOneImm, 1),
|
|
83
|
+
/* 062 */ instruction("STORE_U64", Arguments.OneRegOneImm, 1),
|
|
84
|
+
MISSING_INSTRUCTION,
|
|
85
|
+
MISSING_INSTRUCTION,
|
|
86
|
+
MISSING_INSTRUCTION,
|
|
87
|
+
MISSING_INSTRUCTION,
|
|
88
|
+
MISSING_INSTRUCTION,
|
|
89
|
+
MISSING_INSTRUCTION,
|
|
90
|
+
MISSING_INSTRUCTION,
|
|
91
|
+
/* 070 */ instruction("STORE_IMM_IND_U8", Arguments.OneRegTwoImm, 1),
|
|
92
|
+
/* 071 */ instruction("STORE_IMM_IND_U16", Arguments.OneRegTwoImm, 1),
|
|
93
|
+
/* 072 */ instruction("STORE_IMM_IND_U32", Arguments.OneRegTwoImm, 1),
|
|
94
|
+
/* 073 */ instruction("STORE_IMM_IND_U64", Arguments.OneRegTwoImm, 1),
|
|
95
|
+
MISSING_INSTRUCTION,
|
|
96
|
+
MISSING_INSTRUCTION,
|
|
97
|
+
MISSING_INSTRUCTION,
|
|
98
|
+
MISSING_INSTRUCTION,
|
|
99
|
+
MISSING_INSTRUCTION,
|
|
100
|
+
MISSING_INSTRUCTION,
|
|
101
|
+
/* 080 */ instruction("LOAD_IMM_JUMP", Arguments.OneRegOneImmOneOff, 1, true),
|
|
102
|
+
/* 081 */ instruction("BRANCH_EQ_IMM", Arguments.OneRegOneImmOneOff, 1, true),
|
|
103
|
+
/* 082 */ instruction("BRANCH_NE_IMM", Arguments.OneRegOneImmOneOff, 1, true),
|
|
104
|
+
/* 083 */ instruction("BRANCH_LT_U_IMM", Arguments.OneRegOneImmOneOff, 1, true),
|
|
105
|
+
/* 084 */ instruction("BRANCH_LE_U_IMM", Arguments.OneRegOneImmOneOff, 1, true),
|
|
106
|
+
/* 085 */ instruction("BRANCH_GE_U_IMM", Arguments.OneRegOneImmOneOff, 1, true),
|
|
107
|
+
/* 086 */ instruction("BRANCH_GT_U_IMM", Arguments.OneRegOneImmOneOff, 1, true),
|
|
108
|
+
/* 087 */ instruction("BRANCH_LT_S_IMM", Arguments.OneRegOneImmOneOff, 1, true),
|
|
109
|
+
/* 088 */ instruction("BRANCH_LE_S_IMM", Arguments.OneRegOneImmOneOff, 1, true),
|
|
110
|
+
/* 089 */ instruction("BRANCH_GE_S_IMM", Arguments.OneRegOneImmOneOff, 1, true),
|
|
111
|
+
/* 090 */ instruction("BRANCH_GT_S_IMM", Arguments.OneRegOneImmOneOff, 1, true),
|
|
112
|
+
MISSING_INSTRUCTION,
|
|
113
|
+
MISSING_INSTRUCTION,
|
|
114
|
+
MISSING_INSTRUCTION,
|
|
115
|
+
MISSING_INSTRUCTION,
|
|
116
|
+
MISSING_INSTRUCTION,
|
|
117
|
+
MISSING_INSTRUCTION,
|
|
118
|
+
MISSING_INSTRUCTION,
|
|
119
|
+
MISSING_INSTRUCTION,
|
|
120
|
+
MISSING_INSTRUCTION,
|
|
121
|
+
/* 100 */ instruction("MOVE_REG", Arguments.TwoReg, 1),
|
|
122
|
+
/* 101 */ SBRK,
|
|
123
|
+
/* 102 */ instruction("COUNT_SET_BITS_64", Arguments.TwoReg, 1),
|
|
124
|
+
/* 103 */ instruction("COUNT_SET_BITS_32", Arguments.TwoReg, 1),
|
|
125
|
+
/* 104 */ instruction("LEADING_ZERO_BITS_64", Arguments.TwoReg, 1),
|
|
126
|
+
/* 105 */ instruction("LEADING_ZERO_BITS_32", Arguments.TwoReg, 1),
|
|
127
|
+
/* 106 */ instruction("TRAILING_ZERO_BITS_64", Arguments.TwoReg, 1),
|
|
128
|
+
/* 107 */ instruction("TRAILING_ZERO_BITS_32", Arguments.TwoReg, 1),
|
|
129
|
+
/* 108 */ instruction("SIGN_EXTEND_8", Arguments.TwoReg, 1),
|
|
130
|
+
/* 109 */ instruction("SIGN_EXTEND_16", Arguments.TwoReg, 1),
|
|
131
|
+
/* 110 */ instruction("ZERO_EXTEND_16", Arguments.TwoReg, 1),
|
|
132
|
+
/* 111 */ instruction("REVERSE_BYTES", Arguments.TwoReg, 1),
|
|
133
|
+
MISSING_INSTRUCTION,
|
|
134
|
+
MISSING_INSTRUCTION,
|
|
135
|
+
MISSING_INSTRUCTION,
|
|
136
|
+
MISSING_INSTRUCTION,
|
|
137
|
+
MISSING_INSTRUCTION,
|
|
138
|
+
MISSING_INSTRUCTION,
|
|
139
|
+
MISSING_INSTRUCTION,
|
|
140
|
+
MISSING_INSTRUCTION,
|
|
141
|
+
/* 120 */ instruction("STORE_IND_U8", Arguments.TwoRegOneImm, 1),
|
|
142
|
+
/* 121 */ instruction("STORE_IND_U16", Arguments.TwoRegOneImm, 1),
|
|
143
|
+
/* 122 */ instruction("STORE_IND_U32", Arguments.TwoRegOneImm, 1),
|
|
144
|
+
/* 123 */ instruction("STORE_IND_U64", Arguments.TwoRegOneImm, 1),
|
|
145
|
+
/* 124 */ instruction("LOAD_IND_U8", Arguments.TwoRegOneImm, 1),
|
|
146
|
+
/* 125 */ instruction("LOAD_IND_I8", Arguments.TwoRegOneImm, 1),
|
|
147
|
+
/* 126 */ instruction("LOAD_IND_U16", Arguments.TwoRegOneImm, 1),
|
|
148
|
+
/* 127 */ instruction("LOAD_IND_I16", Arguments.TwoRegOneImm, 1),
|
|
149
|
+
/* 128 */ instruction("LOAD_IND_U32", Arguments.TwoRegOneImm, 1),
|
|
150
|
+
/* 129 */ instruction("LOAD_IND_I32", Arguments.TwoRegOneImm, 1),
|
|
151
|
+
/* 130 */ instruction("LOAD_IND_U64", Arguments.TwoRegOneImm, 1),
|
|
152
|
+
/* 131 */ instruction("ADD_IMM_32", Arguments.TwoRegOneImm, 1),
|
|
153
|
+
/* 132 */ instruction("AND_IMM", Arguments.TwoRegOneImm, 1),
|
|
154
|
+
/* 133 */ instruction("XOR_IMM", Arguments.TwoRegOneImm, 1),
|
|
155
|
+
/* 134 */ instruction("OR_IMM", Arguments.TwoRegOneImm, 1),
|
|
156
|
+
/* 135 */ instruction("MUL_IMM_32", Arguments.TwoRegOneImm, 1),
|
|
157
|
+
/* 136 */ instruction("SET_LT_U_IMM", Arguments.TwoRegOneImm, 1),
|
|
158
|
+
/* 137 */ instruction("SET_LT_S_IMM", Arguments.TwoRegOneImm, 1),
|
|
159
|
+
/* 138 */ instruction("SHLO_L_IMM_32", Arguments.TwoRegOneImm, 1),
|
|
160
|
+
/* 139 */ instruction("SHLO_R_IMM_32", Arguments.TwoRegOneImm, 1),
|
|
161
|
+
/* 140 */ instruction("SHAR_R_IMM_32", Arguments.TwoRegOneImm, 1),
|
|
162
|
+
/* 141 */ instruction("NEG_ADD_IMM_32", Arguments.TwoRegOneImm, 1),
|
|
163
|
+
/* 142 */ instruction("SET_GT_U_IMM", Arguments.TwoRegOneImm, 1),
|
|
164
|
+
/* 143 */ instruction("SET_GT_S_IMM", Arguments.TwoRegOneImm, 1),
|
|
165
|
+
/* 144 */ instruction("SHLO_L_IMM_ALT_32", Arguments.TwoRegOneImm, 1),
|
|
166
|
+
/* 145 */ instruction("SHLO_R_IMM_ALT_32", Arguments.TwoRegOneImm, 1),
|
|
167
|
+
/* 146 */ instruction("SHAR_R_IMM_ALT_32", Arguments.TwoRegOneImm, 1),
|
|
168
|
+
/* 147 */ instruction("CMOV_IZ_IMM", Arguments.TwoRegOneImm, 1),
|
|
169
|
+
/* 148 */ instruction("CMOV_NZ_IMM", Arguments.TwoRegOneImm, 1),
|
|
170
|
+
/* 149 */ instruction("ADD_IMM_64", Arguments.TwoRegOneImm, 1),
|
|
171
|
+
/* 150 */ instruction("MUL_IMM_64", Arguments.TwoRegOneImm, 1),
|
|
172
|
+
/* 151 */ instruction("SHLO_L_IMM_64", Arguments.TwoRegOneImm, 1),
|
|
173
|
+
/* 152 */ instruction("SHLO_R_IMM_64", Arguments.TwoRegOneImm, 1),
|
|
174
|
+
/* 153 */ instruction("SHAR_R_IMM_64", Arguments.TwoRegOneImm, 1),
|
|
175
|
+
/* 154 */ instruction("NEG_ADD_IMM_64", Arguments.TwoRegOneImm, 1),
|
|
176
|
+
/* 155 */ instruction("SHLO_L_IMM_ALT_64", Arguments.TwoRegOneImm, 1),
|
|
177
|
+
/* 156 */ instruction("SHLO_R_IMM_ALT_64", Arguments.TwoRegOneImm, 1),
|
|
178
|
+
/* 157 */ instruction("SHAR_R_IMM_ALT_64", Arguments.TwoRegOneImm, 1),
|
|
179
|
+
/* 158 */ instruction("ROT_R_64_IMM", Arguments.TwoRegOneImm, 1),
|
|
180
|
+
/* 159 */ instruction("ROT_R_64_IMM_ALT", Arguments.TwoRegOneImm, 1),
|
|
181
|
+
/* 160 */ instruction("ROT_R_32_IMM", Arguments.TwoRegOneImm, 1),
|
|
182
|
+
/* 161 */ instruction("ROT_R_32_IMM_ALT", Arguments.TwoRegOneImm, 1),
|
|
183
|
+
MISSING_INSTRUCTION,
|
|
184
|
+
MISSING_INSTRUCTION,
|
|
185
|
+
MISSING_INSTRUCTION,
|
|
186
|
+
MISSING_INSTRUCTION,
|
|
187
|
+
MISSING_INSTRUCTION,
|
|
188
|
+
MISSING_INSTRUCTION,
|
|
189
|
+
MISSING_INSTRUCTION,
|
|
190
|
+
MISSING_INSTRUCTION,
|
|
191
|
+
/* 170 */ instruction("BRANCH_EQ", Arguments.TwoRegOneOff, 1, true),
|
|
192
|
+
/* 171 */ instruction("BRANCH_NE", Arguments.TwoRegOneOff, 1, true),
|
|
193
|
+
/* 172 */ instruction("BRANCH_LT_U", Arguments.TwoRegOneOff, 1, true),
|
|
194
|
+
/* 173 */ instruction("BRANCH_LT_S", Arguments.TwoRegOneOff, 1, true),
|
|
195
|
+
/* 174 */ instruction("BRANCH_GE_U", Arguments.TwoRegOneOff, 1, true),
|
|
196
|
+
/* 175 */ instruction("BRANCH_GE_S", Arguments.TwoRegOneOff, 1, true),
|
|
197
|
+
MISSING_INSTRUCTION,
|
|
198
|
+
MISSING_INSTRUCTION,
|
|
199
|
+
MISSING_INSTRUCTION,
|
|
200
|
+
MISSING_INSTRUCTION,
|
|
201
|
+
/* 180 */ instruction("LOAD_IMM_JUMP_IND", Arguments.TwoRegTwoImm, 1, true),
|
|
202
|
+
MISSING_INSTRUCTION,
|
|
203
|
+
MISSING_INSTRUCTION,
|
|
204
|
+
MISSING_INSTRUCTION,
|
|
205
|
+
MISSING_INSTRUCTION,
|
|
206
|
+
MISSING_INSTRUCTION,
|
|
207
|
+
MISSING_INSTRUCTION,
|
|
208
|
+
MISSING_INSTRUCTION,
|
|
209
|
+
MISSING_INSTRUCTION,
|
|
210
|
+
MISSING_INSTRUCTION,
|
|
211
|
+
/* 190 */ instruction("ADD_32", Arguments.ThreeReg, 1),
|
|
212
|
+
/* 191 */ instruction("SUB_32", Arguments.ThreeReg, 1),
|
|
213
|
+
/* 192 */ instruction("MUL_32", Arguments.ThreeReg, 1),
|
|
214
|
+
/* 193 */ instruction("DIV_U_32", Arguments.ThreeReg, 1),
|
|
215
|
+
/* 194 */ instruction("DIV_S_32", Arguments.ThreeReg, 1),
|
|
216
|
+
/* 195 */ instruction("REM_U_32", Arguments.ThreeReg, 1),
|
|
217
|
+
/* 196 */ instruction("REM_S_32", Arguments.ThreeReg, 1),
|
|
218
|
+
/* 197 */ instruction("SHLO_L_32", Arguments.ThreeReg, 1),
|
|
219
|
+
/* 198 */ instruction("SHLO_R_32", Arguments.ThreeReg, 1),
|
|
220
|
+
/* 199 */ instruction("SHAR_R_32", Arguments.ThreeReg, 1),
|
|
221
|
+
/* 200 */ instruction("ADD_64", Arguments.ThreeReg, 1),
|
|
222
|
+
/* 201 */ instruction("SUB_64", Arguments.ThreeReg, 1),
|
|
223
|
+
/* 202 */ instruction("MUL_64", Arguments.ThreeReg, 1),
|
|
224
|
+
/* 203 */ instruction("DIV_U_64", Arguments.ThreeReg, 1),
|
|
225
|
+
/* 204 */ instruction("DIV_S_64", Arguments.ThreeReg, 1),
|
|
226
|
+
/* 205 */ instruction("REM_U_64", Arguments.ThreeReg, 1),
|
|
227
|
+
/* 206 */ instruction("REM_S_64", Arguments.ThreeReg, 1),
|
|
228
|
+
/* 207 */ instruction("SHLO_L_64", Arguments.ThreeReg, 1),
|
|
229
|
+
/* 208 */ instruction("SHLO_R_64", Arguments.ThreeReg, 1),
|
|
230
|
+
/* 209 */ instruction("SHAR_R_64", Arguments.ThreeReg, 1),
|
|
231
|
+
/* 210 */ instruction("AND", Arguments.ThreeReg, 1),
|
|
232
|
+
/* 211 */ instruction("XOR", Arguments.ThreeReg, 1),
|
|
233
|
+
/* 212 */ instruction("OR", Arguments.ThreeReg, 1),
|
|
234
|
+
/* 213 */ instruction("MUL_UPPER_S_S", Arguments.ThreeReg, 1),
|
|
235
|
+
/* 214 */ instruction("MUL_UPPER_U_U", Arguments.ThreeReg, 1),
|
|
236
|
+
/* 215 */ instruction("MUL_UPPER_S_U", Arguments.ThreeReg, 1),
|
|
237
|
+
/* 216 */ instruction("SET_LT_U", Arguments.ThreeReg, 1),
|
|
238
|
+
/* 217 */ instruction("SET_LT_S", Arguments.ThreeReg, 1),
|
|
239
|
+
/* 218 */ instruction("CMOV_IZ", Arguments.ThreeReg, 1),
|
|
240
|
+
/* 219 */ instruction("CMOV_NZ", Arguments.ThreeReg, 1),
|
|
241
|
+
/* 220 */ instruction("ROT_L_64", Arguments.ThreeReg, 1),
|
|
242
|
+
/* 221 */ instruction("ROT_L_32", Arguments.ThreeReg, 1),
|
|
243
|
+
/* 222 */ instruction("ROT_R_64", Arguments.ThreeReg, 1),
|
|
244
|
+
/* 223 */ instruction("ROT_R_32", Arguments.ThreeReg, 1),
|
|
245
|
+
/* 224 */ instruction("AND_INV", Arguments.ThreeReg, 1),
|
|
246
|
+
/* 225 */ instruction("OR_INV", Arguments.ThreeReg, 1),
|
|
247
|
+
/* 226 */ instruction("XNOR", Arguments.ThreeReg, 1),
|
|
248
|
+
/* 227 */ instruction("MAX", Arguments.ThreeReg, 1),
|
|
249
|
+
/* 228 */ instruction("MAX_U", Arguments.ThreeReg, 1),
|
|
250
|
+
/* 229 */ instruction("MIN", Arguments.ThreeReg, 1),
|
|
251
|
+
/* 230 */ instruction("MIN_U", Arguments.ThreeReg, 1),
|
|
252
|
+
];
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { GasCounter } from "./gas";
|
|
2
|
+
import { Memory } from "./memory";
|
|
3
|
+
import { Program } from "./program";
|
|
4
|
+
import { Registers } from "./registers";
|
|
5
|
+
export declare enum Status {
|
|
6
|
+
OK = -1,
|
|
7
|
+
HALT = 0,
|
|
8
|
+
PANIC = 1,
|
|
9
|
+
FAULT = 2,
|
|
10
|
+
HOST = 3,
|
|
11
|
+
OOG = 4
|
|
12
|
+
}
|
|
13
|
+
export declare class Interpreter {
|
|
14
|
+
readonly program: Program;
|
|
15
|
+
readonly registers: Registers;
|
|
16
|
+
readonly memory: Memory;
|
|
17
|
+
readonly gas: GasCounter;
|
|
18
|
+
pc: u32;
|
|
19
|
+
status: Status;
|
|
20
|
+
exitCode: u32;
|
|
21
|
+
nextPc: u32;
|
|
22
|
+
useSbrkGas: boolean;
|
|
23
|
+
private djumpRes;
|
|
24
|
+
private argsRes;
|
|
25
|
+
private outcomeRes;
|
|
26
|
+
private branchRes;
|
|
27
|
+
constructor(program: Program, registers: Registers, memory?: Memory);
|
|
28
|
+
nextSteps(nSteps?: u32): boolean;
|
|
29
|
+
}
|