Research V7 development
[unix-history] / usr / src / cmd / c / table.s
CommitLineData
3823a6ae
DR
1/
2/ c code tables-- compile to register
3/
4
5.globl _regtab
6
7.data
8_regtab=.
9 106.; cr106
10 30.; cr70
11 31.; cr70
12 32.; cr32
13 33.; cr32
14 37.; cr37
15 38.; cr37
16 98.; cr100
17 99.; cr100
18 80.; cr80
19 40.; cr40
20 41.; cr40 / - like +
21 42.; cr42
22 43.; cr43
23 14.; cr43
24 44.; cr43
25 45.; cr45
26 46.; cr40
27 55.; cr40
28 48.; cr40
29 49.; cr49
30 70.; cr70
31 71.; cr70
32 72.; cr72
33 73.; cr73
34 74.; cr74
35 75.; cr75
36 76.; cr72
37 78.; cr70
38 85.; cr70
39 79.; cr79
40 102.; cr102
41 51.; cr51
42 52.; cr52
43 56.; cr56
44 57.; cr57
45 58.; cr58
46 59.; cr59
47 91.; cr91
48 82.; cr82
49 83.; cr82
50 84.; cr82
51 86.; cr86
52 87.; cr86
53 88.; cr86
54 16.; cr16
55 92.; cr92
56 17.; cr43
57 18.; cr74
58 109.; cr109
59 0
60.text
61
62/ goto
63cr102:
64%a,n
65 jmp A1
66
67%n*,n
68 F*
69 jmp #1(R)
70
71/ call
72cr100:
73%a,n
74 jsr pc,IA1
75
76%n*,n
77 F*
78 jsr pc,#1(R)
79
80%n,n
81 F
82 jsr pc,(R)
83
84/ addressible
85cr106:
86%z,n
87 clr R
88
89%zf,n
90 clrf R
91
92%a,n
93%ad,n
94 movB1 A1,R
95
96%af,n
97 movof A1,R
98
99%n*,n
100%nd*,n
101 F*
102 movB1 #1(R),R
103
104%nf*,n
105 F*
106 movof #1(R),R
107
108%al,n
109 mov A1+,R+
110 mov A1,R
111
112%nl*,n
113 F*
114 mov #1+2(R),R+
115 mov #1(R),R
116
117%n,n
118 F
119
120/ ++,-- postfix
121cr32:
122%a,1
123 movB1 A1',R
124 I'B1 A1''
125
126%aw,n
127 mov A1',R
128 I A2,A1''
129
130%e*,1
131 F1*
132 movB1 #1(R1),R
133 I'B1 #1(R1)
134
135%n*,1
136 F*
137 movB1 #1(R),-(sp)
138 I'B1 #1(R)
139 movB1 (sp)+,R
140
141%ew*,n
142 F1*
143 mov #1(R1),R
144 I A2,#1(R1)
145
146%nw*,n
147 F*
148 mov #1(R),-(sp)
149 I A2,#1(R)
150 mov (sp)+,R
151
152%al,1
153 F
154 I $1,A1+
155 V A1
156
157%el*,1
158 F1*
159 mov #1+2(R1),R+
160 mov #1(R1),R
161 I $1,#1+2(R1)
162 V #1(R1)
163
164%nl*,1
165 F*
166 mov #1+2(R),-(sp)
167 mov #1(R),-(sp)
168 I $1,#1+2(R)
169 V #1(R)
170 mov (sp)+,R
171 mov (sp)+,R+
172
173/ - unary, ~
174cr37:
175%n,n
176%nf,n
177 F
178 IBF R
179
180%nl,n
181 F
182 I R
183 I R+
184 V R
185
186/ =
187cr80:
188%a,n
189%ad,nf
190 S
191 movB1 R,A1
192
193%af,nf
194 S
195 movfo R,A1
196
197%nd*,af
198 F*
199 S
200 movf R,#1(R)
201
202%n*,aw
203 F*
204 movB1 A2,#1(R)
205 movB1 #1(R),R
206
207%nf*,af
208 F*
209 S
210 movfo R,#1(R)
211
212%n*,e
213 F*
214 S1
215 movB1 R1,#1(R)
216 movB1 R1,R
217
218%ed*,nf
219 S
220 F1*
221 movf R,#1(R1)
222
223%ef*,nf
224 S
225 F1*
226 movfo R,#1(R1)
227
228%n*,n
229%nd*,nf
230 FS*
231 S
232 movB1 R,*(sp)+
233
234%nf*,nf
235 FS*
236 S
237 movfo R,*(sp)+
238
239%al,nl
240 S
241 mov R+,A1+
242 mov R,A1
243
244%el*,nl
245 S
246 F1*
247 mov R+,2+#1(R1)
248 mov R,#1(R1)
249
250%nl*,nl
251 FS*
252 S
253 mov R,*(sp)
254 add $2,(sp)
255 mov R+,*(sp)+
256
257/ field assign, value in reg.
258cr16:
259%a,n
260 S
261 bicB1 Z,A1'
262 bisB1 R,A1''
263
264%e*,n
265% [fas1]
266
267%n*,n
268 SS
269 F*
270 bicB1 Z,#1(R)
271 bisB1 (sp),#1(R)
272 mov (sp)+,R
273
274/ +, -, |, &~, <<
275cr40:
276%n,z
277 F
278
279%n,1
280 F
281 I' R
282
283%[add1:]
284%n,aw
285%nf,ad
286 F
287 IB2 A2,R
288
289%[add2:]
290%n,ew*
291%nf,ed*
292 F
293 S1*
294 IB2 #2(R1),R
295
296%[add3:]
297%n,e
298%nf,ef
299 F
300 S1
301 IBF R1,R
302
303%[add4:]
304%n,nw*
305%nf,nd*
306 SS*
307 F
308 IB2 *(sp)+,R
309
310%[add5:]
311%n,n
312%nf,nf
313 SS
314 F
315 IBF (sp)+,R
316
317%nl,c
318%nl,au
319 F
320 I A2,R+
321 V R
322
323%nl,eu
324 F
325 S1
326 I R1,R+
327 V R
328
329%nl,al
330 F
331 I A2,R
332 I A2+,R+
333 V R
334
335%[addl1:]
336%nl,el
337 F
338 S1
339 I R1+,R+
340 V R
341 I R1,R
342
343%[addl2:]
344%nl,nl
345 SS
346 F
347 I (sp)+,R
348 I (sp)+,R+
349 V R
350
351/ ^ -- xor
352cr49:
353%n,e
354% [add3]
355
356%n,n
357 FS
358 S
359 xor R,(sp)
360 mov (sp)+,R
361
362%nl,el
363% [addl1]
364
365%nl,nl
366 SS
367 F
368 I R,(sp)
369 mov (sp)+,R
370 I R+,(sp)
371 mov (sp)+,R+
372
373/ >> (all complicated cases taken care of by << -)
374cr45:
375%n,1
376 F
377 asr R
378
379/ * -- R must be odd on integers
380cr42:
381%n,aw
382%nf,ad
383% [add1]
384
385%n,ew*
386%nf,ed*
387% [add2]
388
389%n,e
390%nf,ef
391% [add3]
392
393%n,n
394%nf,nf
395% [add5]
396
397/ / R must be odd on integers
398cr43:
399%n,aw
400 F
401 T
402 I A2,R-
403
404%n,ew*
405 F
406 T
407 S1*
408 I #2(R1),R-
409
410%n,e
411 F
412 T
413 S1
414 I R1,R-
415
416%n,n
417 SS
418 F
419 T
420 I (sp)+,R-
421
422%nf,ad
423% [add1]
424
425%nf,ed*
426% [add2]
427
428%nf,ef
429% [add3]
430
431%nf,nf
432% [add5]
433
434/ =+, =-, =|, =&~
435cr70:
436%[addq1:]
437%aw,aw
438 I A2,A1'
439 mov A1'',R
440
441%[addq1a:]
442%a,aw
443%ad,ad
444 movB1 A1',R
445 IBF A2,R
446 movB1 R,A1''
447
448%[addq2:]
449%aw,nw*
450 S*
451 I #2(R),A1'
452 mov A1'',R
453
454%[addq3:]
455%aw,n
456 S
457 I R,A1'
458 mov A1'',R
459
460%[addq4:]
461%ew*,nw*
462 S*
463 F1*
464 I #2(R),#1(R1)
465 mov #1(R1),R
466
467%[addq4a:]
468%ad,ef
469 movf A1',R
470 S1
471 IBF R1,R
472 movf R,A1''
473
474%[addq5:]
475%a,n
476%ad,nf
477 SS
478 movB1 A1',R
479 IBF (sp)+,R
480 movB1 R,A1''
481
482%[addq6:]
483%af,nf
484 SS
485 movof A1',R
486 IBF (sp)+,R
487 movfo R,A1''
488
489%[addq7:]
490%ew*,n
491 S
492 F1*
493 I R,#1(R1)
494 mov #1(R1),R
495
496%[addq8:]
497%nw*,n
498 SS
499 F*
500 I (sp)+,#1(R)
501 mov #1(R),R
502
503%[addq9:]
504%n*,n
505 FS*
506 SS
507 movB1 *2(sp),R
508 IBF (sp)+,R
509 movB1 R,*(sp)+
510
511%[addq9a:]
512%nd*,nf
513 SS
514 F*
515 movB1 #1(R),R
516 IBF (sp)+,R
517 movB1 R,#1(R)
518
519%[addq10:]
520%nf*,nf
521 SS
522 F*
523 movof #1(R),R1
524 IBF (sp)+,R1
525 movfo R1,#1(R)
526 movf R1,R
527
528%al,c
529 I A2,A1+
530 V A1
531 F
532
533%al,al
534 I A2+,A1+
535 V A1
536 I A2,A1
537 F
538
539%al,nl
540 S
541 I R+,A1+
542 V A1
543 I R,A1
544 F
545
546%nl*,c
547 F*
548 I A2,#1+2(R)
549 V #1(R)
550 mov #1+2(R),R+
551 mov #1(R),R
552
553%nl*,al
554 F*
555 I A2+,#1+2(R)
556 V #1(R)
557 I A2,#1(R)
558 mov #1+2(R),R+
559 mov #1(R),R
560
561%nl*,nl
562 SS
563 F*
564 I (sp)+,#1(R)
565 I (sp)+,#1+2(R)
566 V #1(R)
567 mov #1+2(R),R+
568 mov #1(R),R
569
570/ =*, =<< (for integer multiply, R must be odd)
571cr72:
572%a,aw
573%ad,ad
574% [addq1a]
575
576%ad,ef
577% [addq4a]
578
579%a,n
580%ad,nf
581% [addq5]
582
583%af,nf
584% [addq6]
585
586%n*,n
587% [addq9]
588
589%nd*,nf
590% [addq9a]
591
592%nf*,nf
593% [addq10]
594
595/ =/ ; R must be odd on integers
596cr73:
597%a,aw
598 movB1 A1',R
599 V R-
600 IBF A2,R-
601 movB1 R-,A1''
602
603%a,n
604 SS
605 movB1 A1',R
606 V R-
607 I (sp)+,R-
608 movB1 R-,A1''
609
610%e*,n
611 SS
612 F1*
613 movB1 #1(R1),R
614 V R-
615 I (sp)+,R-
616 movB1 R-,#1(R1)
617
618%n*,n
619 FS*
620 SS
621 movB1 *2(sp),R
622 V R-
623 I (sp)+,R-
624 movB1 R-,*(sp)+
625
626%ad,ad
627% [addq1a]
628
629%ad,ef
630% [addq4a]
631
632%ad,nf
633% [addq5]
634
635%af,nf
636% [addq6]
637
638%nd*,nf
639% [addq9a]
640
641%nf*,nf
642% [addq10]
643
644/ =mod; R must be odd on integers
645cr74:
646%a,aw
647 movB1 A1',R
648 V R-
649 I A2,R-
650 movB1 R,A1''
651
652%a,n
653 SS
654 movB1 A1',R
655 V R-
656 I (sp)+,R-
657 movB1 R,A1''
658
659%e*,n
660 SS
661 F1*
662 movB1 #1(R1),R
663 V R-
664 I (sp)+,R-
665 movB1 R,#1(R1)
666
667%n*,n
668 FS*
669 SS
670 movB1 *2(sp),R
671 V R-
672 I (sp)+,R-
673 mov R,*(sp)+
674
675/ =^ -- =xor
676cr79:
677%aw,n
678% [addq3]
679
680%ab,n
681 SS
682 movb A1',R
683 xor R,(sp)
684 mov (sp)+,R
685 movb R,A1''
686
687%n*,n
688 FS*
689 movB1 *(sp),-(sp)
690 S
691 xor R,(sp)
692 movB1 (sp)+,R
693 movB1 R,*(sp)+
694
695/ =>> (all complicated cases done by =<< -)
696cr75:
697%a,1
698 asrB1 A1'
699 movB1 A1'',R
700
701%n*,1
702 F*
703 asrB1 #1(R)
704 movB1 #1(R),R
705
706/ << for longs
707cr91:
708%nl,aw
709% [add1]
710
711%nl,ew*
712% [add2]
713
714%nl,e
715% [add3]
716
717%nl,nw*
718% [add4]
719
720%nl,n
721% [add5]
722
723/ int -> float
724cr51:
725%aw,n
726 movif A1,R
727
728%nw*,n
729 F*
730 movif #1(R),R
731
732%n,n
733 F
734 movif R,R
735
736/ float, double -> int
737cr52:
738%nf,n
739 F
740 movfi R,R
741
742/ double (float) to long
743cr56:
744%nf,n
745 F
746 setl
747 movfi R,-(sp)
748 mov (sp)+,R
749 mov (sp)+,R+
750 seti
751
752/ long to double
753cr57:
754%al,n
755 setl
756 movif A1,R
757 seti
758
759%nl*,n
760 F*
761 setl
762 movif #1(R),R
763 seti
764
765%nl,n
766 FS
767 setl
768 movif (sp)+,R
769 seti
770
771/ integer to long
772cr58:
773%eu,n
774 F1!
775 clr R
776
777%nu,n
778 F
779 mov R,R1
780 clr R
781
782%e,n
783 F1!
784 sxt R
785
786%n,n
787 F
788 mov R,R1
789 sxt R
790
791/ long to integer
792cr59:
793%al,n
794 mov A1+,R
795
796%nl*,n
797 F*
798 mov #1+2(R),R
799
800/ *, /, remainder for longs.
801cr82:
802%nl,nl
803 SS
804 FS
805 jsr pc,I
806 add $10,sp
807
808/ =*, =/, =rem for longs
809/ Operands of the form &x op y, so stack space is known.
810cr86:
811%n,nl
812 SS
813 FS
814 jsr pc,I
815 add $6,sp
816
817/ convert integer to character (sign extend)
818cr109:
819%n,n
820 F
821 movb R,R
822
823/
824/ c code tables -- compile for side effects.
825/ Also set condition codes properly (except for ++, --)
826/
827
828.globl _efftab
829
830.data
831_efftab=.
832 30.; ci70
833 31.; ci70
834 32.; ci70
835 33.; ci70
836 80.; ci80
837 70.; ci70
838 71.; ci70 / - like +
839 78.; ci78
840 79.; ci79
841 85.; ci78
842 75.; ci75
843 76.; ci76
844 16.; ci16
845 116.; ci116
846 0
847.text
848
849/ =
850ci80:
851%[move1:]
852%a,z
853%ad,zf
854 I'B1 A1
855
856%[move2:]
857%n*,z
858%nd*,zf
859 F*
860 I'B1 #1(R)
861
862%[move3:]
863%a,aw
864%ab,a
865 IBE A2,A1
866
867%[move4:]
868%ab,n*
869%a,nw*
870 S*
871 IBE #2(R),A1
872
873%[move5:]
874%a,n
875 S
876 IB1 R,A1
877
878%[move6:]
879%n*,aw
880%nb*,a
881 F*
882 IBE A2,#1(R)
883
884%[move7:]
885%n*,ew*
886%nb*,e*
887 F*
888 S1*
889 IBE #2(R1),#1(R)
890
891%[move8:]
892%n*,e
893 F*
894 S1
895 IB1 R1,#1(R)
896
897%[move9:]
898%e*,nw*
899%eb*,n*
900 S*
901 F1*
902 IBE #2(R),#1(R1)
903
904%[move10:]
905%e*,n
906 S
907 F1*
908 IB1 R,#1(R1)
909
910%[move11:]
911%n*,nw*
912%nb*,n*
913 FS*
914 S*
915 IBE #2(R),*(sp)+
916
917%[move12:]
918%n*,n
919 FS*
920 S
921 IB1 R,*(sp)+
922
923%aw,nf
924 S
925 movfi R,A1
926
927%ew*,nf
928 S
929 F1*
930 movfi R,#1(R1)
931
932%al,z
933 clr A1
934 clr A1+
935
936%nl*,z
937 F*
938 clr #1(R)
939 clr 2+#1(R)
940
941%[move13a:]
942%al,aw
943 I A2,A1+
944 V A1
945
946%al,nw*
947 S*
948 mov #2(R),A1+
949 V A1
950
951%al,n
952 S
953 mov R,A1+
954 V A1
955
956%al,nf
957 S
958 setl
959 movfi R,A1
960 seti
961
962%el*,nf
963 S
964 F1*
965 setl
966 movfi R,#1(R1)
967 seti
968
969%[move13:]
970%al,al
971 I A2,A1
972 I A2+,A1+
973 V A1
974
975%[move14:]
976%al,nl*
977 S*
978 I #2(R),A1
979 I #2+2(R),A1+
980 V A1
981
982%[move15:]
983%al,nl
984 S
985 I R,A1
986 I R+,A1+
987 V A1
988
989%[move14a:]
990%nl*,aw
991 F*
992 I A2,#1+2(R)
993 V #1(R)
994
995%[move16a:]
996%nl*,al
997 F*
998 I A2+,#1+2(R)
999 V #1(R)
1000 I A2,#1(R)
1001
1002%[move16:]
1003%el*,nl
1004 S
1005 F1*
1006 I R+,#1+2(R1)
1007 V #1(R1)
1008 I R,#1(R1)
1009
1010%nl*,n
1011 SS
1012 F*
1013 mov (sp)+,#1+2(R)
1014 V #1(R)
1015
1016%[move17:]
1017%nl*,nl
1018 SS
1019 F*
1020 I (sp)+,#1(R)
1021 I (sp)+,#1+2(R)
1022 V #1(R)
1023
1024/ =| and =& ~
1025ci78:
1026%a,aw
1027%ab,a
1028% [move3]
1029
1030%a,n
1031% [move5]
1032
1033%n*,aw
1034%nb*,a
1035% [move6]
1036
1037%n*,ew*
1038%nb*,e*
1039% [move7]
1040
1041%n*,e
1042% [move8]
1043
1044%e*,nw*
1045%eb*,n*
1046% [move9]
1047
1048%e*,n
1049% [move10]
1050
1051%n*,nw*
1052%nb*,n*
1053% [move11]
1054
1055%n*,n
1056% [move12]
1057
1058%al,c
1059%al,au
1060% [move13a]
1061
1062%al,al
1063% [move13]
1064
1065%al,nl*
1066% [move14]
1067
1068%al,nl
1069% [move15]
1070
1071%nl*,c
1072% [move14a]
1073
1074%nl*,al
1075% [move16a]
1076
1077%el*,nl
1078% [move16]
1079
1080%nl*,nl
1081% [move17]
1082
1083/ =^
1084ci79:
1085%al,nl
1086% [move15]
1087
1088%el*,nl
1089% [move16]
1090
1091%nl*,nl
1092 FS*
1093 S
1094 I R,*(sp)
1095 mov (sp)+,R
1096 I R+,2(R)
1097
1098/ =+
1099ci70:
1100%n*,z
1101%a,z
1102
1103%a,1
1104 I'B1 A1
1105
1106%aw,aw
1107% [move3]
1108
1109%aw,nw*
1110% [move4]
1111
1112%aw,n
1113% [move5]
1114
1115%n*,1
1116% [move2]
1117
1118%ew*,nw*
1119% [move9]
1120
1121%a,nw*
1122 S*
1123 movB1 A1',R1
1124 I #2(R),R1
1125 movB1 R1,A1''
1126
1127%a,n
1128 S
1129 movB1 A1',R1
1130 I R,R1
1131 movB1 R1,A1''
1132
1133%ew*,n
1134% [move10]
1135
1136%nw*,n
1137% [move12]
1138
1139%n*,n
1140 SS
1141 F*
1142 movB1 #1(R),R1
1143 I (sp)+,R1
1144 movB1 R1,#1(R)
1145
1146%al,c
1147%al,au
1148% [move13a]
1149
1150%al,al
1151% [move13]
1152
1153%al,nl*
1154% [move14]
1155
1156%al,nl
1157% [move15]
1158
1159%nl*,c
1160%nl*,au
1161% [move14a]
1162
1163%nl*,al
1164% [move16a]
1165
1166%el*,nl
1167% [move16]
1168
1169%nl*,nl
1170% [move17]
1171
1172/ =>> (all harder cases handled by =<< -)
1173ci75:
1174%a,1
1175 asrB1 A1
1176
1177%n*,1
1178 F*
1179 asrB1 #1(R)
1180
1181/ =<<
1182ci76:
1183%a,1
1184 aslB1 A1
1185
1186%n*,1
1187 F*
1188 aslB1 #1(R)
1189
1190%r,aw
1191 ash A2,A1
1192
1193%r,nw*
1194 S*
1195 ash #2(R),A1
1196
1197%r,n
1198 S
1199 ash R,A1
1200
1201/ =<< for longs
1202cr92:
1203%al,aw
1204 F
1205 ashc A2,R
1206 mov R,A1
1207 mov R+,A1+
1208
1209%al,n
1210 SS
1211 F
1212 ashc (sp)+,R
1213 mov R,A1
1214 mov R+,A1+
1215
1216%nl*,n
1217 FS*
1218 SS
1219 mov 2(sp),R
1220 mov 2(R),R+
1221 mov (R),R
1222 ashc (sp)+,R
1223 mov R,*(sp)
1224 add $2,(sp)
1225 mov R+,*(sp)+
1226
1227/ field = ...
1228ci16:
1229%a,a
1230 bicB1 Z,A1'
1231 bisB1 A2,A1''
1232
1233%a,n
1234 S
1235 bicB1 Z,A1'
1236 bisB1 R,A1''
1237
1238%n*,a
1239 F*
1240 bicB1 Z,#1(R)
1241 bisB1 A2,#1(R)
1242
1243%[fas1:]
1244%e*,n
1245 S
1246 F1*
1247 bicB1 Z,#1(R1)
1248 bisB1 R,#1(R1)
1249
1250%n*,e
1251 F*
1252 S1
1253 bicB1 Z,#1(R)
1254 bisB1 R1,#1(R)
1255
1256%n*,n
1257 SS
1258 F*
1259 bicB1 Z,#1(R)
1260 bisB1 (sp)+,#1(R)
1261
1262/
1263/ c code tables-- set condition codes
1264/
1265
1266.globl _cctab
1267
1268.data
1269_cctab=.
1270 106.; cc60
1271 28.; rest
1272 55.; rest
1273 34.; rest
1274 35.; rest
1275 36.; rest
1276 37.; rest
1277 40.; rest
1278 41.; rest
1279 42.; rest
1280 43.; rest
1281 81.; cc81 / & as in "if ((a&b)==0)"
1282 48.; rest
1283 60.; cc60
1284 61.; cc60
1285 62.; cc60
1286 63.; cc60
1287 64.; cc60
1288 65.; cc60
1289 66.; cc60
1290 67.; cc60
1291 68.; cc60
1292 69.; cc60
1293 72.; rest
1294 73.; rest
1295 79.; rest
1296 0
1297.text
1298
1299/ relationals
1300cc60:
1301%a,z
1302%ad,zf
1303% [move1]
1304
1305%af,z
1306 movof A1,R
1307
1308%n*,z
1309%nd*,zf
1310% [move2]
1311
1312%nf*,z
1313 F*
1314 movof #1(R),R
1315
1316%n,z
1317%nf,zf
1318 FC
1319
1320%aw,aw
1321%ab,ab
1322% [move3]
1323
1324%nw*,aw
1325%nb*,ab
1326% [move6]
1327
1328%n,aw
1329%nf,ad
1330% [add1]
1331
1332%nw*,ew*
1333%nb*,eb*
1334% [move7]
1335
1336%nw*,e
1337% [move8]
1338
1339%n,ew*
1340%nf,ed*
1341% [add2]
1342
1343%n,e
1344%nf,ef
1345% [add3]
1346
1347%nw*,nw*
1348%nb*,nb*
1349% [move11]
1350
1351%nw*,n
1352% [move12]
1353
1354%n,n
1355%nf,nf
1356% [add5]
1357
1358%al,z
1359 tst A1
1360 X0
1361 tst A1+
1362 X1
1363
1364%al,c
1365%al,au
1366 tst A1
1367 X0
1368 cmp A1+,A2
1369 X1
1370
1371%[lcmp1:]
1372%al,al
1373 I A1,A2
1374 X0
1375 I A1+,A2+
1376 X1
1377
1378%nl*,z
1379 F*
1380 tst #1(R)
1381 X0
1382 tst #1+2(R)
1383 X1
1384
1385%nl*,c
1386%nl*,au
1387 F*
1388 tst #1(R)
1389 X0
1390 cmp #1+2(R),A2
1391 X1
1392
1393%[lcmp2:]
1394%nl*,al
1395 F*
1396 I #1(R),A2
1397 X0
1398 I #1+2(R),A2+
1399 X1
1400
1401%nl,z
1402 F
1403 tst R
1404 X0
1405 tst R+
1406 X1
1407
1408%nl,c
1409%nl,au
1410 F
1411 tst R
1412 X0
1413 cmp R+,A2
1414 X1
1415
1416%[lcmp3:]
1417%nl,al
1418 F
1419 I R,A2
1420 X0
1421 I R+,A2+
1422 X1
1423
1424%[lcmp4:]
1425%nl*,el*
1426 F*
1427 S1*
1428 I #1(R),#2(R1)
1429 X0
1430 I #1+2(R),#2+2(R1)
1431 X1
1432
1433%[lcmp5:]
1434%nl,el*
1435 F
1436 S1*
1437 I R,#2(R1)
1438 X0
1439 I R+,#2+2(R1)
1440 X1
1441
1442%[lcmp6:]
1443%nl,nl
1444 FS
1445 S
1446 mov R,-(sp)
1447 mov 4(sp),R
1448 mov (sp)+,2(sp)
1449 I (sp)+,(sp)+
1450 X0
1451 I R,R+
1452 X1
1453
1454/ & as in "if ((a&b) ==0)"
1455cc81:
1456%a,a
1457% [move3]
1458
1459%n*,a
1460% [move6]
1461
1462%n,a
1463% [add1]
1464
1465%n,e
1466% [add3]
1467
1468%n,n
1469% [add5]
1470
1471%al,c
1472%al,au
1473 /bit $0,A1
1474 /X0
1475 bit A2,A1+
1476 X1
1477
1478%nl*,c
1479%nl*,au
1480 F*
1481 /bit $0,#2(R)
1482 /X0
1483 bit A2,#2+2(R)
1484 X1
1485
1486%al,al
1487% [lcmp1]
1488
1489%nl*,al
1490% [lcmp2]
1491
1492%nl,al
1493% [lcmp3]
1494
1495%nl*,el*
1496% [lcmp4]
1497
1498%nl,el*
1499% [lcmp5]
1500
1501%nl,nl
1502% [lcmp6]
1503
1504%nl,c
1505%nl,au
1506 F
1507 /bit $0,R
1508 /X0
1509 bit A2,R+
1510 X1
1511
1512/ set codes right
1513rest:
1514%n,n
1515%nf,nf
1516 H
1517
1518/
1519/ c code tables-- expression to -(sp)
1520/
1521
1522.globl _sptab
1523
1524.data
1525_sptab=.
1526 106.; cs106
1527 40.; cs40
1528 41.; cs40
1529 55.; cs40
1530 48.; cs40
1531 58.; cs58
1532 56.; cs56
1533 0
1534.text
1535
1536/ name
1537cs106:
1538%z,n
1539%zf,n
1540 clrB1 -(sp)
1541
1542%aw,n
1543 mov A1,-(sp)
1544
1545%nw*,n
1546 F*
1547 mov #1(R),-(sp)
1548
1549%al,n
1550 mov A1+,-(sp)
1551 mov A1,-(sp)
1552
1553/ +, -, |, &~
1554cs40:
1555%a,1
1556 FS
1557 I' (sp)
1558
1559%a,aw
1560 FS
1561 I A2,(sp)
1562
1563%a,nw*
1564 FS
1565 S*
1566 I #2(R),(sp)
1567
1568%a,n
1569 FS
1570 S
1571 I R,(sp)
1572
1573/ integer to long
1574cs58:
1575%nu,n
1576 FS
1577 clr -(sp)
1578
1579%n,n
1580 FS
1581 sxt -(sp)
1582
1583/ float to long
1584cs56:
1585%nf,n
1586 F
1587 setl
1588 movfi R,-(sp)
1589 seti
1590
1591/ setup for structure assign
1592ci116:
1593%n,e
1594 F!
1595 S1!
1596
1597%n,n
1598 SS
1599 F!
1600 mov (sp)+,r1
1601