Add Glulxe and Git. They compile but don't work yet.
[projects/chimara/chimara.git] / interpreters / git / labels.inc
diff --git a/interpreters/git/labels.inc b/interpreters/git/labels.inc
new file mode 100644 (file)
index 0000000..5268616
--- /dev/null
@@ -0,0 +1,205 @@
+// Pseudo-operations.
+
+LABEL (jump_abs_L7)
+LABEL (enter_function_L1)
+
+LABEL (debug_step)
+
+LABEL (args_stack_call_stub_discard)
+LABEL (args_stack_call_stub_addr)
+LABEL (args_stack_call_stub_local)
+LABEL (args_stack_call_stub_stack)
+
+LABEL (args_stack)
+LABEL (args_0)
+LABEL (args_1)
+LABEL (args_2)
+LABEL (args_3)
+
+LABEL (call_stub_discard)
+LABEL (call_stub_addr)
+LABEL (call_stub_local)
+LABEL (call_stub_stack)
+
+LABEL (catch_stub_discard)
+LABEL (catch_stub_addr)
+LABEL (catch_stub_local)
+LABEL (catch_stub_stack)
+
+LABEL (save_stub_discard)
+LABEL (save_stub_addr)
+LABEL (save_stub_local)
+LABEL (save_stub_stack)
+
+LABEL (undo_stub_discard)
+LABEL (undo_stub_addr)
+LABEL (undo_stub_local)
+LABEL (undo_stub_stack)
+
+LABEL (tailcall)
+LABEL (throw)
+
+// Loading and storing registers.
+
+#define LOAD_LABELS(tag)                       \
+       LABEL (L1_ ## tag)                              \
+       LABEL (L2_ ## tag)                              \
+       LABEL (L3_ ## tag)                              \
+       LABEL (L4_ ## tag)                              \
+       LABEL (L5_ ## tag)                              \
+       LABEL (L6_ ## tag)                              \
+       LABEL (L7_ ## tag)                              \
+       LABEL (L1_const_L2_ ## tag)             \
+       LABEL (L1_stack_L2_ ## tag)             \
+       LABEL (L1_local_L2_ ## tag)             \
+       LABEL (L1_addr_L2_ ## tag)
+
+#define STORE_LABELS(tag)                      \
+       LABEL (S1_ ## tag)                              \
+       LABEL (S2_ ## tag)
+
+LOAD_LABELS(const)
+LOAD_LABELS(stack)
+LOAD_LABELS(local)
+LOAD_LABELS(addr)
+
+STORE_LABELS(stack)
+STORE_LABELS(local)
+STORE_LABELS(addr)
+
+LABEL(L1_addr16)
+LABEL(L1_addr8)
+
+LABEL(S1_addr16)
+LABEL(S1_addr8)
+
+#undef LOAD_LABELS
+#undef STORE_LABELS
+
+// Labels corresponding to glulx opcodes.
+
+LABEL (nop)
+
+#define PEEPHOLE_STORE_LABELS(tag) \
+       LABEL (add ## tag) \
+       LABEL (sub ## tag) \
+       LABEL (mul ## tag) \
+       LABEL (div ## tag) \
+       LABEL (mod ## tag) \
+       LABEL (neg ## tag) \
+       LABEL (bitand ## tag) \
+       LABEL (bitor ## tag) \
+       LABEL (bitxor ## tag) \
+       LABEL (bitnot ## tag) \
+       LABEL (shiftl ## tag) \
+       LABEL (sshiftr ## tag) \
+       LABEL (ushiftr ## tag) \
+       LABEL (copys ## tag) \
+       LABEL (copyb ## tag) \
+       LABEL (sexs ## tag) \
+       LABEL (sexb ## tag) \
+       LABEL (aload ## tag) \
+       LABEL (aloads ## tag) \
+       LABEL (aloadb ## tag) \
+       LABEL (aloadbit ## tag)
+
+PEEPHOLE_STORE_LABELS(_discard)
+PEEPHOLE_STORE_LABELS(_S1_stack)
+PEEPHOLE_STORE_LABELS(_S1_local)
+PEEPHOLE_STORE_LABELS(_S1_addr)
+
+#define PEEPHOLE_LOAD_LABELS(tag) \
+       LABEL (return_L1_ ## tag) \
+       LABEL (astore_L3_ ## tag) \
+       LABEL (astores_L3_ ## tag) \
+       LABEL (astoreb_L3_ ## tag) \
+       LABEL (astorebit_L3_ ## tag)
+
+PEEPHOLE_LOAD_LABELS(const)
+PEEPHOLE_LOAD_LABELS(stack)
+PEEPHOLE_LOAD_LABELS(addr)
+PEEPHOLE_LOAD_LABELS(local)
+
+LABEL (return)
+LABEL (astore)
+LABEL (astores)
+LABEL (astoreb)
+LABEL (astorebit)
+
+#undef PEEPHOLE_STORE_LABELS
+
+#define BRANCH_LABELS(tag)   \
+       LABEL (jump ## tag)  \
+       LABEL (jz ## tag)    \
+       LABEL (jnz ## tag)   \
+       LABEL (jeq ## tag)   \
+       LABEL (jne ## tag)   \
+       LABEL (jlt ## tag)   \
+       LABEL (jge ## tag)   \
+       LABEL (jgt ## tag)   \
+       LABEL (jle ## tag)   \
+       LABEL (jltu ## tag)  \
+       LABEL (jgeu ## tag)  \
+       LABEL (jgtu ## tag)  \
+       LABEL (jleu ## tag)
+
+BRANCH_LABELS(_var)
+BRANCH_LABELS(_const)
+BRANCH_LABELS(_by)
+BRANCH_LABELS(_return0)
+BRANCH_LABELS(_return1)
+
+LABEL (stkcount)
+LABEL (stkpeek)
+LABEL (stkswap)
+LABEL (stkroll)
+LABEL (stkcopy)
+
+LABEL (streamchar)
+LABEL (streamnum)
+LABEL (streamstr)
+LABEL (streamunichar)
+
+LABEL (gestalt)
+LABEL (debugtrap)
+LABEL (getmemsize)
+LABEL (setmemsize)
+LABEL (jumpabs)
+
+LABEL (random)
+LABEL (setrandom)
+
+LABEL (quit)
+LABEL (verify)
+LABEL (restart)
+LABEL (restore)
+LABEL (restoreundo)
+LABEL (protect)
+
+LABEL (glk)
+
+LABEL (getstringtbl)
+LABEL (setstringtbl)
+LABEL (getiosys)
+LABEL (setiosys)
+
+LABEL (linearsearch)
+LABEL (binarysearch)
+LABEL (linkedsearch)
+
+LABEL (mzero)
+LABEL (mcopy)
+LABEL (malloc)
+LABEL (mfree)
+
+LABEL (accelfunc)
+LABEL (accelparam)
+
+LABEL (git_setcacheram)
+LABEL (git_prunecache)
+
+LABEL (error_bad_opcode)
+LABEL (recompile)
+
+// No more labels to define.
+#undef LABEL