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 63: cr102: 64: %a,n 65: jmp A1 66: 67: %n*,n 68: F* 69: jmp #1(R) 70: 71: / call 72: cr100: 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 85: cr106: 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 121: cr32: 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, ~ 174: cr37: 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: / = 187: cr80: 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. 258: cr16: 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: / +, -, |, &~, << 275: cr40: 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 352: cr49: 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 << -) 374: cr45: 375: %n,1 376: F 377: asr R 378: 379: / * -- R must be odd on integers 380: cr42: 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 398: cr43: 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: / =+, =-, =|, =&~ 435: cr70: 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) 571: cr72: 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 596: cr73: 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 645: cr74: 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 676: cr79: 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 =<< -) 696: cr75: 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 707: cr91: 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 724: cr51: 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 737: cr52: 738: %nf,n 739: F 740: movfi R,R 741: 742: / double (float) to long 743: cr56: 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 753: cr57: 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 772: cr58: 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 792: cr59: 793: %al,n 794: mov A1+,R 795: 796: %nl*,n 797: F* 798: mov #1+2(R),R 799: 800: / *, /, remainder for longs. 801: cr82: 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. 810: cr86: 811: %n,nl 812: SS 813: FS 814: jsr pc,I 815: add $6,sp 816: 817: / convert integer to character (sign extend) 818: cr109: 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: / = 850: ci80: 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 =& ~ 1025: ci78: 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: / =^ 1084: ci79: 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: / =+ 1099: ci70: 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 =<< -) 1173: ci75: 1174: %a,1 1175: asrB1 A1 1176: 1177: %n*,1 1178: F* 1179: asrB1 #1(R) 1180: 1181: / =<< 1182: ci76: 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 1202: cr92: 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 = ... 1228: ci16: 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 1300: cc60: 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)" 1455: cc81: 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 1513: rest: 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 1537: cs106: 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: / +, -, |, &~ 1554: cs40: 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 1574: cs58: 1575: %nu,n 1576: FS 1577: clr -(sp) 1578: 1579: %n,n 1580: FS 1581: sxt -(sp) 1582: 1583: / float to long 1584: cs56: 1585: %nf,n 1586: F 1587: setl 1588: movfi R,-(sp) 1589: seti 1590: 1591: / setup for structure assign 1592: ci116: 1593: %n,e 1594: F! 1595: S1! 1596: 1597: %n,n 1598: SS 1599: F! 1600: mov (sp)+,r1