Add Glulxe and Git. They compile but don't work yet.
[rodin/chimara.git] / interpreters / git / labels.inc
1 // Pseudo-operations.
2
3 LABEL (jump_abs_L7)
4 LABEL (enter_function_L1)
5
6 LABEL (debug_step)
7
8 LABEL (args_stack_call_stub_discard)
9 LABEL (args_stack_call_stub_addr)
10 LABEL (args_stack_call_stub_local)
11 LABEL (args_stack_call_stub_stack)
12
13 LABEL (args_stack)
14 LABEL (args_0)
15 LABEL (args_1)
16 LABEL (args_2)
17 LABEL (args_3)
18
19 LABEL (call_stub_discard)
20 LABEL (call_stub_addr)
21 LABEL (call_stub_local)
22 LABEL (call_stub_stack)
23
24 LABEL (catch_stub_discard)
25 LABEL (catch_stub_addr)
26 LABEL (catch_stub_local)
27 LABEL (catch_stub_stack)
28
29 LABEL (save_stub_discard)
30 LABEL (save_stub_addr)
31 LABEL (save_stub_local)
32 LABEL (save_stub_stack)
33
34 LABEL (undo_stub_discard)
35 LABEL (undo_stub_addr)
36 LABEL (undo_stub_local)
37 LABEL (undo_stub_stack)
38
39 LABEL (tailcall)
40 LABEL (throw)
41
42 // Loading and storing registers.
43
44 #define LOAD_LABELS(tag)                        \
45         LABEL (L1_ ## tag)                              \
46         LABEL (L2_ ## tag)                              \
47         LABEL (L3_ ## tag)                              \
48         LABEL (L4_ ## tag)                              \
49         LABEL (L5_ ## tag)                              \
50         LABEL (L6_ ## tag)                              \
51         LABEL (L7_ ## tag)                              \
52         LABEL (L1_const_L2_ ## tag)             \
53         LABEL (L1_stack_L2_ ## tag)             \
54         LABEL (L1_local_L2_ ## tag)             \
55         LABEL (L1_addr_L2_ ## tag)
56
57 #define STORE_LABELS(tag)                       \
58         LABEL (S1_ ## tag)                              \
59         LABEL (S2_ ## tag)
60
61 LOAD_LABELS(const)
62 LOAD_LABELS(stack)
63 LOAD_LABELS(local)
64 LOAD_LABELS(addr)
65
66 STORE_LABELS(stack)
67 STORE_LABELS(local)
68 STORE_LABELS(addr)
69
70 LABEL(L1_addr16)
71 LABEL(L1_addr8)
72
73 LABEL(S1_addr16)
74 LABEL(S1_addr8)
75
76 #undef LOAD_LABELS
77 #undef STORE_LABELS
78
79 // Labels corresponding to glulx opcodes.
80
81 LABEL (nop)
82
83 #define PEEPHOLE_STORE_LABELS(tag) \
84         LABEL (add ## tag) \
85         LABEL (sub ## tag) \
86         LABEL (mul ## tag) \
87         LABEL (div ## tag) \
88         LABEL (mod ## tag) \
89         LABEL (neg ## tag) \
90         LABEL (bitand ## tag) \
91         LABEL (bitor ## tag) \
92         LABEL (bitxor ## tag) \
93         LABEL (bitnot ## tag) \
94         LABEL (shiftl ## tag) \
95         LABEL (sshiftr ## tag) \
96         LABEL (ushiftr ## tag) \
97         LABEL (copys ## tag) \
98         LABEL (copyb ## tag) \
99         LABEL (sexs ## tag) \
100         LABEL (sexb ## tag) \
101         LABEL (aload ## tag) \
102         LABEL (aloads ## tag) \
103         LABEL (aloadb ## tag) \
104         LABEL (aloadbit ## tag)
105
106 PEEPHOLE_STORE_LABELS(_discard)
107 PEEPHOLE_STORE_LABELS(_S1_stack)
108 PEEPHOLE_STORE_LABELS(_S1_local)
109 PEEPHOLE_STORE_LABELS(_S1_addr)
110
111 #define PEEPHOLE_LOAD_LABELS(tag) \
112         LABEL (return_L1_ ## tag) \
113         LABEL (astore_L3_ ## tag) \
114         LABEL (astores_L3_ ## tag) \
115         LABEL (astoreb_L3_ ## tag) \
116         LABEL (astorebit_L3_ ## tag)
117
118 PEEPHOLE_LOAD_LABELS(const)
119 PEEPHOLE_LOAD_LABELS(stack)
120 PEEPHOLE_LOAD_LABELS(addr)
121 PEEPHOLE_LOAD_LABELS(local)
122
123 LABEL (return)
124 LABEL (astore)
125 LABEL (astores)
126 LABEL (astoreb)
127 LABEL (astorebit)
128
129 #undef PEEPHOLE_STORE_LABELS
130
131 #define BRANCH_LABELS(tag)   \
132         LABEL (jump ## tag)  \
133         LABEL (jz ## tag)    \
134         LABEL (jnz ## tag)   \
135         LABEL (jeq ## tag)   \
136         LABEL (jne ## tag)   \
137         LABEL (jlt ## tag)   \
138         LABEL (jge ## tag)   \
139         LABEL (jgt ## tag)   \
140         LABEL (jle ## tag)   \
141         LABEL (jltu ## tag)  \
142         LABEL (jgeu ## tag)  \
143         LABEL (jgtu ## tag)  \
144         LABEL (jleu ## tag)
145
146 BRANCH_LABELS(_var)
147 BRANCH_LABELS(_const)
148 BRANCH_LABELS(_by)
149 BRANCH_LABELS(_return0)
150 BRANCH_LABELS(_return1)
151
152 LABEL (stkcount)
153 LABEL (stkpeek)
154 LABEL (stkswap)
155 LABEL (stkroll)
156 LABEL (stkcopy)
157
158 LABEL (streamchar)
159 LABEL (streamnum)
160 LABEL (streamstr)
161 LABEL (streamunichar)
162
163 LABEL (gestalt)
164 LABEL (debugtrap)
165 LABEL (getmemsize)
166 LABEL (setmemsize)
167 LABEL (jumpabs)
168
169 LABEL (random)
170 LABEL (setrandom)
171
172 LABEL (quit)
173 LABEL (verify)
174 LABEL (restart)
175 LABEL (restore)
176 LABEL (restoreundo)
177 LABEL (protect)
178
179 LABEL (glk)
180
181 LABEL (getstringtbl)
182 LABEL (setstringtbl)
183 LABEL (getiosys)
184 LABEL (setiosys)
185
186 LABEL (linearsearch)
187 LABEL (binarysearch)
188 LABEL (linkedsearch)
189
190 LABEL (mzero)
191 LABEL (mcopy)
192 LABEL (malloc)
193 LABEL (mfree)
194
195 LABEL (accelfunc)
196 LABEL (accelparam)
197
198 LABEL (git_setcacheram)
199 LABEL (git_prunecache)
200
201 LABEL (error_bad_opcode)
202 LABEL (recompile)
203
204 // No more labels to define.
205 #undef LABEL