home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / c / table.s < prev   
Encoding:
Text File  |  1979-05-03  |  11.8 KB  |  1,602 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.     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
  1601.  
  1602.