|
|
1.1 root 1: # include "mfile2"
2: /* special shapes (SSOREG,SZERO etc.) shouldn't be or-ed */
3: # define WPTR TPTRTO|TINT|TFLOAT|TDOUBLE|TPOINT|TUNSIGNED
4: # define AWD SNAME|SOREG|SCON|STARNM|STARREG
5: /* tbl */
6: # define ANYSIGNED TPOINT|TINT|TSHORT|TCHAR
7: # define ANYUSIGNED TUNSIGNED|TUSHORT|TUCHAR
8: # define ANYFIXED ANYSIGNED|ANYUSIGNED
9: # define TWORD TINT|TUNSIGNED|TPOINT
10: # define NIAWD SNAME|SCON|STARNM
11: /* tbl */
12:
13: struct optab table[] = {
14:
15: PCONV, INAREG|INTAREG,
16: SAREG|AWD, TCHAR|TSHORT,
17: SANY, TPOINT,
18: NAREG|NASL, RESC1,
19: " cvtZLl AL,A1\n",
20:
21: PCONV, INAREG|INTAREG,
22: SAREG|AWD, TUCHAR|TUSHORT,
23: SANY, TPOINT,
24: NAREG|NASL, RESC1,
25: " movzZLl AL,A1\n",
26:
27: /* the following entry is to fix a problem with
28: the manner that the first pass handles the
29: type of a shift expression */
30: PCONV, INAREG|INTAREG,
31: SAREG|AWD, TINT|TUNSIGNED,
32: SANY, TPOINT,
33: NAREG|NASL, RLEFT,
34: "",
35:
36: SCONV, INTAREG|FORCC,
37: SAREG, TDOUBLE,
38: SANY, TFLOAT|TDOUBLE,
39: 0, RLEFT,
40: "",
41:
42: SCONV, INTAREG|FORCC,
43: SAREG|AWD, TFLOAT,
44: SANY, TDOUBLE,
45: NAREG|NASL, RESC1|RESCC,
46: " clrl U1\n movl AL,A1\n",
47:
48: /* casts to shorter types */
49: SCONV, INTAREG|FORCC,
50: SAREG|SCON, TANY,
51: SANY, ANYUSIGNED,
52: NAREG|NASL, RESC1|RESCC,
53: " movzZRl AL,A1\n",
54:
55: SCONV, INTAREG|FORCC,
56: SNAME, TANY,
57: SANY, ANYUSIGNED,
58: NAREG|NASL, RESC1|RESCC,
59: " movzZRl ZU,A1\n",
60:
61: SCONV, INTAREG|FORCC,
62: SSOREG, TANY,
63: SANY, ANYUSIGNED,
64: NAREG|NASL, RESC1|RESCC,
65: " movzZRl ZU,A1\n",
66:
67: SCONV, INTAREG|FORCC,
68: SAREG|SCON, TANY,
69: SANY, TANY,
70: NAREG|NASL, RESC1|RESCC,
71: " cvtZRl AL,A1\n",
72:
73: SCONV, INTAREG|FORCC,
74: SNAME, TANY,
75: SANY, TANY,
76: NAREG|NASL, RESC1|RESCC,
77: " cvtZRl ZU,A1\n",
78:
79: SCONV, INTAREG|FORCC,
80: SSOREG, TANY,
81: SANY, TANY,
82: NAREG|NASL, RESC1|RESCC,
83: " cvtZRl ZU,A1\n",
84:
85: INIT, FOREFF,
86: SCON, TANY,
87: SANY, TWORD,
88: 0, RNOP,
89: " .long CL\n",
90:
91: INIT, FOREFF,
92: SCON, TANY,
93: SANY, TSHORT|TUSHORT,
94: 0, RNOP,
95: " .word CL\n",
96:
97: INIT, FOREFF,
98: SCON, TANY,
99: SANY, TCHAR|TUCHAR,
100: 0, RNOP,
101: " .byte CL\n",
102:
103: /* for the use of fortran only */
104:
105: GOTO, FOREFF,
106: SCON, TANY,
107: SANY, TANY,
108: 0, RNOP,
109: " jbr CL\n",
110:
111: GOTO, FOREFF,
112: AWD, TANY,
113: SANY, TANY,
114: 0, RNOP,
115: " jmp *AL\n",
116:
117: GOTO, FOREFF,
118: SAREG, TANY,
119: SANY, TANY,
120: 0, RNOP,
121: " jmp (AL)\n",
122:
123: STARG, FORARG,
124: SCON|SOREG, TANY,
125: SANY, TANY,
126: NTEMP+2*NAREG, RESC3,
127: "ZS",
128:
129: STASG, FORARG,
130: SNAME|SOREG, TANY,
131: SCON|SAREG, TANY,
132: 0, RNULL,
133: " ZT\nZS",
134:
135: STASG, FOREFF,
136: SNAME|SOREG, TANY,
137: SCON|SAREG, TANY,
138: 0, RNOP,
139: "ZS",
140:
141: STASG, INAREG,
142: SNAME|SOREG, TANY,
143: SCON, TANY,
144: NAREG, RESC1,
145: "ZS movl AR,A1\n",
146:
147: STASG, INAREG,
148: SNAME|SOREG, TANY,
149: SAREG, TANY,
150: 0, RRIGHT,
151: " pushl AR\nZS movl (sp)+,AR\n",
152:
153: OPLOG, FORCC,
154: SAREG|AWD, TWORD,
155: SAREG|AWD, TWORD,
156: 0, RESCC,
157: " cmpl AL,AR\nZP",
158:
159: OPLOG, FORCC,
160: SAREG|AWD, TSHORT|TUSHORT,
161: SAREG|AWD, TSHORT|TUSHORT,
162: 0, RESCC,
163: " cmpw AL,AR\nZP",
164:
165: OPLOG, FORCC,
166: SAREG|AWD, TCHAR|TUCHAR,
167: SAREG|AWD, TCHAR|TUCHAR,
168: 0, RESCC,
169: " cmpb AL,AR\nZP",
170:
171: OPLOG, FORCC,
172: SAREG|AWD, TSHORT|TUSHORT,
173: SSCON, TANY,
174: 0, RESCC,
175: " cmpw AL,AR\nZP",
176:
177: OPLOG, FORCC,
178: SAREG|AWD, TCHAR|TUCHAR,
179: SCCON, TANY,
180: 0, RESCC,
181: " cmpb AL,AR\nZP",
182:
183: CCODES, INAREG|INTAREG,
184: SANY, TANY,
185: SANY, TANY,
186: NAREG, RESC1,
187: " movl $1,A1\nZN",
188:
189: UNARY CALL, INTAREG,
190: SCON, TANY,
191: SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
192: NAREG|NASL, RESC1, /* should be register 0 */
193: " ZC,CL\n",
194:
195: UNARY CALL, INTAREG,
196: SAREG, TANY,
197: SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
198: NAREG|NASL, RESC1, /* should be 0 */
199: " ZC,(AL)\n",
200:
201: UNARY CALL, INAREG|INTAREG,
202: SNAME, TANY,
203: SANY, TANY,
204: NAREG|NASL, RESC1, /* really reg 0 */
205: " ZC,*AL\n",
206:
207: UNARY CALL, INAREG|INTAREG,
208: SSOREG, TANY,
209: SANY, TANY,
210: NAREG|NASL, RESC1, /* really reg 0 */
211: " ZC,*AL\n",
212:
213: ASG OPSHFT, INAREG|FOREFF|FORCC,
214: SAREG|AWD, TWORD,
215: SAREG|SCON, ANYFIXED,
216: 0, RLEFT|RESCC,
217: " ZH AR,AL,AL\n",
218:
219: ASG OPSHFT, INAREG|FOREFF|FORCC,
220: SAREG|AWD, TWORD,
221: NIAWD, TCHAR,
222: 0, RLEFT|RESCC,
223: " ZH AR,AL,AL\n",
224:
225: ASG OPSHFT, INAREG|FOREFF|FORCC,
226: SAREG|AWD, TWORD,
227: SSOREG, TCHAR,
228: 0, RLEFT|RESCC,
229: " ZH AR,AL,AL\n",
230:
231: ASG OPSHFT, INAREG|FOREFF|FORCC,
232: SAREG|AWD, TWORD,
233: AWD, ANYFIXED,
234: NAREG, RLEFT|RESCC,
235: " ZB AR,A1\n ZH A1,AL,AL\n",
236:
237: OPSHFT, INAREG|INTAREG|FORCC,
238: SAREG|AWD, TWORD,
239: SAREG|SCON, ANYFIXED,
240: NAREG|NASL|NASR, RESC1|RESCC,
241: " ZH AR,AL,A1\n",
242:
243: OPSHFT, INAREG|INTAREG|FORCC,
244: SAREG|AWD, TWORD,
245: NIAWD, TCHAR|TUCHAR,
246: NAREG|NASL|NASR, RESC1|RESCC,
247: " ZH AR,AL,A1\n",
248:
249: OPSHFT, INAREG|INTAREG|FORCC,
250: SAREG|AWD, TWORD,
251: SSOREG, TCHAR,
252: NAREG|NASL|NASR, RESC1|RESCC,
253: " ZH AR,AL,A1\n",
254:
255: OPSHFT, INAREG|INTAREG|FORCC,
256: SAREG|AWD, TWORD,
257: AWD, ANYFIXED,
258: NAREG|NASR, RESC1|RESCC,
259: " ZB AR,A1\n ZH A1,AL,A1\n",
260:
261: INCR, FOREFF,
262: AWD, TWORD,
263: SCON, TANY,
264: 0, RLEFT,
265: " ZE\n",
266:
267: DECR, FOREFF,
268: AWD, TWORD,
269: SCON, TANY,
270: 0, RLEFT,
271: " ZE\n",
272:
273: INCR, FOREFF,
274: SAREG, TWORD,
275: SCON, TANY,
276: 0, RLEFT,
277: " ZE\n",
278:
279: DECR, FOREFF,
280: SAREG, TWORD,
281: SCON, TANY,
282: 0, RLEFT,
283: " ZE\n",
284:
285: /* jwf INCR and DECR for SAREG TCHAR|TSHORT matched by ASG PLUS etc */
286:
287: INCR, INAREG|INTAREG,
288: AWD, TANY,
289: SCON, TANY,
290: NAREG, RESC1,
291: " ZD\n",
292:
293: DECR, INAREG|INTAREG,
294: AWD, TANY,
295: SCON, TANY,
296: NAREG, RESC1,
297: " ZD\n",
298:
299: INCR, INAREG|INTAREG,
300: SAREG, TWORD,
301: SCON, TANY,
302: NAREG, RESC1,
303: " ZD\n",
304:
305: DECR, INAREG|INTAREG,
306: SAREG, TWORD,
307: SCON, TANY,
308: NAREG, RESC1,
309: " ZD\n",
310:
311: ASSIGN, INAREG|FOREFF|FORCC,
312: SAREG|SNAME|SOREG, TDOUBLE,
313: SAREG|SNAME|SOREG, TDOUBLE,
314: 0, RLEFT|RRIGHT|RESCC,
315: " movl UR,UL\n movl AR,AL\n",
316:
317: ASSIGN, INAREG|FOREFF|FORCC,
318: SAREG|AWD, TANY,
319: SAREG|AWD, TANY,
320: 0, RLEFT|RRIGHT|RESCC,
321: " ZA\n",
322:
323: ASSIGN, INAREG|FOREFF,
324: SFLD, TANY,
325: SZERO, TANY,
326: 0, RRIGHT,
327: " andl2 N,AL\n",
328:
329: ASSIGN, INAREG|FOREFF,
330: SFLD, TANY,
331: SCON, TANY,
332: 0, RRIGHT,
333: " andl2 N,AL\n orl2 ZF,AL\n",
334:
335: ASSIGN, INAREG|FOREFF,
336: SFLD, TANY,
337: SAREG|AWD, TWORD,
338: NAREG|NASL, RRIGHT,
339: " shll $H,AR,A1\n andl2 M,A1\n andl2 N,AL\n\
340: orl2 A1,AL\n",
341:
342: /* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */
343: UNARY MUL, FOREFF,
344: SCC, TANY,
345: SCC, TANY,
346: 0, RNULL,
347: " help help help\n",
348:
349: REG, INTEMP,
350: SANY, TANY,
351: SAREG, TDOUBLE,
352: 2*NTEMP, RESC1,
353: " movl UR,U1\n movl AR,A1\n",
354:
355: REG, INTEMP,
356: SANY, TANY,
357: SAREG, TANY,
358: NTEMP, RESC1,
359: " movl AR,A1\n",
360:
361: #ifdef FORT
362: REG, FORARG,
363: SANY, TANY,
364: SAREG, TFLOAT,
365: 0, RNULL,
366: " pushl $0\n pushl AR\n",
367:
368: REG, FORARG,
369: SANY, TANY,
370: SAREG, TDOUBLE,
371: 0, RNULL,
372: " pushl UR\n pushl AR\n",
373: #endif
374:
375: OPLEAF, FOREFF,
376: SANY, TANY,
377: SAREG|AWD, TANY,
378: 0, RLEFT,
379: "",
380:
381: OPLTYPE, INAREG|INTAREG,
382: SANY, TANY,
383: SAREG|SNAME|SCON|SOREG, TDOUBLE,
384: 2*NAREG|NASR, RESC1,
385: " movl UR,U1\n movl AR,A1\n",
386:
387: OPLTYPE, INAREG|INTAREG,
388: SANY, TANY,
389: SAREG|AWD, TFLOAT,
390: 2*NAREG|NASR, RESC1,
391: " clrl U1\n movl AR,A1\n",
392:
393: OPLTYPE, INAREG|INTAREG,
394: SANY, TANY,
395: SANY, TANY,
396: NAREG|NASR, RESC1,
397: " ZA\n",
398:
399: OPLTYPE, FORCC,
400: SANY, TANY,
401: SANY, TANY,
402: 0, RESCC,
403: " tstZR AR\n",
404:
405: OPLTYPE, FORARG,
406: SANY, TANY,
407: SANY, TWORD,
408: 0, RNULL,
409: " pushl AR\n",
410:
411: OPLTYPE, FORARG,
412: SANY, TANY,
413: SANY, TCHAR|TSHORT,
414: 0, RNULL,
415: " pushZR AR\n",
416:
417: OPLTYPE, FORARG,
418: SANY, TANY,
419: SANY, TUCHAR|TUSHORT,
420: 0, RNULL,
421: " movzZRl AR,-(sp)\n",
422:
423: OPLTYPE, FORARG,
424: SANY, TANY,
425: SANY, TDOUBLE,
426: 0, RNULL,
427: " pushl UR\n pushl AR\n",
428:
429: OPLTYPE, FORARG,
430: SANY, TANY,
431: SANY, TFLOAT,
432: 0, RNULL,
433: " pushl $0\n pushl AR\n",
434:
435: UNARY MINUS, INTAREG|FORCC,
436: SAREG|AWD, ANYSIGNED|TUNSIGNED,
437: SANY, TANY,
438: NAREG|NASL, RESC1|RESCC,
439: " mnegZL AL,A1\n",
440:
441: COMPL, INTAREG|FORCC,
442: SAREG|AWD, ANYSIGNED|TUNSIGNED,
443: SANY, TANY,
444: NAREG|NASL, RESC1|RESCC,
445: " mcomZL AL,A1\n",
446:
447: COMPL, INTAREG|FORCC,
448: SAREG|AWD, ANYFIXED,
449: SANY, TANY,
450: NAREG|NASL, RESC1|RESCC,
451: " cvtZLl AL,A1\n mcoml A1,A1\n",
452:
453: AND, FORCC,
454: SAREG|AWD, TWORD,
455: SAREG|AWD, TWORD,
456: 0, RESCC,
457: " bitl AR,AL\n",
458:
459: AND, FORCC,
460: SAREG|AWD, TSHORT|TUSHORT,
461: SSCON, TWORD,
462: 0, RESCC,
463: " bitw AR,AL\n",
464:
465: AND, FORCC,
466: SAREG|AWD, TSHORT|TUSHORT,
467: SAREG|AWD, TSHORT|TUSHORT,
468: 0, RESCC,
469: " bitw AR,AL\n",
470:
471: AND, FORCC,
472: SAREG|AWD, TCHAR|TUCHAR,
473: SCCON, TWORD,
474: 0, RESCC,
475: " bitb AR,AL\n",
476:
477: AND, FORCC,
478: SAREG|AWD, TCHAR|TUCHAR,
479: SAREG|AWD, TCHAR|TUCHAR,
480: 0, RESCC,
481: " bitb AR,AL\n",
482:
483: ASG DIV, INAREG|FOREFF|FORCC, /* should have been done in mip */
484: SAREG|AWD, ANYFIXED,
485: SONE, TWORD,
486: 0, RLEFT|RESCC,
487: " tstZL AL\n",
488:
489: ASG DIV, INAREG|FOREFF|FORCC,
490: SAREG|AWD, TUNSIGNED,
491: SAREG|AWD, TWORD,
492: 2*NAREG|NEVEN, RLEFT|RESCC,
493: "ZM ediv AR,A1,A2,U2\n movl A2,AL\n",
494:
495: ASG DIV, INAREG|FOREFF|FORCC,
496: SAREG|AWD, TUSHORT|TUCHAR,
497: SAREG|AWD, TWORD,
498: NAREG|NASL, RLEFT|RESC1|RESCC,
499: " movzZLl AL,A1\n divl2 AR,A1\n cvtlZL A1,AL\n",
500:
501: DIV, INAREG|INTAREG|FORCC,
502: SAREG|AWD, TUSHORT|TUCHAR,
503: SAREG|AWD, TWORD,
504: NAREG|NASL, RESC1|RESCC,
505: " movzZLl AL,A1\n divl2 AR,A1\n",
506:
507: DIV, INAREG|INTAREG|FORCC,
508: SAREG|AWD, TUNSIGNED,
509: SAREG|AWD, TWORD,
510: 2*NAREG|NEVEN, RESC2|RESCC,
511: "ZM ediv AR,A1,A2,U2\n",
512:
513: ASG MOD, INAREG|FOREFF,
514: SAREG|AWD, ANYFIXED,
515: SONE, TWORD,
516: 0, RLEFT,
517: " clrZL AL\n",
518:
519: MOD, INAREG|INTAREG,
520: STAREG, TWORD,
521: SONE, TWORD,
522: 0, RLEFT,
523: " clrl AL\n",
524:
525: MOD, INAREG|INTAREG,
526: SAREG|AWD, ANYFIXED,
527: SONE, TWORD,
528: 0, RESC1,
529: " clrl A1\n",
530:
531: ASG MOD, INAREG|FOREFF,
532: SAREG|AWD, TWORD,
533: SAREG|AWD, TWORD,
534: 2*NAREG|NEVEN, RLEFT,
535: "ZM ediv AR,A1,A2,U2\n movl U2,AL\n",
536:
537: MOD, INAREG|INTAREG,
538: SAREG|AWD, TWORD,
539: SAREG|AWD, TWORD,
540: 2*NAREG|NEVEN, RESC3,
541: "ZM ediv AR,A1,A2,U2\n",
542:
543: ASG OPMUL, INAREG|FOREFF|FORCC,
544: SAREG|AWD, TWORD,
545: SAREG|AWD, TWORD,
546: 0, RLEFT|RESCC,
547: " OL2 AR,AL\n",
548:
549: OPMUL, INAREG|INTAREG|FORCC,
550: STAREG, TWORD,
551: SAREG|AWD, TWORD,
552: 0, RLEFT|RESCC,
553: " OL2 AR,AL\n",
554:
555: OPMUL, INAREG|INTAREG|FORCC,
556: SAREG|AWD, TWORD,
557: SAREG|AWD, TWORD,
558: NAREG|NASL|NASR, RESC1|RESCC,
559: " OL3 AR,AL,A1\n",
560:
561: ASG PLUS, INAREG|FOREFF|FORCC,
562: SAREG, TWORD,
563: SONE, TINT,
564: 0, RLEFT|RESCC,
565: " incZL AL\n",
566:
567: ASG PLUS, INAREG|FOREFF|FORCC,
568: AWD, ANYFIXED,
569: SONE, TINT,
570: 0, RLEFT|RESCC,
571: " incZL AL\n",
572: /*
573: ASG PLUS, INAREG|FOREFF|FORCC,
574: SAREG, TSHORT|TCHAR,
575: SONE, TINT,
576: 0, RLEFT|RESCC,
577: " incZL AL\n cvtZLl AL,AL\n",
578:
579: ASG PLUS, INAREG|FOREFF|FORCC,
580: SAREG, TUSHORT|TUCHAR,
581: SONE, TINT,
582: 0, RLEFT|RESCC,
583: " incZL AL\n movzZLl AL,AL\n",
584: */
585: ASG MINUS, INAREG|FOREFF|FORCC,
586: SAREG, TWORD,
587: SONE, TINT,
588: 0, RLEFT|RESCC,
589: " decZL AL\n",
590:
591: ASG MINUS, INAREG|FOREFF|FORCC,
592: AWD, ANYFIXED,
593: SONE, TINT,
594: 0, RLEFT|RESCC,
595: " decZL AL\n",
596: /*
597: ASG MINUS, INAREG|FOREFF|FORCC,
598: SAREG, TSHORT|TCHAR,
599: SONE, TINT,
600: 0, RLEFT|RESCC,
601: " decZL AL\n cvtZLl AL,AL\n",
602:
603: ASG MINUS, INAREG|FOREFF|FORCC,
604: SAREG, TUSHORT|TUCHAR,
605: SONE, TINT,
606: 0, RLEFT|RESCC,
607: " decZL AL\n movzZLl AL,AL\n",
608: */
609: PLUS, INAREG|INTAREG|FORCC,
610: STAREG, TWORD,
611: SONE, TWORD,
612: 0, RLEFT|RESCC,
613: " incZL AL\n",
614: /*
615: PLUS, INAREG|INTAREG|FORCC,
616: STAREG, TSHORT|TCHAR,
617: SONE, TWORD,
618: 0, RLEFT|RESCC,
619: " incZL AL\n cvtZLl AL,AL\n",
620:
621: PLUS, INAREG|INTAREG|FORCC,
622: STAREG, TUSHORT|TUCHAR,
623: SONE, TWORD,
624: 0, RLEFT|RESCC,
625: " incZL AL\n movzZLl AL,AL\n",
626: */
627: MINUS, INAREG|INTAREG|FORCC,
628: STAREG, TWORD,
629: SONE, TWORD,
630: 0, RLEFT|RESCC,
631: " decZL AL\n",
632: /*
633: MINUS, INAREG|INTAREG|FORCC,
634: STAREG, TSHORT|TCHAR,
635: SONE, TWORD,
636: 0, RLEFT|RESCC,
637: " decZL AL\n cvtZLl AL,AL\n",
638:
639: MINUS, INAREG|INTAREG|FORCC,
640: STAREG, TUSHORT|TUCHAR,
641: SONE, TWORD,
642: 0, RLEFT|RESCC,
643: " decZL AL\n movzZLl AL,AL\n",
644: */
645: ASG OPSIMP, INAREG|FOREFF|FORCC,
646: SAREG|AWD, TWORD,
647: SAREG|AWD, TWORD,
648: 0, RLEFT|RESCC,
649: " OL2 AR,AL\n",
650:
651: ASG OPSIMP, INAREG|FOREFF|FORCC,
652: SAREG, TWORD,
653: SAREG, TSHORT|TUSHORT|TCHAR|TUCHAR,
654: 0, RLEFT|RESCC,
655: " OL2 AR,AL\n",
656:
657: ASG OPSIMP, INAREG|FOREFF|FORCC,
658: AWD, TSHORT|TUSHORT,
659: SAREG|AWD, TSHORT|TUSHORT,
660: 0, RLEFT|RESCC,
661: " OW2 AR,AL\n",
662:
663: ASG OPSIMP, INAREG|FOREFF|FORCC,
664: AWD, TSHORT|TUSHORT,
665: SSCON, TWORD,
666: 0, RLEFT|RESCC,
667: " OW2 AR,AL\n",
668:
669: ASG OPSIMP, INAREG|FOREFF|FORCC,
670: AWD, TCHAR|TUCHAR,
671: SAREG|AWD, TCHAR|TUCHAR,
672: 0, RLEFT|RESCC,
673: " OB2 AR,AL\n",
674:
675: ASG OPSIMP, INAREG|FOREFF|FORCC,
676: AWD, TCHAR|TUCHAR,
677: SCCON, TWORD,
678: 0, RLEFT|RESCC,
679: " OB2 AR,AL\n",
680: /*
681: ASG OPSIMP, INAREG|FOREFF|FORCC,
682: SAREG, TSHORT,
683: SAREG|AWD, ANYFIXED,
684: 0, RLEFT|RESCC,
685: " OW2 AR,AL\n cvtZLl AL,AL\n",
686:
687: ASG OPSIMP, INAREG|FOREFF|FORCC,
688: SAREG, TUSHORT,
689: SAREG|AWD, ANYFIXED,
690: 0, RLEFT|RESCC,
691: " OW2 AR,AL\n movzZLl AL,AL\n",
692:
693: ASG OPSIMP, INAREG|FOREFF|FORCC,
694: SAREG, TCHAR,
695: SAREG|AWD, ANYFIXED,
696: 0, RLEFT|RESCC,
697: " OB2 AR,AL\n cvtZLl AL,AL\n",
698:
699: ASG OPSIMP, INAREG|FOREFF|FORCC,
700: SAREG, TUCHAR,
701: SAREG|AWD, ANYFIXED,
702: 0, RLEFT|RESCC,
703: " OB2 AR,AL\n movzZLl AL,AL\n",
704: */
705: OPSIMP, INAREG|INTAREG|FORCC,
706: STAREG, ANYFIXED,
707: SAREG|AWD, TWORD,
708: 0, RLEFT|RESCC,
709: " OL2 AR,AL\n",
710:
711: OPSIMP, INAREG|INTAREG|FORCC,
712: SAREG|AWD, TWORD,
713: SAREG|AWD, TWORD,
714: NAREG|NASL|NASR, RESC1|RESCC,
715: " OL3 AR,AL,A1\n",
716:
717: /* Default actions for hard trees ... */
718:
719: # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
720:
721: UNARY MUL, DF( UNARY MUL ),
722:
723: INCR, DF(INCR),
724:
725: DECR, DF(INCR),
726:
727: ASSIGN, DF(ASSIGN),
728:
729: STASG, DF(STASG),
730:
731: FLD, DF(FLD),
732:
733: OPLEAF, DF(NAME),
734:
735: OPLOG, FORCC,
736: SANY, TANY,
737: SANY, TANY,
738: REWRITE, BITYPE,
739: "",
740:
741: OPLOG, DF(NOT),
742:
743: COMOP, DF(COMOP),
744:
745: INIT, DF(INIT),
746:
747: OPUNARY, DF(UNARY MINUS),
748:
749:
750: ASG OPANY, DF(ASG PLUS),
751:
752: OPANY, DF(BITYPE),
753:
754: FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.