-
Notifications
You must be signed in to change notification settings - Fork 0
/
instr.zig
71 lines (61 loc) · 877 Bytes
/
instr.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
pub const Instr = union(enum) {
global: Global,
local: usize,
pop: usize,
num: f64,
bool: bool,
null,
short_str: [8]u8,
long_str: packed struct {
index: u32,
len: u32,
},
nil,
cons,
decons,
lambda: packed struct {
caps: u32,
len: u32,
},
call,
tail_call,
pow,
pos,
neg,
mul,
div,
add,
sub,
eq,
ne,
lt,
le,
gt,
ge,
not,
jmp: usize,
jmp_back: usize,
jmp_if: usize,
ret,
yield,
no_match,
pub const Global = enum {
is_num,
is_bool,
is_null,
is_str,
is_list,
is_func,
str,
join,
print,
next,
send,
list,
map,
filter,
reduce,
count,
@"@str_send",
};
};