home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / c / table.s < prev   
Encoding:
Text File  |  1975-07-18  |  9.4 KB  |  1,256 lines

  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.     44.;    cr43
  24.     45.;    cr45
  25.     46.;    cr40
  26.     55.;     cr40
  27.     48.;    cr40
  28.     49.;    cr49
  29.     70.;    cr70
  30.     71.;    cr70
  31.     72.;    cr72
  32.     73.;    cr73
  33.     74.;    cr74
  34.     75.;    cr75
  35.     76.;    cr72
  36.     78.;    cr70
  37.     85.;    cr70
  38.     79.;    cr79
  39.     102.;    cr102
  40.     51.;    cr51
  41.     52.;    cr52
  42.     56.;    cr56
  43.     57.;    cr57
  44.     58.;    cr58
  45.     59.;    cr59
  46.     91.;    cr91
  47.     82.;    cr82
  48.     83.;    cr82
  49.     84.;    cr82
  50.     86.;    cr86
  51.     87.;    cr86
  52.     88.;    cr86
  53.     0
  54. .text
  55.  
  56. / goto
  57. cr102:
  58. %a,n
  59.     jmp    A1
  60.  
  61. %n*,n
  62.     F*
  63.     jmp    #1(R)
  64.  
  65. / call
  66. cr100:
  67. %a,n
  68.     jsr    pc,IA1
  69.  
  70. %n*,n
  71.     F*
  72.     jsr    pc,#1(R)
  73.  
  74. %n,n
  75.     F
  76.     jsr    pc,(R)
  77.  
  78. / addressible
  79. cr106:
  80. %z,n
  81.     clr    R
  82.  
  83. %zf,n
  84.     clrf    R
  85.  
  86. %a,n
  87. %ad,n
  88.     movB1    A1,R
  89.  
  90. %af,n
  91.     movof    A1,R
  92.  
  93. %n*,n
  94. %nd*,n
  95.     F*
  96.     movB1    #1(R),R
  97.  
  98. %nf*,n
  99.     F*
  100.     movof    #1(R),R
  101.  
  102. %al,n
  103.     mov    A1+,R+
  104.     mov    A1,R
  105.  
  106. %nl*,n
  107.     F*
  108.     mov    #1+2(R),R+
  109.     mov    #1(R),R
  110.  
  111. / ++,-- postfix
  112. cr32:
  113. %a,1
  114.     movB1    A1',R
  115.     I'B1    A1
  116.  
  117. %aw,n
  118.     mov    A1',R
  119.     I    A2,A1
  120.  
  121. %e*,1
  122.     F1*
  123.     movB1    #1(R1),R
  124.     I'B1    #1(R1)
  125.  
  126. %n*,1
  127.     F*
  128.     movB1    #1(R),-(sp)
  129.     I'B1    #1(R)
  130.     movB1    (sp)+,R
  131.  
  132. %ew*,n
  133.     F1*
  134.     mov    #1(R1),R
  135.     I    A2,#1(R1)
  136.  
  137. %nw*,n
  138.     F*
  139.     mov    #1(R),-(sp)
  140.     I    A2,#1(R)
  141.     mov    (sp)+,R
  142.  
  143. %al,1
  144.     F
  145.     I    $1,A1+
  146.     V    A1
  147.  
  148. %el*,1
  149.     F1*
  150.     mov    #1+2(R1),R+
  151.     mov    #1(R1),R
  152.     I    $1,#1+2(R1)
  153.     V    #1(R1)
  154.  
  155. %nl*,1
  156.     F*
  157.     mov    #1+2(R),-(sp)
  158.     mov    #1(R),-(sp)
  159.     add    $1,#1+2(R)
  160.     V    #1(R)
  161.     mov    (sp)+,R
  162.     mov    (sp)+,R+
  163.  
  164. / - unary, ~
  165. cr37:
  166. %n,n
  167. %nf,n
  168.     F
  169.     IBF    R
  170.  
  171. %nl,n
  172.     F
  173.     I    R
  174.     I    R+
  175.     V    R
  176.  
  177. / =
  178. cr80:
  179. %a,n
  180. %ad,nf
  181.     S
  182.     movB1    R,A1
  183.  
  184. %af,nf
  185.     S
  186.     movfo    R,A1
  187.  
  188. %nd*,af
  189.     F*
  190.     S
  191.     movf    R,#1(R)
  192.  
  193. %n*,a
  194.     F*
  195.     movB1    A2,#1(R)
  196.     movB1    #1(R),R
  197.  
  198. %nf*,af
  199.     F*
  200.     S
  201.     movfo    R,#1(R)
  202.  
  203. %n*,e
  204.     F*
  205.     S1
  206.     movB1    R1,#1(R)
  207.     movB1    R1,R
  208.  
  209. %ed*,nf
  210.     S
  211.     F1*
  212.     movf    R,#1(R1)
  213.  
  214. %ef*,nf
  215.     S
  216.     F1*
  217.     movfo    R,#1(R1)
  218.  
  219. %n*,n
  220. %nd*,nf
  221.     FS*
  222.     S
  223.     movB1    R,*(sp)+
  224.  
  225. %nf*,nf
  226.     FS*
  227.     S
  228.     movfo    R,*(sp)+
  229.  
  230. / +, -, |, &~, <<
  231. cr40:
  232. %n,z
  233.     F
  234.  
  235. %n,1
  236.     F
  237.     I'    R
  238.  
  239. %[add1:]
  240. %n,aw
  241. %nf,ad
  242.     F
  243.     IB2    A2,R
  244.  
  245. %[add2:]
  246. %n,ew*
  247. %nf,ed*
  248.     F
  249.     S1*
  250.     IB2    #2(R1),R
  251.  
  252. %[add3:]
  253. %n,e
  254. %nf,ef
  255.     F
  256.     S1
  257.     IBF    R1,R
  258.  
  259. %[add4:]
  260. %n,nw*
  261. %nf,nd*
  262.     SS*
  263.     F
  264.     IB2    *(sp)+,R
  265.  
  266. %[add5:]
  267. %n,n
  268. %nf,nf
  269.     SS
  270.     F
  271.     IBF    (sp)+,R
  272.  
  273. %nl,c
  274.     F
  275.     I    A2,R+
  276.     V    R
  277.  
  278. %nl,al
  279.     F
  280.     I    A2,R
  281.     I    A2+,R+
  282.     V    R
  283.  
  284. %nl,el
  285.     F
  286.     S1
  287.     I    R1+,R+
  288.     V    R
  289.     I    R1,R
  290.  
  291. %nl,nl
  292.     SS
  293.     F
  294.     I    (sp)+,R
  295.     I    (sp)+,R+
  296.     V    R
  297.  
  298. / ^ -- xor
  299. cr49:
  300. %n,e
  301. %    [add3]
  302.  
  303. %n,n
  304.     FS
  305.     S
  306.     xor    R,(sp)
  307.     mov    (sp)+,R
  308.  
  309. / >> (all complicated cases taken care of by << -)
  310. cr45:
  311. %n,1
  312.     F
  313.     asr    R
  314.  
  315. / * -- R must be odd on integers
  316. cr42:
  317. %n,aw
  318. %nf,ad
  319. %    [add1]
  320.  
  321. %n,ew*
  322. %nf,ed*
  323. %    [add2]
  324.  
  325. %n,e
  326. %nf,ef
  327. %    [add3]
  328.  
  329. %n,n
  330. %nf,nf
  331. %    [add5]
  332.  
  333. / / R must be odd on integers
  334. cr43:
  335. %n,aw
  336.     F
  337.     T
  338.     sxt    R-
  339.     div    A2,R-
  340.  
  341. %n,ew*
  342.     F
  343.     T
  344.     sxt    R-
  345.     S1*
  346.     div    #2(R1),R-
  347.  
  348. %n,e
  349.     F
  350.     T
  351.     sxt    R-
  352.     S1
  353.     div    R1,R-
  354.  
  355. %n,n
  356.     SS
  357.     F
  358.     T
  359.     sxt    R-
  360.     div    (sp)+,R-
  361.  
  362. %nf,ad
  363. %    [add1]
  364.  
  365. %nf,ed*
  366. %    [add2]
  367.  
  368. %nf,ef
  369. %    [add3]
  370.  
  371. %nf,nf
  372. %    [add5]
  373.  
  374. / =+, =-, =|, =&~
  375. cr70:
  376. %[addq1:]
  377. %aw,aw
  378.     I    A2,A1'
  379.     mov    A1,R
  380.  
  381. %[addq1a:]
  382. %a,aw
  383. %ad,ad
  384.     movB1    A1',R
  385.     IBF    A2,R
  386.     movB1    R,A1
  387.  
  388. %[addq2:]
  389. %aw,nw*
  390.     S*
  391.     I    #2(R),A1'
  392.     mov    A1,R
  393.  
  394. %[addq3:]
  395. %aw,n
  396.     S
  397.     I    R,A1'
  398.     mov    A1,R
  399.  
  400. %[addq4:]
  401. %ew*,nw*
  402.     S*
  403.     F1*
  404.     I    #2(R),#1(R1)
  405.     mov    #1(R1),R
  406.  
  407. %[addq4a:]
  408. %ad,ef
  409.     movf    A1',R
  410.     S1
  411.     IBF    R1,R
  412.     movf    R,A1
  413.  
  414. %[addq5:]
  415. %a,n
  416. %ad,nf
  417.     SS
  418.     movB1    A1',R
  419.     IBF    (sp)+,R
  420.     movB1    R,A1
  421.  
  422. %[addq6:]
  423. %af,nf
  424.     SS
  425.     movof    A1',R
  426.     IBF    (sp)+,R
  427.     movfo    R,A1
  428.  
  429. %[addq7:]
  430. %ew*,n
  431.     S
  432.     F1*
  433.     I    R,#1(R1)
  434.     mov    #1(R1),R
  435.  
  436. %[addq8:]
  437. %nw*,n
  438.     SS
  439.     F*
  440.     I    (sp)+,#1(R)
  441.     mov    #1(R),R
  442.  
  443. %[addq9:]
  444. %n*,n
  445.     FS*
  446.     SS
  447.     movB1    *2(sp),R
  448.     IBF    (sp)+,R
  449.     movB1    R,*(sp)+
  450.  
  451. %[addq9a:]
  452. %nd*,nf
  453.     SS
  454.     F*
  455.     movB1    #1(R),R
  456.     IBF    (sp)+,R
  457.     movB1    R,#1(R)
  458.  
  459. %[addq10:]
  460. %nf*,nf
  461.     SS
  462.     F*
  463.     movof    #1(R),R1
  464.     IBF    (sp)+,R1
  465.     movfo    R1,#1(R)
  466.     movf    R1,R
  467.  
  468. / =*, =<< (for integer multiply, R must be odd)
  469. cr72:
  470. %a,aw
  471. %ad,ad
  472. %    [addq1a]
  473.  
  474. %af,nf
  475. %    [addq6]
  476.  
  477. %ad,ef
  478. %    [addq4a]
  479.  
  480. %a,n
  481. %ad,nf
  482. %    [addq5]
  483.  
  484. %n*,n
  485. %    [addq9]
  486.  
  487. %nd*,nf
  488. %    [addq9a]
  489.  
  490. %nf*,nf
  491. %    [addq10]
  492.  
  493. / =/ ;  R must be odd on integers
  494. cr73:
  495. %a,aw
  496.     movB1    A1',R
  497.     sxt    R-
  498.     divBF    A2,R-
  499.     movB1    R-,A1
  500.  
  501. %a,n
  502.     SS
  503.     movB1    A1',R
  504.     sxt    R-
  505.     div    (sp)+,R-
  506.     movB1    R-,A1
  507.  
  508. %e*,n
  509.     SS
  510.     F1*
  511.     movB1    #1(R1),R
  512.     sxt    R-
  513.     div    (sp)+,R-
  514.     movB1    R-,#1(R1)
  515.  
  516. %n*,n
  517.     FS*
  518.     SS
  519.     movB1    *2(sp),R
  520.     sxt    R-
  521.     div    (sp)+,R-
  522.     movB1    R-,*(sp)+
  523.  
  524. %ad,ad
  525. %    [addq1a]
  526.  
  527. %ad,ef
  528. %    [addq4a]
  529.  
  530. %ad,nf
  531. %    [addq5]
  532.  
  533. %af,nf
  534. %    [addq6]
  535.  
  536. %nd*,nf
  537. %    [addq9a]
  538.  
  539. %nf*,nf
  540. %    [addq10]
  541.  
  542. / =mod; R must be odd on integers
  543. cr74:
  544. %a,aw
  545.     movB1    A1',R
  546.     sxt    R-
  547.     div    A2,R-
  548.     movB1    R,A1
  549.  
  550. %a,n
  551.     SS
  552.     movB1    A1',R
  553.     sxt    R-
  554.     div    (sp)+,R-
  555.     movB1    R,A1
  556.  
  557. %e*,n
  558.     SS
  559.     F1*
  560.     movB1    #1(R1),R
  561.     sxt    R-
  562.     div    (sp)+,R-
  563.     movB1    R,#1(R1)
  564.  
  565. %n*,n
  566.     FS*
  567.     SS
  568.     movB1    *2(sp),R
  569.     sxt    R-
  570.     div    (sp)+,R-
  571.     mov    R,*(sp)+
  572.  
  573. / =^ -- =xor
  574. cr79:
  575. %aw,n
  576. %    [addq3]
  577.  
  578. %ab,n
  579.     SS
  580.     movb    A1',R
  581.     xor    R,(sp)
  582.     mov    (sp)+,R
  583.     movb    R,A1
  584.  
  585. %n*,n
  586.     FS*
  587.     movB1    *(sp),-(sp)
  588.     S
  589.     xor    R,(sp)
  590.     movB1    (sp)+,R
  591.     movB1    R,*(sp)+
  592.  
  593. / =>> (all complicated cases done by =<< -)
  594. cr75:
  595. %a,1
  596.     asrB1    A1'
  597.     movB1    A1,R
  598.  
  599. %n*,1
  600.     F*
  601.     asrB1    #1(R)
  602.     movB1    #1(R),R
  603.  
  604. / << for longs
  605. cr91:
  606. %nl,aw
  607. %    [add1]
  608.  
  609. %nl,ew*
  610. %    [add2]
  611.  
  612. %nl,e
  613. %    [add3]
  614.  
  615. %nl,nw*
  616. %    [add4]
  617.  
  618. %nl,n
  619. %    [add5]
  620.  
  621. / int -> float
  622. cr51:
  623. %aw,n
  624.     movif    A1,R
  625.  
  626. %nw*,n
  627.     F*
  628.     movif    #1(R),R
  629.  
  630. %n,n
  631.     F
  632.     movif    R,R
  633.  
  634. / float, double -> int
  635. cr52:
  636. %nf,n
  637.     F
  638.     movfi    R,R
  639.  
  640. / double (float) to long
  641. cr56:
  642. %nf,n
  643.     F
  644.     setl
  645.     movfi    R,-(sp)
  646.     mov    (sp)+,R
  647.     mov    (sp)+,R+
  648.     seti
  649.  
  650. / long to double
  651. cr57:
  652. %al,n
  653.     setl
  654.     movif    A1,R
  655.     seti
  656.  
  657. %nl*,n
  658.     F*
  659.     setl
  660.     movif    #1(R),R
  661.     seti
  662.  
  663. %nl,n
  664.     FS
  665.     setl
  666.     movif    (sp)+,R
  667.     seti
  668.  
  669. / integer to long
  670. cr58:
  671. %n,n
  672.     F1!
  673.     sxt    R
  674.  
  675. / long to integer
  676. cr59:
  677. %al,n
  678.     mov    A1+,R
  679.  
  680. %nl*,n
  681.     F*
  682.     mov    #1+2(R),R
  683.  
  684. %nl,n
  685.     F
  686.     mov    R+,R
  687.  
  688. / *, /, remainder for longs.
  689. cr82:
  690. %nl,nl
  691.     SS
  692.     FS
  693.     jsr    pc,I
  694.     add    $10,sp
  695.  
  696. / =*, =/, =rem for longs
  697. / Operands of the form &x op y, so stack space is known.
  698. cr86:
  699. %n,nl
  700.     SS
  701.     FS
  702.     jsr    pc,I
  703.     add    $6,sp
  704.  
  705. /
  706. / c code tables -- compile for side effects.
  707. / Also set condition codes properly (except for ++, --)
  708. /
  709.  
  710. .globl    _efftab
  711.  
  712. .data
  713. _efftab=.
  714.     30.;    ci70
  715.     31.;    ci70
  716.     32.;    ci70
  717.     33.;    ci70
  718.     80.;    ci80
  719.     70.;    ci70
  720.     71.;    ci70    / - like +
  721.     78.;    ci78
  722.     85.;    ci78
  723.     75.;    ci75
  724.     76.;    ci76
  725.     92.;    ci92
  726.     0
  727. .text
  728.  
  729. / =
  730. ci80:
  731. %[move1:]
  732. %a,z
  733. %ad,zf
  734.     I'B1    A1
  735.  
  736. %[move2:]
  737. %n*,z
  738. %nd*,zf
  739.     F*
  740.     I'B1    #1(R)
  741.  
  742. %[move3:]
  743. %a,aw
  744. %ab,a
  745.     IBE    A2,A1
  746.  
  747. %[move4:]
  748. %ab,n*
  749. %a,nw*
  750.     S*
  751.     IBE    #2(R),A1
  752.  
  753. %[move5:]
  754. %a,n
  755.     S
  756.     IB1    R,A1
  757.  
  758. %[move6:]
  759. %n*,aw
  760. %nb*,a
  761.     F*
  762.     IBE    A2,#1(R)
  763.  
  764. %[move7:]
  765. %n*,ew*
  766. %nb*,e*
  767.     F*
  768.     S1*
  769.     IBE    #2(R1),#1(R)
  770.  
  771. %[move8:]
  772. %n*,e
  773.     F*
  774.     S1
  775.     IB1    R1,#1(R)
  776.  
  777. %[move9:]
  778. %e*,nw*
  779. %eb*,n*
  780.     S*
  781.     F1*
  782.     IBE    #2(R),#1(R1)
  783.  
  784. %[move10:]
  785. %e*,n
  786.     S
  787.     F1*
  788.     IB1    R,#1(R1)
  789.  
  790. %[move11:]
  791. %n*,nw*
  792. %nb*,n*
  793.     FS*
  794.     S*
  795.     IBE    #2(R),*(sp)+
  796.  
  797. %[move12:]
  798. %n*,n
  799.     FS*
  800.     S
  801.     IB1    R,*(sp)+
  802.  
  803. %al,z
  804.     clr    A1
  805.     clr    A1+
  806.  
  807. %al,aw
  808.     mov    A2,A1+
  809.     sxt    A1
  810.  
  811. %al,nw*
  812.     mov    #2(R),A1+
  813.     sxt    A1
  814.  
  815. %al,n
  816.     S
  817.     mov    R,A1+
  818.     sxt    A1
  819.  
  820. %al,nf
  821.     S
  822.     setl
  823.     movfi    R,A1
  824.     seti
  825.  
  826. %el*,nf
  827.     S
  828.     F1*
  829.     setl
  830.     movfi    R,#1(R1)
  831.     seti
  832.  
  833. %[move13a:]
  834. %al,c
  835.     I    A2,A1+
  836.     V    A1
  837.  
  838. %[move13:]
  839. %al,al
  840.     I    A2,A1
  841.     I    A2+,A1+
  842.     V    A1
  843.  
  844. %[move14:]
  845. %al,nl*
  846.     S*
  847.     I    #2(R),A1
  848.     I    #2+2(R),A1+
  849.     V    A1
  850.  
  851. %[move14a:]
  852. %nl*,c
  853.     F*
  854.     I    A2,2+#1(R)
  855.     V    #1(R)
  856.  
  857. %[move15:]
  858. %al,nl
  859.     S
  860.     I    R,A1
  861.     I    R+,A1+
  862.     V    A1
  863.  
  864. %nl*,aw
  865.     F*
  866.     mov    A2,#1+2(R)
  867.     sxt    #1(R)
  868.  
  869. %[move16:]
  870. %el*,nl
  871.     S
  872.     F1*
  873.     I    R+,#1+2(R1)
  874.     V    #1(R1)
  875.     I    R,#1(R1)
  876.  
  877. %nl*,n
  878.     SS
  879.     F*
  880.     mov    (sp)+,#1+2(R)
  881.     sxt    #1(R)
  882.  
  883. %[move17:]
  884. %nl*,nl
  885.     SS
  886.     F*
  887.     I    (sp)+,#1(R)
  888.     I    (sp)+,#1+2(R)
  889.     V    #1(R)
  890.  
  891. / =| and =& ~
  892. ci78:
  893. %a,a
  894. %    [move3]
  895.  
  896. %a,n
  897. %    [move5]
  898.  
  899. %n*,a
  900. %    [move6]
  901.  
  902. %n*,e*
  903. %    [move7]
  904.  
  905. %n*,e
  906. %    [move8]
  907.  
  908. %e*,n*
  909. %    [move9]
  910.  
  911. %e*,n
  912. %    [move10]
  913.  
  914. %n*,n*
  915. %    [move11]
  916.  
  917. %n*,n
  918. %    [move12]
  919.  
  920. %al,c
  921. %    [move13a]
  922.  
  923. %al,al
  924. %    [move13]
  925.  
  926. %al,nl*
  927. %    [move14]
  928.  
  929. %al,nl
  930. %    [move15]
  931.  
  932. %nl*,c
  933. %    [move14a]
  934.  
  935. %el*,nl
  936. %    [move16]
  937.  
  938. %nl*,nl
  939. %    [move17]
  940.  
  941. / =+
  942. ci70:
  943. %n*,z
  944. %a,z
  945.  
  946. %a,1
  947.     I'B1    A1
  948.  
  949. %aw,aw
  950. %    [move3]
  951.  
  952. %aw,nw*
  953. %    [move4]
  954.  
  955. %aw,n
  956. %    [move5]
  957.  
  958. %n*,1
  959. %    [move2]
  960.  
  961. %ew*,nw*
  962. %    [move9]
  963.  
  964. %a,nw*
  965.     S*
  966.     movB1    A1',R1
  967.     I    #2(R),R1
  968.     movB1    R1,A1
  969.  
  970. %a,n
  971.     S
  972.     movB1    A1',R1
  973.     I    R,R1
  974.     movB1    R1,A1
  975.  
  976. %ew*,n
  977. %    [move10]
  978.  
  979. %nw*,n
  980. %    [move12]
  981.  
  982. %n*,n
  983.     SS
  984.     F*
  985.     movB1    #1(R),R1
  986.     I    (sp)+,R1
  987.     movB1    R1,#1(R)
  988.  
  989. %al,c
  990. %    [move13a]
  991.  
  992. %al,al
  993. %    [move13]
  994.  
  995. %al,nl*
  996. %    [move14]
  997.  
  998. %al,nl
  999. %    [move15]
  1000.  
  1001. %nl*,c
  1002. %    [move14a]
  1003.  
  1004. %el*,nl
  1005. %    [move16]
  1006.  
  1007. %nl*,nl
  1008. %    [move17]
  1009.  
  1010. / =>> (all harder cases handled by =<< -)
  1011. ci75:
  1012. %a,1
  1013.     asrB1    A1
  1014.  
  1015. %n*,1
  1016.     F*
  1017.     asrB1    #1(R)
  1018.  
  1019. / =<<
  1020. ci76:
  1021. %a,1
  1022.     aslB1    A1
  1023.  
  1024. %n*,1
  1025.     F*
  1026.     aslB1    #1(R)
  1027.  
  1028. %r,aw
  1029.     ash    A2,A1
  1030.  
  1031. %r,nw*
  1032.     S*
  1033.     ash    #2(R),A1
  1034.  
  1035. %r,n
  1036.     S
  1037.     ash    R,A1
  1038.  
  1039. / =<< for longs
  1040. ci92:
  1041. %al,aw
  1042.     F
  1043.     ashc    A2,R
  1044.     mov    R,A1
  1045.     mov    R+,A1+
  1046.  
  1047. %al,n
  1048.     SS
  1049.     F
  1050.     ashc    (sp)+,R
  1051.     mov    R,A1
  1052.     mov    R+,A1+
  1053.  
  1054. %nl*,n
  1055.     FS*
  1056.     SS
  1057.     mov    2(sp),R
  1058.     mov    2(R),R+
  1059.     mov    (R),R
  1060.     ashc    (sp)+,R
  1061.     mov    R,*(sp)
  1062.     mov    (sp)+,R
  1063.     mov    R+,2(R)
  1064.  
  1065. /
  1066. / c code tables-- set condition codes
  1067. /
  1068.  
  1069. .globl    _cctab
  1070.  
  1071. .data
  1072. _cctab=.
  1073.     106.;    cc60
  1074.     28.;    rest
  1075.     55.;    rest
  1076.     34.;    rest
  1077.     35.;    rest
  1078.     36.;    rest
  1079.     37.;    rest
  1080.     40.;    rest
  1081.     41.;    rest
  1082.     42.;    rest
  1083.     43.;    rest
  1084.     45.;    rest
  1085.     46.;    rest
  1086.     81.;    cc81    / & as in "if ((a&b)==0)"
  1087.     48.;    rest
  1088.     60.;    cc60
  1089.     61.;    cc60
  1090.     62.;    cc60
  1091.     63.;    cc60
  1092.     64.;    cc60
  1093.     65.;    cc60
  1094.     66.;    cc60
  1095.     67.;    cc60
  1096.     68.;    cc60
  1097.     69.;    cc60
  1098.     72.;    rest
  1099.     73.;    rest
  1100.     79.;    rest
  1101.     0
  1102. .text
  1103.  
  1104. / relationals
  1105. cc60:
  1106. %a,z
  1107. %ad,zf
  1108. %    [move1]
  1109.  
  1110. %af,z
  1111.     movof    A1,R
  1112.  
  1113. %n*,z
  1114. %nd*,zf
  1115. %    [move2]
  1116.  
  1117. %nf*,z
  1118.     F*
  1119.     movof    #1(R),R
  1120.  
  1121. %n,z
  1122. %nf,zf
  1123.     FC
  1124.  
  1125. %aw,aw
  1126. %ab,ab
  1127. %    [move3]
  1128.  
  1129. %nw*,aw
  1130. %nb*,ab
  1131. %    [move6]
  1132.  
  1133. %n,aw
  1134. %nf,ad
  1135. %    [add1]
  1136.  
  1137. %nw*,ew*
  1138. %nb*,eb*
  1139. %    [move7]
  1140.  
  1141. %nw*,e
  1142. %    [move8]
  1143.  
  1144. %n,ew*
  1145. %nf,ed*
  1146. %    [add2]
  1147.  
  1148. %n,e
  1149. %nf,ef
  1150. %    [add3]
  1151.  
  1152. %nw*,nw*
  1153. %nb*,nb*
  1154. %    [move11]
  1155.  
  1156. %nw*,n
  1157. %    [move12]
  1158.  
  1159. %n,n
  1160. %nf,nf
  1161. %    [add5]
  1162.  
  1163. / & as in "if ((a&b) ==0)"
  1164. cc81:
  1165. %a,a
  1166. %    [move3]
  1167.  
  1168. %n*,a
  1169. %    [move6]
  1170.  
  1171. %n,a
  1172. %    [add1]
  1173.  
  1174. %n,e
  1175. %    [add3]
  1176.  
  1177. %n,n
  1178. %    [add5]
  1179.  
  1180. / set codes right
  1181. rest:
  1182. %n,n
  1183. %nf,nf
  1184.     H
  1185.  
  1186. /
  1187. / c code tables-- expression to -(sp)
  1188. /
  1189.  
  1190. .globl    _sptab
  1191.  
  1192. .data
  1193. _sptab=.
  1194.     106.;    cs106
  1195.     40.;    cs40
  1196.     41.;    cs40
  1197.     55.;    cs40
  1198.     48.;    cs40
  1199.     58.;    cs58
  1200.     56.;    cs56
  1201.     0
  1202. .text
  1203.  
  1204.  
  1205. / name
  1206. cs106:
  1207. %z,n
  1208. %zf,n
  1209.     clrB1    -(sp)
  1210.  
  1211. %aw,n
  1212.     mov    A1,-(sp)
  1213.  
  1214. %nw*,n
  1215.     F*
  1216.     mov    #1(R),-(sp)
  1217.  
  1218. %al,n
  1219.     mov    A1+,-(sp)
  1220.     mov    A1,-(sp)
  1221.  
  1222. / +, -, |, &~
  1223. cs40:
  1224. %n,1
  1225.     FS
  1226.     I'    (sp)
  1227.  
  1228. %n,aw
  1229.     FS
  1230.     I    A2,(sp)
  1231.  
  1232. %n,nw*
  1233.     FS
  1234.     S*
  1235.     I    #2(R),(sp)
  1236.  
  1237. %n,n
  1238.     FS
  1239.     S
  1240.     I    R,(sp)
  1241.  
  1242. / integer to long
  1243. cs58:
  1244. %n,n
  1245.     FS
  1246.     sxt    -(sp)
  1247.  
  1248. / float to long
  1249. cs56:
  1250. %nf,n
  1251.     F
  1252.     setl
  1253.     movfi    R,-(sp)
  1254.     seti
  1255.  
  1256.