blob: cc7fe361fc7f512c8d0a8ad7d689533f04b707e7 (
plain)
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
|
nop
rot (abc-bca)
-rot (abc-cab)
dup (x-xx)
swap (xy-yx)
over (xy-xyx)
drop (xy-x)
tuck (xy-yxy)
nip (xy-y)
lit (-l)
equal (xy-f)
nequal (xy-f)
add (xy-z)
sub (xy-z)
mul
div
neg
slt
ult
sle
ule
lod (a-d)
sto (da-)
push
pop
want:
calls (15 bits)
j, cj, relative addr, 8 bits
lit, 4 or 8 or 16 bits
mark,loc,ret, + 4bit arg
regular op, no arg (between 16 and 32 of these)
CALL (addr:15)
or
JMP (cond?:1) (rdst:rest)
or
(mark/loc/ret/lit4) (arg:4)
or
regular op (7 bits)
OPW:7: 1 T:2 arg:4
OPR:7: 0 opcode:6
that is,
00 - 3f regular opcodes (64 of them)
4x mark x
5x loc x
6x ret x
7x lit4 x
I: 0 0 (OPW|OPR) (OPW|OPR)
J: 0 1 0 cond? raddr:12
L: 0 1 1 value:13
C: 1 addr:15
|