Pristine Ack-5.5
[Ack-5.5.git] / mach / vax4 / ce / EM_table
1 /******************************************************************************/
2 /*                                                                            */
3 /*                      Group 1 : Load instructions                           */
4 /*                                                                            */
5 /******************************************************************************/
6
7
8 C_loc           ==>     "pushl ~$1".
9
10 C_ldc           ==>     "movq ~$1, -(sp)".
11
12 C_lol           
13         $1 < 0  ==>     "pushl $1(fp)".
14         default         ==>     "pushl $1+4(ap)".
15
16 C_loe..         ==>     "pushl $1 + $2". 
17
18 C_lil           
19         $1 < 0  ==>     "movl $1(fp), r0";
20                                 "pushl (r0)".
21         default         ==>     "movl $1+4(ap), r0";
22                                 "pushl (r0)".
23
24 C_lof           ==>     "movl (sp)+, r0";
25                         "pushl $1(r0)".
26
27 C_lal   
28         $1 < 0  ==>     "pushal $1(fp)".
29         default         ==>     "pushal $1+4(ap)".
30         
31 C_lae..         ==>     "pushal $1 + $2".
32
33 C_lxl           
34         $1 == 0 ==>     "pushl fp".
35         $1 == 1 ==>     "pushl 4(ap)".
36         default         ==>     "movl ~$1, r0";
37                                 "jsb .lxl";
38                                 "pushl r0".
39
40 C_lxa
41         $1 == 0         ==>     "addl3 ~4, ap, -(sp)".
42         $1 == 1         ==>     "movl 4(ap), r0";
43                                 "jsb .lpb";
44                                 "pushl r0".
45         default         ==>     "movl ~$1, r0";
46                                 "jsb .lxa";
47                                 "pushl r0".
48
49 C_loi           
50         $1 == 1 ==>     "movl (sp)+, r0";
51                                 "clrl -(sp)";
52                                 "movb (r0), (sp)".
53         $1 == 2 ==>     "movl (sp)+, r0";
54                                 "clrl -(sp)";
55                                 "movw (r0), (sp)".
56         $1 == 4 ==>     "movl (sp)+, r0";
57                                 "pushl (r0)".
58         $1 == 8 ==>     "movl (sp)+, r0";
59                                 "movq (r0), -(sp)".
60         $1 % 4 == 0     ==>     "movl (sp)+, r0";
61                                 "movl ~$1/4, r1";
62                                 "addl2 ~$1, r0";        
63                                 "2:";
64                                 "pushl -(r0)";
65                                 "sobgtr r1, 2b".
66         default         ==>     arg_error( "loi", $1).
67
68
69 C_los           ==>     "movl ~$1, r0";
70                         "jsb .los".
71
72
73 C_los_narg      ==>     "movl (sp)+, r0";
74                         "jsb .los".
75
76 C_ldl           
77         $1 < 0  ==>     "movq $1(fp), -(sp)".
78         default         ==>     "movq $1+4(ap), -(sp)".
79
80 C_lde..         ==>     "movq $1 + $2, -(sp)".
81                 
82 C_ldf           ==>     "movl (sp)+, r0";
83                         "movq $1(r0), -(sp)".
84
85 C_lpi           ==>     "pushal $1".
86
87
88 /******************************************************************************/
89 /*                                                                            */
90 /*                      Group 2 : Store instructions                          */
91 /*                                                                            */
92 /******************************************************************************/
93
94 C_stl           
95         $1 < 0  ==>     "movl (sp)+, $1(fp)".
96         default         ==>     "movl (sp)+, $1+4(ap)".
97
98 C_ste..         ==>     "movl (sp)+, $1 + $2".
99
100 C_sil           
101         $1 < 0  ==>     "movl $1(fp) , r0";
102                                 "movl (sp)+, (r0)".
103         default         ==>     "movl $1+4(ap), r0";
104                                 "movl (sp)+, (r0)".
105
106 C_stf           ==>     "movl (sp)+, r0";
107                         "movl (sp)+, $1(r0)".
108
109 C_sti           
110                         
111         $1 == 1 ==>     "movl (sp)+, r0";       
112                                 "movl (sp)+, r1";
113                                 "movb r1, (r0)".
114         $1 == 2 ==>     "movl (sp)+, r0";
115                                 "movl (sp)+, r1";
116                                 "movw r1, (r0)".
117         $1 == 4 ==>     "movl (sp)+, r0";
118                                 "movl (sp)+, (r0)".
119         $1 == 8 ==>     "movl (sp)+, r0";
120                                 "movq (sp)+, (r0)".
121         $1 % 4 == 0  ==>        "movl (sp)+, r0";
122                                 "movl ~$1/4, r1";
123                                 "2:";
124                                 "movl (sp)+, (r0)+";
125                                 "sobgtr r1, 2b".
126         default         ==>     arg_error( "sti", (arith) $1).
127
128
129 C_sts           ==>     "movl ~$1, r0";
130                         "jsb .sts".
131
132 C_sts_narg      ==>     "movl (sp)+, r0";
133                         "jsb .sts".
134
135 C_sdl           
136         $1 < 0          ==>     "movq (sp)+, $1(fp)".
137         default         ==>     "movq (sp)+, $1+4(ap)".
138
139 C_sde..         ==>     "movq (sp)+, $1 + $2".
140
141 C_sdf           ==>     "movl (sp)+, r0";
142                         "movq (sp)+, $1(r0)".
143
144 /******************************************************************************/
145 /*                                                                            */
146 /*              Group 3 : Integer arithmetic                                  */
147 /*                                                                            */
148 /******************************************************************************/
149
150 C_adi           
151         $1 == 4 ==>     "addl2 (sp)+, (sp)".
152         default         ==>     arg_error( "adi", $1).
153
154 C_sbi
155         $1 == 4 ==>     "subl2 (sp)+, (sp)".
156         default         ==>     arg_error( "sbi", $1).
157
158 C_mli
159         $1 == 4 ==>     "mull2 (sp)+, (sp)".
160         default         ==>     arg_error( "mli", $1).
161
162 C_dvi           
163         $1 == 4 ==>     "divl2 (sp)+, (sp)".
164         default         ==>     arg_error( "dvi", $1).
165
166 C_rmi   
167         $1 == 4 ==>     "divl3 (sp), 4(sp), r0";
168                                 "mull2 (sp)+, r0";
169                                 "subl2 r0, (sp)".
170         default         ==>     arg_error( "rmi", $1).
171
172 C_ngi           
173         $1 == 4 ==>     "mnegl (sp), (sp)".
174         default         ==>     arg_error( "ngi", $1).
175
176
177 C_sli           
178         $1 == 4 ==>     "clrl r0";
179                                 "cvtlb (sp)+, r0";
180                                 "ashl r0, (sp), (sp)".
181         default         ==>     arg_error( "sli", $1).
182
183 C_sri           
184         $1 == 4 ==>     "mnegl (sp)+, r0";
185                                 "clrl r1";
186                                 "cvtlb r0, r1";
187                                 "ashl r1, (sp), (sp)".
188         default         ==>     arg_error( "sri", $1).
189
190
191 /******************************************************************************/
192 /*                                                                            */
193 /*              Group 4 : Unsigned arithmetic                                 */
194 /*                                                                            */
195 /******************************************************************************/
196
197
198 C_adu           ==>     C_adi( w).
199
200 C_sbu           ==>     C_sbi( w).
201
202 C_mlu           ==>     C_mli( w).
203
204 C_dvu           
205         $1 == 4 ==>     "jsb .dvu4";
206                                 "pushl r0".
207         default         ==>     arg_error( "dvu", $1).
208
209 C_rmu           
210         $1 == 4 ==>     "jsb .rmu4";
211                                 "pushl r0".
212         default         ==>     arg_error( "rmu", $1).
213
214 C_slu           ==>     C_sli( w).
215
216 C_sru           ==>     "movl ~$1, r0";
217                         "jsb .sru".
218
219 /******************************************************************************/
220 /*                                                                            */
221 /*              Group 5 : Floating point arithmetic                           */
222 /*                                                                            */
223 /******************************************************************************/
224
225 C_adf           
226         $1 == 4 ==>     "addf2 (sp)+, (sp)".
227         $1 == 8 ==>     "addd2 (sp)+, (sp)".
228         default         ==>     arg_error( "adf", $1).
229
230 C_sbf
231         $1 == 4 ==>     "subf2 (sp)+, (sp)".
232         $1 == 8 ==>     "subd2 (sp)+, (sp)".
233         default         ==>     arg_error( "sbf", $1).
234
235 C_mlf
236         $1 == 4 ==>     "mulf2 (sp)+, (sp)".
237         $1 == 8 ==>     "muld2 (sp)+, (sp)".
238         default         ==>     arg_error( "mlf", $1).
239
240 C_dvf           
241         $1 == 4 ==>     "divf2 (sp)+, (sp)".
242         $1 == 8 ==>     "divd2 (sp)+, (sp)".
243         default         ==>     arg_error( "dvf", $1).
244
245 C_ngf           
246         $1 == 4 ==>     "mnegf (sp), (sp)".
247         $1 == 8 ==>     "mnegd (sp), (sp)".
248         default         ==>     arg_error( "ngf", $1).
249
250 C_fif   ==>             "movl ~$1,r0";
251                         "jsb .fif".
252
253 C_fef   ==>             "movl ~$1,r0";
254                         "jsb .fef".
255
256 /******************************************************************************/
257 /*                                                                            */
258 /*              Group 6 : Pointer arithmetic                                  */
259 /*                                                                            */
260 /******************************************************************************/
261
262 C_adp           ==>     "addl2 ~$1, (sp)".
263
264 C_ads
265         $1 == 4 ==>     "addl2 (sp)+, (sp)".
266         default ==>     arg_error( "ads", $1).
267
268 C_sbs           
269         $1 == 4 ==>     "subl2 (sp)+, (sp)".
270         default         ==>     arg_error( "sbs", $1).
271
272 /******************************************************************************/
273 /*                                                                            */
274 /*              Group 7 : Increment/decrement/zero                            */
275 /*                                                                            */
276 /******************************************************************************/
277
278 C_inc           ==>     "incl (sp)".
279
280 C_inl           
281         $1 < 0  ==>     "incl $1(fp)".
282         default         ==>     "incl $1+4(ap)".
283
284 C_ine..         ==>     "incl $1 + $2".
285
286 C_dec           ==>     "decl (sp)".
287
288 C_del           
289         $1 < 0  ==>     "decl $1(fp)".
290         default         ==>     "decl $1+4(ap)".
291
292 C_dee..         ==>     "decl $1 + $2".
293
294 C_zrl           
295         $1 < 0  ==>     "clrl $1(fp)".
296         default         ==>     "clrl $1+4(ap)".
297
298 C_zre..         ==>     "clrl $1 + $2".
299
300 C_zrf
301         $1 == 4 ==>     "clrl -(sp)".
302         $1 == 8 ==>     "clrq -(sp)".
303         default         ==>     arg_error( "zrf", $1).
304
305 C_zer
306         $1 == 4 ==>     "clrl -(sp)".
307         $1 == 8 ==>     "clrq -(sp)".
308         default         ==>     "movl ~$1/4, r0";
309                                 "1:";
310                                 "clrl -(sp)";
311                                 "sobgtr r0, 1b".
312
313 /******************************************************************************/
314 /*                                                                            */
315 /*              Group 8 : Convert                                             */
316 /*                                                                            */
317 /******************************************************************************/
318
319 C_cii           ==>     "jsb .cii".
320
321 C_cui           ==>     C_cuu().
322
323 C_cfi           ==>     "jsb .cfi".
324
325 C_cif           ==>     "jsb .cif".
326
327 C_cuf           ==>     "jsb .cuf".
328
329 C_cff           ==>     "jsb .cff".
330
331 C_ciu           ==>     C_cuu().
332
333 C_cuu           ==>     "addl2 ~8,sp".
334
335 C_cfu           ==>     "jsb .cfu".
336
337 /******************************************************************************/
338 /*                                                                            */
339 /*              Group 9 : Logical                                             */
340 /*                                                                            */
341 /******************************************************************************/
342
343 C_and           
344         $1 == 4 ==>     "mcoml (sp), (sp)";
345                                 "bicl2 (sp)+, (sp)".
346         default         ==>     "movl ~$1/4, r0";
347                                 "addl3 ~$1, sp, r1";
348                                 "1:";
349                                 "mcoml (sp), (sp)";
350                                 "bicl2 (sp)+, (r1)+";
351                                 "sobgtr r0, 1b".
352
353 C_ior           
354         $1 == 4 ==>     "bisl2 (sp)+, (sp)".
355         default         ==>     "movl ~$1/4, r0";
356                                 "addl3 ~$1, sp, r1";
357                                 "1:";
358                                 "bisl2 (sp)+, (r1)+";
359                                 "sobgtr r0, 1b".
360
361 C_xor           
362         $1 == 4 ==>     "xorl2 (sp)+, (sp)".
363         default         ==>     "movl ~$1/4, r0";
364                                 "addl3 ~$1, sp, r1";
365                                 "1:";
366                                 "xorl2 (sp)+, (r1)+";
367                                 "sobgtr r0, 1b".
368
369 C_com   
370         $1 == 4 ==>     "mcoml (sp), (sp)".
371         default         ==>     "movl ~$1, r0";
372                                 "jsb .com".
373
374 C_rol   
375         $1 == 4 ==>     "clrl r0";
376                                 "cvtlb (sp)+, r0";
377                                 "rotl r0, (sp), (sp)".
378         default         ==>     arg_error( "rol", $1).
379
380 C_ror   
381         $1 == 4 ==>     "mnegl (sp)+, r0";
382                                 "clrl r1";
383                                 "cvtlb r0, r1";
384                                 "rotl r1, (sp), (sp)".
385         default         ==>     arg_error( "rol", $1).
386
387 /******************************************************************************/
388 /*                                                                            */
389 /*              Group 10 : Sets                                               */
390 /*                                                                            */
391 /******************************************************************************/
392
393 C_inn
394         $1 == 4 ==>     "mnegl (sp)+, r0";
395                                 "clrl r1";
396                                 "cvtlb r0, r1";
397                                 "ashl r1, (sp), (sp)";
398                                 "bicl2 ~~1, (sp)".
399         default         ==>     "movl ~$1, r0";
400                                 "jsb .inn";
401                                 "pushl r1".
402
403 C_inn_narg      ==>     "movl (sp)+, r0";
404                         "jsb .inn";
405                         "pushl r1".
406   
407 C_set
408         $1 == 4 ==>     "clrl r0";
409                                 "cvtlb (sp)+, r0";
410                                 "ashl r0, ~1, -(sp)".
411         default         ==>     "movl ~$1, r0";
412                                 "jsb .setx".
413
414 C_set_narg      ==>     "movl (sp)+, r0";
415                         "jsb .setx".
416
417 /******************************************************************************/
418 /*                                                                            */
419 /*              Group 11 : Array                                              */
420 /*                                                                            */
421 /******************************************************************************/
422
423 C_lar           
424         $1 == 4 ==>     "jsb .lar4".
425         default         ==>     "movl ~$1, r0";
426                                 "jsb .lar".
427
428 C_lar_narg              ==>     "movl (sp)+, r0";
429                                 "jsb .lar".
430
431 C_sar           
432         $1 == 4 ==>     "jsb .sar4".
433         default         ==>     "movl ~$1, r0";
434                                 "jsb .sar".
435
436 C_sar_narg      ==>     "movl (sp)+, r0";
437                         "jsb .sar".
438
439 C_aar           
440         $1 == 4 ==>     "jsb .aar4";
441                                 "pushl r0".
442         default         ==>     "movl ~$1, r0";
443                                 "jsb .aar";
444                                 "pushl r0".
445
446 C_aar_narg      ==>     "movl (sp)+, r0";
447                         "jsb .aar";
448                         "pushl r0".
449
450 /******************************************************************************/
451 /*                                                                            */
452 /*              Group 12 : Compare                                            */
453 /*                                                                            */
454 /******************************************************************************/
455
456 C_cmi           
457         $1 == 4 ==>     /* bug : "subl2 (sp)+, (sp)". */
458                         "clrl r0";
459                         "cmpl (sp)+, (sp)+";
460                         "beql 2f";
461                         "bgtr 1f";
462                         "incl r0";
463                         "br 2f";
464                         "1 : decl r0";
465                         "2 : pushl r0".
466         default         ==>     arg_error( "cmi", $1).
467
468
469 C_cmu           
470         $1 == 4 ==>     /* bug : "subl2 (sp)+, (sp)". */
471                         "clrl r0";
472                         "cmpl (sp)+, (sp)+";
473                         "beql 2f";
474                         "bgtru 1f";
475                         "incl r0";
476                         "br 2f";
477                         "1 : decl r0";
478                         "2 : pushl r0".
479         default         ==>     "movl ~$1, r0";
480                                 "jsb .cmu";
481                                 "pushl r0".
482
483 C_cmu_narg      ==>     "movl (sp)+, r0";
484                         "jsb .cmu";
485                         "pushl r0".
486
487 C_cms           ==>     "movl ~$1, r0";
488                         "jsb .cms";
489                         "pushl r0".
490
491 C_cms_narg      ==>     "movl (sp)+, r0";
492                         "jsb .cms";
493                         "pushl r0".
494
495 C_cmp           ==>     /* bug : "subl2 (sp)+, (sp)". */
496                         "clrl r0";
497                         "cmpl (sp)+, (sp)+";
498                         "beql 2f";
499                         "bgtru 1f";
500                         "incl r0";
501                         "br 2f";
502                         "1 : decl r0";
503                         "2 : pushl r0".
504 C_cmf
505         $1==4   ==>     "clrl r0";
506                         "cmpf (sp)+, (sp)+";
507                         "beql 2f";
508                         "bgtr 1f";
509                         "incl r0";
510                         "br 2f";
511                         "1 : decl r0";
512                         "2 : pushl r0".
513         $1==8   ==>     "clrl r0";
514                         "cmpd (sp)+, (sp)+";
515                         "beql 2f";
516                         "bgtr 1f";
517                         "incl r0";
518                         "br 2f";
519                         "1 : decl r0";
520                         "2 : pushl r0".
521         default ==>     arg_error("cmf", $1).
522
523 C_tlt           ==>     "movl (sp)+, r0";
524                         "pushl ~1";
525                         "tstl r0";
526                         "blss 1f";
527                         "clrl (sp)";
528                         "1:".
529
530 C_tle           ==>     "movl (sp)+, r0";
531                         "pushl ~1";
532                         "tstl r0";
533                         "bleq 1f";
534                         "clrl (sp)";
535                         "1:".
536
537 C_teq           ==>     "movl (sp)+, r0";
538                         "pushl ~1";
539                         "tstl r0";
540                         "beql 1f";
541                         "clrl (sp)";
542                         "1:".
543
544 C_tne           ==>     "movl (sp)+, r0";
545                         "pushl ~1";
546                         "tstl r0";
547                         "bneq 1f";
548                         "clrl (sp)";
549                         "1:".
550
551 C_tge           ==>     "movl (sp)+, r0";
552                         "pushl ~1";
553                         "tstl r0";
554                         "bgeq 1f";
555                         "clrl (sp)";
556                         "1:".
557
558 C_tgt           ==>     "movl (sp)+, r0";
559                         "pushl ~1";
560                         "tstl r0";
561                         "bgtr 1f";
562                         "clrl (sp)";
563                         "1:".
564
565 /******************************************************************************/
566 /*                                                                            */
567 /*              Group 13 : Branch                                             */
568 /*                                                                            */
569 /******************************************************************************/
570
571 C_bra           ==>     "jmp $1".
572
573 C_blt           ==>     "movl (sp)+, r0";
574                         "cmpl (sp)+, r0";
575                         "jlss $1".
576
577 C_ble           ==>     "movl (sp)+, r0";
578                         "cmpl (sp)+, r0";
579                         "jleq $1".
580
581 C_beq           ==>     "movl (sp)+, r0";
582                         "cmpl (sp)+, r0";
583                         "jeql $1".      
584
585 C_bne           ==>     "movl (sp)+, r0";
586                         "cmpl (sp)+, r0";
587                         "jneq $1".
588
589 C_bge           ==>     "movl (sp)+, r0";
590                         "cmpl (sp)+, r0";
591                         "jgeq $1".
592
593 C_bgt           ==>     "movl (sp)+, r0";
594                         "cmpl (sp)+, r0";
595                         "jgtr $1".
596
597 C_zlt           ==>     "tstl (sp)+";
598                         "jlss $1".
599
600 C_zle           ==>     "tstl (sp)+";
601                         "jleq $1".
602
603 C_zeq           ==>     "tstl (sp)+";
604                         "jeql $1".
605
606 C_zne           ==>     "tstl (sp)+";
607                         "jneq $1".
608
609 C_zge           ==>     "tstl (sp)+";
610                         "jgeq $1".
611
612 C_zgt           ==>     "tstl (sp)+";
613                         "jgtr $1".
614
615
616 /******************************************************************************/
617 /*                                                                            */
618 /*                      Group 14 : Procedure call instructions                */
619 /*                                                                            */
620 /******************************************************************************/
621
622 C_cai           ==>     "movl (sp)+, r0";
623                         "calls ~0, (r0)".
624
625 C_cal           ==>     "calls ~0, $1".
626
627 C_lfr           
628         $1 == 4 ==>     "pushl r0".
629         $1 == 8 ==>     "movq r0, -(sp)".
630         default         ==>     arg_error( "lfr", $1).
631
632 C_ret           
633         $1 == 0 ==>     "ret".
634         $1 == 4 ==>     "movl (sp)+, r0";
635                                 "ret".
636         $1 == 8 ==>     "movq (sp)+, r0";
637                                 "ret".
638         default         ==>     arg_error( "ret", $1).
639
640 /******************************************************************************/
641 /*                                                                            */
642 /*                      Group 15 : Miscellaneous instructions                 */
643 /*                                                                            */
644 /******************************************************************************/
645
646 C_asp           ==>     "addl2 ~$1, sp".
647
648 C_ass           
649         $1 == 4 ==>     "addl2 (sp)+, sp".
650         default         ==>     "movl ~$1, r2";
651                                 "jsb .ass".
652
653 C_ass_narg      ==>     "movl (sp)+, r2";
654                         "jsb .ass".
655
656 C_blm           
657         $1 == 4 ==>     "movl (sp)+, r0";
658                                 "movl (sp)+, r1";
659                                 "movl (r1), (r0)".
660         $1 == 8 ==>     "movl (sp)+, r0";
661                                 "movl (sp)+, r1";
662                                 "movq (r1), (r0)".
663         default         ==>     "movl (sp)+, r0";
664                                 "movl (sp)+, r1";
665                                 "movl ~$1/4, r2";
666                                 "1:";
667                                 "movl (r1)+, (r0)+";
668                                 "sobgtr r2, 1b".
669
670 C_bls           
671         $1 == 4 ==>     "movl ~4, r0";
672                                 "jsb .bls".
673         default         ==>     arg_error( "bls", $1).
674
675
676 C_csa           
677         $1 == 4 ==>     "jmp .csa4".
678         default         ==>     "movl ~$1, r0";
679                                 "jmp .csa".
680
681 C_csb           
682         $1 == 4 ==>     "jmp .csb4".
683         default         ==>     "movl ~$1, r0";
684                                 "jmp .csb".
685
686 C_dch           ==>     "movl (sp)+, r0";
687                         "pushl (r0)".
688
689 C_dup           
690         $1 == 4 ==>     "pushl (sp)".
691         $1 == 8 ==>     "movq (sp), -(sp)".
692         default         ==>     "movl ~$1/4, r0";
693                                 "addl3 ~$1, sp, r1";
694                                 "1:";
695                                 "pushl -(r1)";
696                                 "sobgtr r0, 1b".
697
698 C_dus           
699         $1 == 4 ==>     "movl (sp)+, r0";
700                                 "addl3 r0, sp, r1";
701                                 "ashl ~-2, r0, r0";
702                                 "1:";
703                                 "pushl -(r1)";
704                                 "sobgtr r0, 1b".
705         default         ==>     arg_error( "dus", $1).
706
707 C_exg           ==>     "movl ~$1, r0";
708                         "jsb .exg".
709
710 C_fil..         ==>     "moval $1 + $2, hol0 + 4".
711
712 C_gto..         ==>     "pushal $1+$2";
713                         "jmp .gto".
714
715 C_lim           ==>     "pushl .trpim".
716
717 C_lin           ==>     "movl ~$1, hol0".
718
719 C_lni           ==>     "incl hol0".
720
721 C_lor
722         $1 == 0 ==>     "pushl fp".
723         $1 == 1 ==>     "pushl sp".
724         $1 == 2 ==>     "pushl .reghp".
725         default         ==>     arg_error( "lor", $1).
726
727 C_lpb           ==>     "movl (sp)+, r0";
728                         "jsb .lpb";
729                         "pushl r0".
730
731 C_mon           ==>     "jsb .mon".
732
733 C_nop           ==>     .
734
735 C_rck           
736         $1 == 4 ==>     "jsb .rck4".
737         default         ==>     "movl ~$1, r0";
738                                 "jsb .rck".
739
740 C_rck_narg      ==>     "movl (sp)+, r0";
741                         "jsb .rck".
742
743 C_rtt           ==>     "ret".
744
745 C_sig           ==>     "jsb .sig".
746
747 C_sim           ==>     "jsb .sim".
748
749 C_str
750         $1 == 0 ==>     "movl (sp)+, fp".
751         $1 == 1 ==>     "movl (sp)+, sp".
752         $1 == 2 ==>     "jsb .strhp".
753         default         ==>     arg_error( "str", $1).
754
755 C_trp           ==>     "jsb .trp".
756
757 /*****************************************************************************/
758
759 ..icon  $2 == 1  ==>    gen1( (char) atoi( $1)).
760         $2 == 2  ==> gen2( (short) atoi( $1)).
761         $2 == 4  ==> gen4( (long) atol( $1)).
762         default     ==> arg_error( "icon", $2).
763 ..ucon  $2 == 1  ==>    gen1( (char) atoi( $1)).
764         $2 == 2  ==> gen2( (short) atoi( $1)).
765         $2 == 4  ==> gen4( (long) atol( $1)).
766         default     ==> arg_error( "icon", $2).
767 ..fcon                 ==>     con_float($1, $2).
768
769 /*****************************************************************************/
770
771 C_prolog                ==>             text2( 0x0).
772
773 C_jump                  ==>             "jmp $1".
774
775 C_locals                
776   $1 == 0       ==>             .
777   $1 == 4       ==>             "clrq -(sp)".
778   $1 == 8       ==>             "clrq -(sp)".
779   default       ==>             "subl2 ~$1, sp".
780
781 C_db_sline      ==>             "calls ~0, ___u_LiB".