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