Commit | Line | Data |
---|---|---|
f101f434 TL |
1 | #include "c2.h" |
2 | char c22[] = "@(#)c22.c 1.5 78/09/23 16:37:33"; | |
3 | #define readonly | |
4 | ||
5 | readonly char revbr[] = { | |
6 | JNE, JEQ, JGT, JLT, JGE, JLE, | |
7 | JNE, JEQ, JHI, JLO, JHIS, JLOS, | |
8 | JBS, JBC, JLBS, JLBC, JBSC, JBCC, JBSS, JBCS }; | |
9 | ||
10 | /* cursed be the preprocessor, whose impotence and stupidity | |
11 | /* prevented this table being macro-generated from ../as/instrs | |
12 | */ | |
13 | ||
14 | readonly struct optab optab[] = { | |
15 | "jbr",JBR, | |
16 | "jeql",T(CBR,JEQ), | |
17 | "jneq",T(CBR,JNE), | |
18 | "jleq",T(CBR,JLE), | |
19 | "jgeq",T(CBR,JGE), | |
20 | "jlss",T(CBR,JLT), | |
21 | "jgtr",T(CBR,JGT), | |
22 | "jbc",T(CBR,JBC), | |
23 | "jbs",T(CBR,JBS), | |
24 | "jlequ",T(CBR,JLOS), | |
25 | "jgequ",T(CBR,JHIS), | |
26 | "jlssu",T(CBR,JLO), | |
27 | "jgtru",T(CBR,JHI), | |
28 | "jlbc",T(CBR,JLBC), | |
29 | "jlbs",T(CBR,JLBS), | |
30 | "jbcc",T(CBR,JBCC), | |
31 | "jbsc",T(CBR,JBSC), | |
32 | "jbcs",T(CBR,JBCS), | |
33 | "jbss",T(CBR,JBSS), | |
34 | "acbb",T(ACB,BYTE), | |
35 | "acbd",T(ACB,DOUBLE), | |
36 | "acbf",T(ACB,FLOAT), | |
37 | "acbl",T(ACB,LONG), | |
38 | "acbw",T(ACB,WORD), | |
39 | "addb2",T(ADD,U(BYTE,OP2)), | |
40 | "addb3",T(ADD,U(BYTE,OP3)), | |
41 | "addd2",T(ADD,U(DOUBLE,OP2)), | |
42 | "addd3",T(ADD,U(DOUBLE,OP3)), | |
43 | "addf2",T(ADD,U(FLOAT,OP2)), | |
44 | "addf3",T(ADD,U(FLOAT,OP3)), | |
45 | "addl2",T(ADD,U(LONG,OP2)), | |
46 | "addl3",T(ADD,U(LONG,OP3)), | |
47 | "addw2",T(ADD,U(WORD,OP2)), | |
48 | "addw3",T(ADD,U(WORD,OP3)), | |
49 | "aobleq",AOBLEQ, | |
50 | "aoblss",AOBLSS, | |
51 | "ashl",T(ASH,LONG), | |
52 | "ashq",T(ASH,QUAD), | |
53 | "bbc",T(CBR,JBC), | |
54 | "bbcc",T(CBR,JBCC), | |
55 | "bbcci",T(CBR,JBCC), | |
56 | "bbcs",T(CBR,JBCS), | |
57 | "bbs",T(CBR,JBS), | |
58 | "bbsc",T(CBR,JBSC), | |
59 | "bbss",T(CBR,JBSS), | |
60 | "bbssi",T(CBR,JBSS), | |
61 | "bcc",T(CBR,JHIS), | |
62 | "bcs",T(CBR,JLO), | |
63 | "beql",T(CBR,JEQ), | |
64 | "beqlu",T(CBR,JEQ), | |
65 | "bgeq",T(CBR,JGE), | |
66 | "bgequ",T(CBR,JHIS), | |
67 | "bgtr",T(CBR,JGT), | |
68 | "bgtru",T(CBR,JHI), | |
69 | "bicb2",T(BIC,U(BYTE,OP2)), | |
70 | "bicb3",T(BIC,U(BYTE,OP3)), | |
71 | "bicl2",T(BIC,U(LONG,OP2)), | |
72 | "bicl3",T(BIC,U(LONG,OP3)), | |
73 | "bicw2",T(BIC,U(WORD,OP2)), | |
74 | "bicw3",T(BIC,U(WORD,OP3)), | |
75 | "bisb2",T(BIS,U(BYTE,OP2)), | |
76 | "bisb3",T(BIS,U(BYTE,OP3)), | |
77 | "bisl2",T(BIS,U(LONG,OP2)), | |
78 | "bisl3",T(BIS,U(LONG,OP3)), | |
79 | "bisw2",T(BIS,U(WORD,OP2)), | |
80 | "bisw3",T(BIS,U(WORD,OP3)), | |
81 | "bitb",T(BIT,BYTE), | |
82 | "bitl",T(BIT,LONG), | |
83 | "bitw",T(BIT,WORD), | |
84 | "blbs",T(CBR,JLBS), | |
85 | "blbc",T(CBR,JLBC), | |
86 | "bleq",T(CBR,JLE), | |
87 | "blequ",T(CBR,JLOS), | |
88 | "blss",T(CBR,JLT), | |
89 | "blssu",T(CBR,JLO), | |
90 | "bneq",T(CBR,JNE), | |
91 | "bnequ",T(CBR,JNE), | |
92 | "brb",JBR, | |
93 | "brw",JBR, | |
94 | "bvc",T(CBR,0), | |
95 | "bvs",T(CBR,0), | |
96 | "callg",CALLS, | |
97 | "calls",CALLS, | |
98 | "caseb",T(CASE,BYTE), | |
99 | "casel",T(CASE,LONG), | |
100 | "casew",T(CASE,WORD), | |
101 | "clrb",T(CLR,BYTE), | |
102 | "clrd",T(CLR,DOUBLE), | |
103 | "clrf",T(CLR,FLOAT), | |
104 | "clrl",T(CLR,LONG), | |
105 | "clrq",T(CLR,QUAD), | |
106 | "clrw",T(CLR,WORD), | |
107 | "cmpb",T(CMP,BYTE), | |
108 | "cmpd",T(CMP,DOUBLE), | |
109 | "cmpf",T(CMP,FLOAT), | |
110 | "cmpl",T(CMP,LONG), | |
111 | "cmpw",T(CMP,WORD), | |
112 | "cvtbd",T(CVT,U(BYTE,DOUBLE)), | |
113 | "cvtbf",T(CVT,U(BYTE,FLOAT)), | |
114 | "cvtbl",T(CVT,U(BYTE,LONG)), | |
115 | "cvtbw",T(CVT,U(BYTE,WORD)), | |
116 | "cvtdb",T(CVT,U(DOUBLE,BYTE)), | |
117 | "cvtdf",T(CVT,U(DOUBLE,FLOAT)), | |
118 | "cvtdl",T(CVT,U(DOUBLE,LONG)), | |
119 | "cvtdw",T(CVT,U(DOUBLE,WORD)), | |
120 | "cvtfb",T(CVT,U(FLOAT,BYTE)), | |
121 | "cvtfd",T(CVT,U(FLOAT,DOUBLE)), | |
122 | "cvtfl",T(CVT,U(FLOAT,LONG)), | |
123 | "cvtfw",T(CVT,U(FLOAT,WORD)), | |
124 | "cvtlb",T(CVT,U(LONG,BYTE)), | |
125 | "cvtld",T(CVT,U(LONG,DOUBLE)), | |
126 | "cvtlf",T(CVT,U(LONG,FLOAT)), | |
127 | "cvtlw",T(CVT,U(LONG,WORD)), | |
128 | "cvtrdl",T(CVT,U(DOUBLE,LONG)), | |
129 | "cvtrfl",T(CVT,U(FLOAT,LONG)), | |
130 | "cvtwb",T(CVT,U(WORD,BYTE)), | |
131 | "cvtwd",T(CVT,U(WORD,DOUBLE)), | |
132 | "cvtwf",T(CVT,U(WORD,FLOAT)), | |
133 | "cvtwl",T(CVT,U(WORD,LONG)), | |
134 | "decb",T(DEC,BYTE), | |
135 | "decl",T(DEC,LONG), | |
136 | "decw",T(DEC,WORD), | |
137 | "divb2",T(DIV,U(BYTE,OP2)), | |
138 | "divb3",T(DIV,U(BYTE,OP3)), | |
139 | "divd2",T(DIV,U(DOUBLE,OP2)), | |
140 | "divd3",T(DIV,U(DOUBLE,OP3)), | |
141 | "divf2",T(DIV,U(FLOAT,OP2)), | |
142 | "divf3",T(DIV,U(FLOAT,OP3)), | |
143 | "divl2",T(DIV,U(LONG,OP2)), | |
144 | "divl3",T(DIV,U(LONG,OP3)), | |
145 | "divw2",T(DIV,U(WORD,OP2)), | |
146 | "divw3",T(DIV,U(WORD,OP3)), | |
147 | "extv",T(EXTV,LONG), | |
148 | "extzv",T(EXTZV,LONG), | |
149 | "incb",T(INC,BYTE), | |
150 | "incl",T(INC,LONG), | |
151 | "incw",T(INC,WORD), | |
152 | "insv",T(INSV,-1), | |
153 | "jmp",JMP, | |
154 | "mcomb",T(COM,BYTE), | |
155 | "mcoml",T(COM,LONG), | |
156 | "mcomw",T(COM,WORD), | |
157 | "mnegb",T(NEG,BYTE), | |
158 | "mnegd",T(NEG,DOUBLE), | |
159 | "mnegf",T(NEG,FLOAT), | |
160 | "mnegl",T(NEG,LONG), | |
161 | "mnegw",T(NEG,WORD), | |
162 | "movab",T(MOVA,BYTE), | |
163 | "movad",T(MOVA,DOUBLE), | |
164 | "movaf",T(MOVA,FLOAT), | |
165 | "moval",T(MOVA,LONG), | |
166 | "movaq",T(MOVA,QUAD), | |
167 | "movaw",T(MOVA,WORD), | |
168 | "movb",T(MOV,BYTE), | |
169 | "movd",T(MOV,DOUBLE), | |
170 | "movf",T(MOV,FLOAT), | |
171 | "movl",T(MOV,LONG), | |
172 | "movq",T(MOV,QUAD), | |
173 | "movw",T(MOV,WORD), | |
174 | "movzbl",T(MOVZ,U(BYTE,LONG)), | |
175 | "movzbw",T(MOVZ,U(BYTE,WORD)), | |
176 | "movzwl",T(MOVZ,U(WORD,LONG)), | |
177 | "mulb2",T(MUL,U(BYTE,OP2)), | |
178 | "mulb3",T(MUL,U(BYTE,OP3)), | |
179 | "muld2",T(MUL,U(DOUBLE,OP2)), | |
180 | "muld3",T(MUL,U(DOUBLE,OP3)), | |
181 | "mulf2",T(MUL,U(FLOAT,OP2)), | |
182 | "mulf3",T(MUL,U(FLOAT,OP3)), | |
183 | "mull2",T(MUL,U(LONG,OP2)), | |
184 | "mull3",T(MUL,U(LONG,OP3)), | |
185 | "mulw2",T(MUL,U(WORD,OP2)), | |
186 | "mulw3",T(MUL,U(WORD,OP3)), | |
187 | "pushab",T(PUSHA,BYTE), | |
188 | "pushad",T(PUSHA,DOUBLE), | |
189 | "pushaf",T(PUSHA,FLOAT), | |
190 | "pushal",T(PUSHA,LONG), | |
191 | "pushaq",T(PUSHA,QUAD), | |
192 | "pushaw",T(PUSHA,WORD), | |
193 | "pushl",T(PUSH,LONG), | |
194 | "ret",T(JBR,RET), | |
195 | "sobgeq",SOBGEQ, | |
196 | "sobgtr",SOBGTR, | |
197 | "subb2",T(SUB,U(BYTE,OP2)), | |
198 | "subb3",T(SUB,U(BYTE,OP3)), | |
199 | "subd2",T(SUB,U(DOUBLE,OP2)), | |
200 | "subd3",T(SUB,U(DOUBLE,OP3)), | |
201 | "subf2",T(SUB,U(FLOAT,OP2)), | |
202 | "subf3",T(SUB,U(FLOAT,OP3)), | |
203 | "subl2",T(SUB,U(LONG,OP2)), | |
204 | "subl3",T(SUB,U(LONG,OP3)), | |
205 | "subw2",T(SUB,U(WORD,OP2)), | |
206 | "subw3",T(SUB,U(WORD,OP3)), | |
207 | "tstb",T(TST,BYTE), | |
208 | "tstd",T(TST,DOUBLE), | |
209 | "tstf",T(TST,FLOAT), | |
210 | "tstl",T(TST,LONG), | |
211 | "tstw",T(TST,WORD), | |
212 | "xorb2",T(XOR,U(BYTE,OP2)), | |
213 | "xorb3",T(XOR,U(BYTE,OP3)), | |
214 | "xorl2",T(XOR,U(LONG,OP2)), | |
215 | "xorl3",T(XOR,U(LONG,OP3)), | |
216 | "xorw2",T(XOR,U(WORD,OP2)), | |
217 | "xorw3",T(XOR,U(WORD,OP3)), | |
218 | ".globl",EROU, | |
219 | ".text",TEXT, | |
220 | ".data",DATA, | |
221 | ".bss",BSS, | |
222 | ".align",ALIGN, | |
223 | ".word",WGEN, | |
224 | ".long",LGEN, | |
225 | ".set",SET, | |
226 | ".end",END, | |
227 | "adawi",0, | |
228 | "addp4",0, | |
229 | "addp6",0, | |
230 | "adwc",0, | |
231 | "ashp",0, | |
232 | "bicpsw",0, | |
233 | "bispsw",0, | |
234 | "bpt",0, | |
235 | "bsbb",0, | |
236 | "bsbw",0, | |
237 | "chme",0, | |
238 | "chmk",0, | |
239 | "chms",0, | |
240 | "chmu",0, | |
241 | "cmpc3",0, | |
242 | "cmpc5",0, | |
243 | "cmpp3",0, | |
244 | "cmpp4",0, | |
245 | "cmpv",0, | |
246 | "cmpzv",0, | |
247 | "crc",0, | |
248 | "cvtlp",0, | |
249 | "cvtpl",0, | |
250 | "cvttp",0, | |
251 | "cvtpt",0, | |
252 | "cvtps",0, | |
253 | "cvtsp",0, | |
254 | "divp",0, | |
255 | "editpc",0, | |
256 | "ediv",0, | |
257 | "emodd",0, | |
258 | "emodf",0, | |
259 | "emul",0, | |
260 | "ffc",0, | |
261 | "ffs",0, | |
262 | "halt",0, | |
263 | "index",0, | |
264 | "insque",0, | |
265 | "jsb",0, | |
266 | "ldpctx",0, | |
267 | "locc",0, | |
268 | "matchc",0, | |
269 | "mfpr",0, | |
270 | "movc3",0, | |
271 | "movc5",0, | |
272 | "movp",0, | |
273 | "movpsl",0, | |
274 | "movtc",0, | |
275 | "movtuc",0, | |
276 | "mtpr",0, | |
277 | "mulp",0, | |
278 | "nop",0, | |
279 | "polyd",0, | |
280 | "polyf",0, | |
281 | "popr",0, | |
282 | "prober",0, | |
283 | "probew",0, | |
284 | "pushr",0, | |
285 | "rei",0, | |
286 | "remque",0, | |
287 | "rotl",0, | |
288 | "rsb",0, | |
289 | "sbwc",0, | |
290 | "scanc",0, | |
291 | "skpc",0, | |
292 | "spanc",0, | |
293 | "subp4",0, | |
294 | "subp6",0, | |
295 | "svpctx",0, | |
296 | "xfc",0, | |
297 | "escd",0, | |
298 | "esce",0, | |
299 | "escf",0, | |
300 | 0, 0}; |