|
|
1.1 root 1: static char sccsid[] = "@(#)c22.c 4.1 10/16/80";
2: #include "c2.h"
3: /* char c22[] = "@(#)c22.c 1.10 80/03/14 10:27:37"; */
4: #define readonly
5:
6: readonly char revbr[] = {
7: JNE, JEQ, JGT, JLT, JGE, JLE,
8: JNE, JEQ, JHI, JLO, JHIS, JLOS,
9: JBS, JBC, JLBS, JLBC, JBSC, JBCC, JBSS, JBCS };
10:
11: /* cursed be the preprocessor, whose impotence and stupidity
12: /* prevented this table being macro-generated from ../as/instrs
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: {"movc3",T(CHRINS,U(3,5))}, /* number of operands, highest register smashed */
219: {".globl",EROU},
220: {".text",TEXT},
221: {".data",DATA},
222: {".bss",BSS},
223: {".align",ALIGN},
224: {".word",WGEN},
225: {".long",LGEN},
226: {".set",SET},
227: {".lcomm",LCOMM},
228: {".comm",COMM},
229: {".end",END},
230: {"rsb",T(JBR,RSB)},
231: {"jsb",JSB},
232: {"mfpr",T(MFPR,LONG)},
233: {"mtpr",T(MTPR,LONG)},
234: {"prober",T(PROBER,BYTE)},
235: {"probew",T(PROBEW,BYTE)},
236: {"adawi",0},
237: {"addp4",0},
238: {"addp6",0},
239: {"adwc",0},
240: {"ashp",0},
241: {"bicpsw",0},
242: {"bispsw",0},
243: {"bpt",0},
244: {"bsbb",0},
245: {"bsbw",0},
246: {"chme",0},
247: {"chmk",0},
248: {"chms",0},
249: {"chmu",0},
250: {"cmpc3",T(CHRINS, U(3,3))},
251: {"cmpc5",T(CHRINS, U(5,3))},
252: {"cmpp3",0},
253: {"cmpp4",0},
254: {"cmpv",0},
255: {"cmpzv",0},
256: {"crc",T(CHRINS, U(4,3))}, /* hack */
257: {"cvtlp",0},
258: {"cvtpl",0},
259: {"cvttp",0},
260: {"cvtpt",0},
261: {"cvtps",0},
262: {"cvtsp",0},
263: {"divp",0},
264: {"editpc",0},
265: {"ediv",0},
266: {"emodd",0},
267: {"emodf",0},
268: {"emul",0},
269: {"ffc",0},
270: {"ffs",0},
271: {"halt",0},
272: {"index",0},
273: {"insque",0},
274: {"ldpctx",0},
275: {"locc",T(CHRINS, U(3,1))},
276: {"matchc",T(CHRINS, U(4,3))},
277: {"movc5",T(CHRINS, U(5,5))},
278: {"movp",0},
279: {"movpsl",0},
280: {"movtc",T(CHRINS, U(6,5))},
281: {"movtuc",T(CHRINS, U(6,5))},
282: {"mulp",0},
283: {"nop",0},
284: {"polyd",0},
285: {"polyf",0},
286: {"popr",0},
287: {"pushr",0},
288: {"rei",0},
289: {"remque",0},
290: {"rotl",0},
291: {"sbwc",0},
292: {"scanc",T(CHRINS, U(4,3))},
293: {"skpc",T(CHRINS, U(3,1))},
294: {"spanc",T(CHRINS, U(4,3))},
295: {"subp4",0},
296: {"subp6",0},
297: {"svpctx",0},
298: {"xfc",0},
299: {"escd",0},
300: {"esce",0},
301: {"escf",0},
302: { 0, 0}
303: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.