|
|
1.1 root 1: #include "c2.h"
2: #define readonly
3:
4: readonly char revbr[] = {
5: JNE, JEQ, JGT, JLT, JGE, JLE,
6: JNE, JEQ, JHI, JLO, JHIS, JLOS,
7: JBS, JBC, };
8:
9: /* cursed be the preprocessor, whose impotence and stupidity
10: /* prevented this table being macro-generated from ../as/instrs
11: */
12:
13: readonly struct optab optab[] = {
14: "jbr",JBR,0,
15: "jeql",CBR,JEQ,
16: "jneq",CBR,JNE,
17: "jleq",CBR,JLE,
18: "jgeq",CBR,JGE,
19: "jlss",CBR,JLT,
20: "jgtr",CBR,JGT,
21: "jbc",CBR,JBC,
22: "jbs",CBR,JBS,
23: "jlequ",CBR,JLOS,
24: "jgequ",CBR,JHIS,
25: "jlssu",CBR,JLO,
26: "jgtru",CBR,JHI,
27: "adda",ADDA,LONG,
28: "addb2",ADD,U(BYTE,OP2),
29: "addb3",ADD,U(BYTE,OP3),
30: "addl2",ADD,U(LONG,OP2),
31: "addl3",ADD,U(LONG,OP3),
32: "addw2",ADD,U(WORD,OP2),
33: "addw3",ADD,U(WORD,OP3),
34: "aobleq",AOBLEQ,0,
35: "aoblss",AOBLSS,0,
36: "shal",SHAL,LONG,
37: "shar",SHAR,LONG,
38: "shll",SHL,LONG,
39: "shrl",SHR,LONG,
40: "shlq",SHL,QUAD,
41: "shrq",SHR,QUAD,
42: "bbc",CBR,JBC,
43: "bbs",CBR,JBS,
44: "bcc",CBR,JHIS,
45: "bcs",CBR,JLO,
46: "beql",CBR,JEQ,
47: "beqlu",CBR,JEQ,
48: "bgeq",CBR,JGE,
49: "bgequ",CBR,JHIS,
50: "bgtr",CBR,JGT,
51: "bgtru",CBR,JHI,
52: "andb2",AND,U(BYTE,OP2),
53: "andb3",AND,U(BYTE,OP3),
54: "andl2",AND,U(LONG,OP2),
55: "andl3",AND,U(LONG,OP3),
56: "andw2",AND,U(WORD,OP2),
57: "andw3",AND,U(WORD,OP3),
58: "orb2",OR,U(BYTE,OP2),
59: "orb3",OR,U(BYTE,OP3),
60: "orl2",OR,U(LONG,OP2),
61: "orl3",OR,U(LONG,OP3),
62: "orw2",OR,U(WORD,OP2),
63: "orw3",OR,U(WORD,OP3),
64: "bitb",BIT,BYTE,
65: "bitl",BIT,LONG,
66: "bitw",BIT,WORD,
67: "bleq",CBR,JLE,
68: "blequ",CBR,JLOS,
69: "blss",CBR,JLT,
70: "blssu",CBR,JLO,
71: "bneq",CBR,JNE,
72: "bnequ",CBR,JNE,
73: "brb",JBR,0,
74: "brw",JBR,0,
75: "bvc",CBR,0,
76: "bvs",CBR,0,
77: "callf",CALLF,0,
78: "calls",CALLS,0,
79: "casel",CASE,LONG,
80: "clrb",CLR,BYTE,
81: "clrl",CLR,LONG,
82: "clrw",CLR,WORD,
83: "cmpb",CMP,BYTE,
84: "cmpl",CMP,LONG,
85: "cmpw",CMP,WORD,
86: "cvtbl",CVT,U(BYTE,LONG),
87: "cvtbw",CVT,U(BYTE,WORD),
88: "cvtlb",CVT,U(LONG,BYTE),
89: "cvtlw",CVT,U(LONG,WORD),
90: "cvtwb",CVT,U(WORD,BYTE),
91: "cvtwl",CVT,U(WORD,LONG),
92: "decb",DEC,BYTE,
93: "decl",DEC,LONG,
94: "decw",DEC,WORD,
95: "divl2",DIV,U(LONG,OP2),
96: "divl3",DIV,U(LONG,OP3),
97: "ediv",EDIV,LONG,
98: #ifdef EMOD
99: "emod",EMOD,LONG,
100: #endif EMOD
101: "emul",EMUL,LONG,
102: "incb",INC,BYTE,
103: "incl",INC,LONG,
104: "incw",INC,WORD,
105: "jmp",JMP,0,
106: "mcomb",COM,BYTE,
107: "mcoml",COM,LONG,
108: "mcomw",COM,WORD,
109: "mnegb",NEG,BYTE,
110: "mnegl",NEG,LONG,
111: "mnegw",NEG,WORD,
112: "movab",MOVA,BYTE,
113: "moval",MOVA,LONG,
114: "movaw",MOVA,WORD,
115: "movb",MOV,BYTE,
116: "movl",MOV,LONG,
117: "movw",MOV,WORD,
118: "movzbl",MOVZ,U(BYTE,LONG),
119: "movzbw",MOVZ,U(BYTE,WORD),
120: "movzwl",MOVZ,U(WORD,LONG),
121: "mull2",MUL,U(LONG,OP2),
122: "mull3",MUL,U(LONG,OP3),
123: "pushab",PUSHA,BYTE,
124: "pushal",PUSHA,LONG,
125: "pushaw",PUSHA,WORD,
126: "pushb",PUSH,BYTE,
127: "pushl",PUSH,LONG,
128: "pushw",PUSH,WORD,
129: "ret",JBR,U(RET,2),
130: "ret#0",JBR,RET,
131: "ret#1",JBR,U(RET,1),
132: "ret#2",JBR,U(RET,2),
133: "suba",SUBA,LONG,
134: "subb2",SUB,U(BYTE,OP2),
135: "subb3",SUB,U(BYTE,OP3),
136: "subl2",SUB,U(LONG,OP2),
137: "subl3",SUB,U(LONG,OP3),
138: "subw2",SUB,U(WORD,OP2),
139: "subw3",SUB,U(WORD,OP3),
140: "tstb",TST,BYTE,
141: "tstl",TST,LONG,
142: "tstw",TST,WORD,
143: "xorb2",XOR,U(BYTE,OP2),
144: "xorb3",XOR,U(BYTE,OP3),
145: "xorl2",XOR,U(LONG,OP2),
146: "xorl3",XOR,U(LONG,OP3),
147: "xorw2",XOR,U(WORD,OP2),
148: "xorw3",XOR,U(WORD,OP3),
149: "movblk",MOVBLK,0,
150: "ldf",LDF,FLOAT,
151: "ldd",LDF,DOUBLE,
152: "lnf",LNF,FLOAT,
153: "lnd",LNF,DOUBLE,
154: "stf",STF,FLOAT,
155: "std",STF,DOUBLE,
156: "cmpf",CMPF,FLOAT,
157: "cmpd",CMPF,DOUBLE,
158: "cmpf2",CMPF2,FLOAT,
159: "cmpd2",CMPF2,DOUBLE,
160: "tstf",TSTF,FLOAT,
161: "tstd",TSTF,DOUBLE,
162: "pushd",PUSHD,DOUBLE,
163: "cvlf",CVLF,U(LONG,FLOAT),
164: "cvld",CVLF,U(LONG,DOUBLE),
165: "cvfl",CVFL,U(FLOAT,LONG),
166: "cvdl",CVFL,U(DOUBLE,LONG),
167: "ldfd",LDFD,U(FLOAT,DOUBLE),
168: "cvdf",CVDF,U(DOUBLE,FLOAT),
169: "negf",NEGF,FLOAT,
170: "negd",NEGF,DOUBLE,
171: "addf",ADDF,FLOAT,
172: "addd",ADDF,DOUBLE,
173: "subf",SUBF,FLOAT,
174: "subd",SUBF,DOUBLE,
175: "mulf",MULF,FLOAT,
176: "muld",MULF,DOUBLE,
177: "divf",DIVF,FLOAT,
178: "divd",DIVF,DOUBLE,
179: "sinf",SINF,FLOAT,
180: "cosf",COSF,FLOAT,
181: "atanf",ATANF,FLOAT,
182: "logf",LOGF,FLOAT,
183: "sqrtf",SQRTF,FLOAT,
184: "expf",EXPF,FLOAT,
185: ".globl",EROU,0,
186: ".text",TEXT,0,
187: ".data",DATA,0,
188: ".bss",BSS,0,
189: ".align",ALIGN,0,
190: ".word",WGEN,0,
191: ".long",LGEN,0,
192: ".set",SET,0,
193: ".lcomm",LCOMM,0,
194: ".comm",COMM,0,
195: ".end",END,0,
196: "mfpr",MFPR,LONG,
197: "mtpr",MTPR,LONG,
198: "probe",PROBE,BYTE,
199: "adwc",0,0,
200: "movob",MOVO,BYTE,
201: "movow",MOVO,WORD,
202: "bbssi",0,0,
203: "bicpsw",0,0,
204: "bispsw",0,0,
205: "bpt",0,0,
206: "btcs",0,0,
207: "cmps2",0,0,
208: "cmps3",0,0,
209: "emul",0,0,
210: "ffc",0,0,
211: "ffs",0,0,
212: "halt",0,0,
213: "insque",0,0,
214: "kcall",0,0,
215: "ldpctx",0,0,
216: "loadr",0,0,
217: "movpsl",0,0,
218: "movs2",0,0,
219: "movs3",0,0,
220: "nop",0,0,
221: "rei",0,0,
222: "remque",0,0,
223: "sbwc",0,0,
224: "storer",0,0,
225: "svpctx",0,0,
226: "sinf",0,0,
227: "cosf",0,0,
228: "atanf",0,0,
229: "logf",0,0,
230: "sqrtf",0,0,
231: "expf",0,0,
232: 0,0,0};
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.