Each SchemeStation VM instruction has a unique number (0-255) for the binary representation of the instructions.
0 | NOP | |
1 | HALT | |
2 | JUMP | REG |
3 | JUMP_IMMEDIATE | LABEL |
4 | BRANCH | REG REG |
5 | BRANCH_IMMEDIATE | REG LABEL |
6 | PUSH | REG REG |
7 | POP | REG REG |
8 | SET_EXCEPTION_HANDLER | REG |
9 | ENABLE_EXCEPTIONS | |
10 | DISABLE_EXCEPTIONS | |
11 | SEND_MESSAGE | REG REG |
12 | GET_MESSAGE | REG |
13 | PUT_MESSAGE | REG |
14 | CREATE_PROCEDURE | REG REG REG |
15 | GET_PROCEDURE_ENV | REG REG |
16 | GET_PROCEDURE_ADDRESS | REG REG |
17 | IS_OF_BOOLEAN | REG REG |
18 | IS_OF_INTEGER | REG REG |
19 | IS_OF_FLOAT | REG REG |
20 | IS_OF_PAIR | REG REG |
21 | IS_OF_PAIR_TAGGED | REG REG REG |
22 | IS_OF_VECTOR | REG REG |
23 | IS_OF_VECTOR_TAGGED | REG REG REG |
24 | IS_OF_PRIVATE_BIT_STRING | REG REG |
25 | IS_OF_PRIVATE_BIT_STRING_TAGGED | REG REG REG |
26 | IS_OF_SHARED_BIT_STRING | REG REG |
27 | IS_OF_SHARED_BIT_STRING_TAGGED | REG REG REG |
28 | IS_OF_PROCEDURE | REG REG |
29 | IS_OF_ACTOR_ADDRESS | REG REG |
30 | IS_OF_BYTE_CODE | REG REG |
31 | MOVE | REG REG |
32 | LOAD | REG LITERAL |
33 | LOAD_NULL | REG |
34 | INT_ADD | REG REG REG |
35 | INT_SUB | REG REG REG |
36 | INT_MUL | REG REG REG |
37 | INT_DIV | REG REG REG |
38 | INT_MOD | REG REG REG |
39 | INT_REM | REG REG REG |
40 | FLOAT_ADD | REG REG REG |
41 | FLOAT_SUB | REG REG REG |
42 | FLOAT_MUL | REG REG REG |
43 | FLOAT_DIV | REG REG REG |
44 | FLOAT_MOD | REG REG REG |
45 | FLOAT_REM | REG REG REG |
46 | FLOAT_LOG | REG REG |
47 | FLOAT_LOG10 | REG REG |
48 | FLOAT_EXP | REG REG |
49 | FLOAT_SQRT | REG REG |
50 | SHR | REG REG REG |
51 | SHL | REG REG REG |
52 | AND | REG REG REG |
53 | OR | REG REG REG |
54 | XOR | REG REG REG |
55 | NEG | REG REG |
56 | ROR | REG REG REG |
57 | ROL | REG REG REG |
58 | LAND | REG REG REG |
59 | LOR | REG REG REG |
60 | NOT | REG REG |
61 | BOOLEAN_NOT | REG REG |
62 | INT_TO_FLOAT | REG REG |
63 | FLOAT_TO_INT | REG REG |
64 | INT_TO_BIT_STRING | REG REG REG |
65 | BIT_STRING_TO_INT | REG REG REG |
66 | EQ | REG REG REG |
67 | INT_CMP | REG REG REG |
68 | FLOAT_CMP | REG REG REG |
69 | INT_GE | REG REG REG |
70 | FLOAT_GE | REG REG REG |
71 | GET_SUBSTRING | REG REG REG REG |
72 | SET_SUBSTRING | REG REG REG |
73 | ALLOC_PAIR | REG |
74 | ALLOC_PAIR_TAGGED | REG REG |
75 | ALLOC_VECTOR | REG REG |
76 | ALLOC_VECTOR_TAGGED | REG REG REG |
77 | ALLOC_SHARED_BIT_STRING | REG REG |
78 | ALLOC_SHARED_BIT_STRING_TAGGED | REG REG REG |
79 | ALLOC_PRIVATE_BIT_STRING | REG REG |
80 | ALLOC_PRIVATE_BIT_STRING_TAGGED | REG REG REG |
81 | PAIR_SET_CAR | REG REG |
82 | PAIR_SET_CDR | REG REG |
83 | PAIR_GET_CAR | REG REG |
84 | PAIR_GET_CDR | REG REG |
85 | VECTOR_SET | REG REG REG |
86 | VECTOR_GET | REG REG REG |
87 | VECTOR_SET_INDEX | REG REG LITERAL |
88 | VECTOR_GET_INDEX | REG REG LITERAL |
89 | VECTOR_LEN | REG REG |
90 | BIT_STRING_LEN | REG REG |
91 | COPY_PAIR | REG REG |
92 | COPY_VECTOR | REG REG |
93 | COPY_BIT_STRING | REG REG |
94 | CONS | REG REG REG |
95 | SAVE | REG REG |
96 | RESTORE | REG REG |
97 | ALLOC_INTEGER | REG |
98 | ALLOC_FLOAT | REG |
99 | ALLOC_BOOLEAN | REG |
100 | INTEGER_SET | REG REG |
101 | FLOAT_SET | REG REG |
102 | BOOLEAN_SET | REG REG |
103 | INTEGER_GET | REG REG |
104 | FLOAT_GET | REG REG |
105 | BOOLEAN_GET | REG REG |
106 | PAIR_GET_CAR_OR_BLOCK | REG REG |
107 | ALLOC_VECTOR_IMMEDIATE | REG LITERAL |
108 | CREATE_PROCEDURE_IMMEDIATE | REG REG LABEL |
109 | SAVE_IMMEDIATE | REG LITERAL |
110 | RESTORE_IMMEDIATE | REG LITERAL |
111 | BIT_STRING_CMP | REG REG REG |
112 | BIT_STRING_GE | REG REG REG |
113 | TAG_CMP | REG REG LITERAL |
114 | IMM_EXTEND | [special] |