Add Glulxe and Git. They compile but don't work yet.
[rodin/chimara.git] / interpreters / git / opcodes.h
1 // $Id: opcodes.h,v 1.7 2004/12/22 12:40:07 iain Exp $
2
3 #ifndef OPCODES_H
4 #define OPCODES_H
5
6 // Glulx opcodes.
7
8 #define op_nop          (0x00)
9
10 #define op_add          (0x10)
11 #define op_sub          (0x11)
12 #define op_mul          (0x12)
13 #define op_div          (0x13)
14 #define op_mod          (0x14)
15 #define op_neg          (0x15)
16 #define op_bitand       (0x18)
17 #define op_bitor        (0x19)
18 #define op_bitxor       (0x1A)
19 #define op_bitnot       (0x1B)
20 #define op_shiftl       (0x1C)
21 #define op_sshiftr      (0x1D)
22 #define op_ushiftr      (0x1E)
23
24 #define op_jump         (0x20)
25 #define op_jz           (0x22)
26 #define op_jnz          (0x23)
27 #define op_jeq          (0x24)
28 #define op_jne          (0x25)
29 #define op_jlt          (0x26)
30 #define op_jge          (0x27)
31 #define op_jgt          (0x28)
32 #define op_jle          (0x29)
33 #define op_jltu         (0x2A)
34 #define op_jgeu         (0x2B)
35 #define op_jgtu         (0x2C)
36 #define op_jleu         (0x2D)
37
38 #define op_call         (0x30)
39 #define op_return       (0x31)
40 #define op_catch        (0x32)
41 #define op_throw        (0x33)
42 #define op_tailcall     (0x34)
43
44 #define op_copy         (0x40)
45 #define op_copys        (0x41)
46 #define op_copyb        (0x42)
47 #define op_sexs         (0x44)
48 #define op_sexb         (0x45)
49 #define op_aload        (0x48)
50 #define op_aloads       (0x49)
51 #define op_aloadb       (0x4A)
52 #define op_aloadbit     (0x4B)
53 #define op_astore       (0x4C)
54 #define op_astores      (0x4D)
55 #define op_astoreb      (0x4E)
56 #define op_astorebit    (0x4F)
57
58 #define op_stkcount     (0x50)
59 #define op_stkpeek      (0x51)
60 #define op_stkswap      (0x52)
61 #define op_stkroll      (0x53)
62 #define op_stkcopy      (0x54)
63
64 #define op_streamchar   (0x70)
65 #define op_streamnum    (0x71)
66 #define op_streamstr    (0x72)
67 #define op_streamunichar (0x73)
68
69 #define op_gestalt      (0x100)
70 #define op_debugtrap    (0x101)
71 #define op_getmemsize   (0x102)
72 #define op_setmemsize   (0x103)
73 #define op_jumpabs      (0x104)
74
75 #define op_random       (0x110)
76 #define op_setrandom    (0x111)
77
78 #define op_quit         (0x120)
79 #define op_verify       (0x121)
80 #define op_restart      (0x122)
81 #define op_save         (0x123)
82 #define op_restore      (0x124)
83 #define op_saveundo     (0x125)
84 #define op_restoreundo  (0x126)
85 #define op_protect      (0x127)
86
87 #define op_glk          (0x130)
88
89 #define op_getstringtbl (0x140)
90 #define op_setstringtbl (0x141)
91 #define op_getiosys     (0x148)
92 #define op_setiosys     (0x149)
93
94 #define op_linearsearch (0x150)
95 #define op_binarysearch (0x151)
96 #define op_linkedsearch (0x152)
97
98 #define op_callf        (0x160)
99 #define op_callfi       (0x161)
100 #define op_callfii      (0x162)
101 #define op_callfiii     (0x163)
102
103 #define op_mzero        (0x170)
104 #define op_mcopy        (0x171)
105 #define op_malloc       (0x178)
106 #define op_mfree        (0x179)
107
108 #define op_accelfunc    (0x180)
109 #define op_accelparam   (0x181)
110
111 // Special cache control opcodes.
112
113 #define op_git_setcacheram (0x7940)
114 #define op_git_prunecache  (0x7941)
115
116 #endif // OPCODES_H