home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.pdx.edu / 2014.02.ftp.ee.pdx.edu.tar / ftp.ee.pdx.edu / pub / users / Harry / compilers / p11 / tst / call2.out.bak < prev    next >
Text File  |  2006-03-05  |  14KB  |  746 lines

  1. !
  2. ! PCAT Compiler Version 1.0
  3. !
  4.              .global  .div
  5.              .global  .rem
  6. !
  7. ! Standard data fields
  8. !
  9.              .data
  10.              .align   8
  11. temp:        .double  0
  12.              .text
  13. strNL:       .asciz   "\n"
  14. strInt:      .asciz   "%d"
  15. strFlt:      .asciz   "%g"
  16. strTrue:     .asciz   "TRUE"
  17. strFalse:    .asciz   "FALSE"
  18. message1:    .asciz   "Execution Error: Allocation failed!\n"
  19. message2:    .asciz   "Execution Error: Pointer is NIL!\n"
  20. message3:    .asciz   "Execution Error: Read statement failed!\n"
  21. message4:    .asciz   "Execution Error: Array index is out of bounds!\n"
  22. message5:    .asciz   "Execution Error: Count is not positive in array constructor!\n"
  23.              .align   8
  24. !
  25. ! runtimeError1-5
  26. !
  27. ! Branch to one of these labels to print an error message and abort.
  28. !
  29. runtimeError1:
  30.              set      message1,%o0
  31.              call     printf
  32.              nop
  33.              call     exit
  34.              mov      1,%o0
  35. runtimeError2:
  36.              set      message2,%o0
  37.              call     printf
  38.              nop
  39.              call     exit
  40.              mov      1,%o0
  41. runtimeError3:
  42.              set      message3,%o0
  43.              call     printf
  44.              nop
  45.              call     exit
  46.              mov      1,%o0
  47. runtimeError4:
  48.              set      message4,%o0
  49.              call     printf
  50.              nop
  51.              call     exit
  52.              mov      1,%o0
  53. runtimeError5:
  54.              set      message5,%o0
  55.              call     printf
  56.              nop
  57.              call     exit
  58.              mov      1,%o0
  59. ! writeFlt
  60. !
  61. ! This routine is passed a single precision floating number in %f0.
  62. ! It prints it by calling printf.  It uses registers %f0, %f1.
  63. !
  64. writeFlt:
  65.         save    %sp,-128,%sp
  66.         fstod   %f0,%f0
  67.         set     temp,%l0
  68.         std     %f0,[%l0]
  69.         ldd     [%l0],%o0
  70.         mov     %o1,%o2
  71.         mov     %o0,%o1
  72.         set     strFlt,%o0
  73.         call    printf
  74.         nop
  75.         ret
  76.         restore
  77. ! writeBool
  78. !
  79. ! This routine is passed an integer in %i0/o0.  It prints "FALSE" if this
  80. ! integer is 0 and "TRUE" otherwise.
  81. !
  82. writeBool:
  83.         save    %sp,-128,%sp
  84.         cmp     %i0,%g0
  85.         be      printFalse
  86.         nop
  87.         set     strTrue,%o0
  88.         ba      printEnd
  89.         nop
  90. printFalse:
  91.         set     strFalse,%o0
  92. printEnd:
  93.         call    printf
  94.         nop
  95.         ret
  96.         restore
  97. !
  98. ! Additional Fields
  99. !
  100.     .data
  101. display0:    .word    0
  102. display1:    .word    0
  103. display2:    .word    0
  104.     .text
  105. float6:    .single    0r1.9002
  106. float5:    .single    0r1.9001
  107. float4:    .single    0r1.9
  108. float3:    .single    0r0.9002
  109. float2:    .single    0r0.9001
  110. float1:    .single    0r0.9
  111. str43:    .asciz    "...Leaving foo2"
  112. str42:    .asciz    ", z2 = "
  113. str41:    .asciz    ", y2 = "
  114. str40:    .asciz    "x2 = "
  115. str39:    .asciz    ", z1 = "
  116. str38:    .asciz    ", y1 = "
  117. str37:    .asciz    "x1 = "
  118. str36:    .asciz    ", z0 = "
  119. str35:    .asciz    ", y0 = "
  120. str34:    .asciz    "x0 = "
  121. str33:    .asciz    "Changing non-locals..."
  122. str32:    .asciz    ", z2 = "
  123. str31:    .asciz    ", y2 = "
  124. str30:    .asciz    "x2 = "
  125. str29:    .asciz    ", z1 = "
  126. str28:    .asciz    ", y1 = "
  127. str27:    .asciz    "x1 = "
  128. str26:    .asciz    ", z0 = "
  129. str25:    .asciz    ", y0 = "
  130. str24:    .asciz    "x0 = "
  131. str23:    .asciz    "Within foo2..."
  132. str22:    .asciz    "...Leaving foo1"
  133. str21:    .asciz    ", z1 = "
  134. str20:    .asciz    ", y1 = "
  135. str19:    .asciz    "x1 = "
  136. str18:    .asciz    ", z0 = "
  137. str17:    .asciz    ", y0 = "
  138. str16:    .asciz    "x0 = "
  139. str15:    .asciz    ", z1 = "
  140. str14:    .asciz    ", y1 = "
  141. str13:    .asciz    "x1 = "
  142. str12:    .asciz    ", z0 = "
  143. str11:    .asciz    ", y0 = "
  144. str10:    .asciz    "x0 = "
  145. str9:    .asciz    "Within foo1..."
  146. str8:    .asciz    "...Leaving main"
  147. str7:    .asciz    ", z0 = "
  148. str6:    .asciz    ", y0 = "
  149. str5:    .asciz    "x0 = "
  150. str4:    .asciz    ", z0 = "
  151. str3:    .asciz    ", y0 = "
  152. str2:    .asciz    "x0 = "
  153. str1:    .asciz    "Within main..."
  154.     .align    8
  155. ! MAIN...
  156. !   mainEntry
  157.     .global    main
  158. main:    save    %sp,-104,%sp
  159.     set    display0,%o0
  160.     st    %fp,[%o0]
  161. ! VAR INITIALIZATION...
  162. !   x0 := 0
  163.     set    0,%o0
  164.     st    %o0,[%fp+-4]
  165. ! VAR INITIALIZATION...
  166. !   y0 := x0
  167.     ld    [%fp+-4],%o0
  168.     st    %o0,[%fp+-8]
  169. ! VAR INITIALIZATION...
  170. !   z0 := 0.9
  171.     set    float1,%o0
  172.     ld    [%o0],%o0
  173.     st    %o0,[%fp+-12]
  174. ! WRITE STMT...
  175. !   writeString str1
  176.     sethi    %hi(str1),%o0
  177.     call    printf
  178.     or    %o0,%lo(str1),%o0
  179. !   writeNewline
  180.     sethi    %hi(strNL),%o0
  181.     call    printf
  182.     or    %o0,%lo(strNL),%o0
  183. ! WRITE STMT...
  184. !   writeString str2
  185.     sethi    %hi(str2),%o0
  186.     call    printf
  187.     or    %o0,%lo(str2),%o0
  188. !   writeInt x0
  189.     ld    [%fp+-4],%o1
  190.     sethi    %hi(strInt),%o0
  191.     call    printf
  192.     or    %o0,%lo(strInt),%o0
  193. !   writeString str3
  194.     sethi    %hi(str3),%o0
  195.     call    printf
  196.     or    %o0,%lo(str3),%o0
  197. !   writeInt y0
  198.     ld    [%fp+-8],%o1
  199.     sethi    %hi(strInt),%o0
  200.     call    printf
  201.     or    %o0,%lo(strInt),%o0
  202. !   writeString str4
  203.     sethi    %hi(str4),%o0
  204.     call    printf
  205.     or    %o0,%lo(str4),%o0
  206. !   writeFloat z0
  207.     ld    [%fp+-12],%f0
  208.     call    writeFlt
  209.     nop
  210. !   writeNewline
  211.     sethi    %hi(strNL),%o0
  212.     call    printf
  213.     or    %o0,%lo(strNL),%o0
  214. ! CALL STMT...
  215. !   call p1_foo1
  216.     call    p1_foo1
  217.     nop
  218. ! WRITE STMT...
  219. !   writeString str5
  220.     sethi    %hi(str5),%o0
  221.     call    printf
  222.     or    %o0,%lo(str5),%o0
  223. !   writeInt x0
  224.     ld    [%fp+-4],%o1
  225.     sethi    %hi(strInt),%o0
  226.     call    printf
  227.     or    %o0,%lo(strInt),%o0
  228. !   writeString str6
  229.     sethi    %hi(str6),%o0
  230.     call    printf
  231.     or    %o0,%lo(str6),%o0
  232. !   writeInt y0
  233.     ld    [%fp+-8],%o1
  234.     sethi    %hi(strInt),%o0
  235.     call    printf
  236.     or    %o0,%lo(strInt),%o0
  237. !   writeString str7
  238.     sethi    %hi(str7),%o0
  239.     call    printf
  240.     or    %o0,%lo(str7),%o0
  241. !   writeFloat z0
  242.     ld    [%fp+-12],%f0
  243.     call    writeFlt
  244.     nop
  245. !   writeNewline
  246.     sethi    %hi(strNL),%o0
  247.     call    printf
  248.     or    %o0,%lo(strNL),%o0
  249. ! WRITE STMT...
  250. !   writeString str8
  251.     sethi    %hi(str8),%o0
  252.     call    printf
  253.     or    %o0,%lo(str8),%o0
  254. !   writeNewline
  255.     sethi    %hi(strNL),%o0
  256.     call    printf
  257.     or    %o0,%lo(strNL),%o0
  258. ! MAIN EXIT...
  259. !   mainExit
  260.     ret
  261.     restore
  262. ! PROCEDURE...
  263. !   procEntry p1_foo1,lexLev=1,frameSize=104
  264. p1_foo1:    save    %sp,-104,%sp
  265.     set    display1,%o0
  266.     ld    [%o0],%o1
  267.     st    %o1,[%fp+64]
  268.     st    %fp,[%o0]
  269. ! VAR INITIALIZATION...
  270. !   x1 := 1
  271.     set    1,%o0
  272.     st    %o0,[%fp+-4]
  273. ! VAR INITIALIZATION...
  274. !   y1 := x1
  275.     ld    [%fp+-4],%o0
  276.     st    %o0,[%fp+-8]
  277. ! VAR INITIALIZATION...
  278. !   z1 := 0.9001
  279.     set    float2,%o0
  280.     ld    [%o0],%o0
  281.     st    %o0,[%fp+-12]
  282. ! WRITE STMT...
  283. !   writeString str9
  284.     sethi    %hi(str9),%o0
  285.     call    printf
  286.     or    %o0,%lo(str9),%o0
  287. !   writeNewline
  288.     sethi    %hi(strNL),%o0
  289.     call    printf
  290.     or    %o0,%lo(strNL),%o0
  291. ! WRITE STMT...
  292. !   writeString str10
  293.     sethi    %hi(str10),%o0
  294.     call    printf
  295.     or    %o0,%lo(str10),%o0
  296. !   writeInt x0
  297.     set    display0,%o1
  298.     ld    [%o1],%o1
  299.     ld    [%o1+-4],%o1
  300.     sethi    %hi(strInt),%o0
  301.     call    printf
  302.     or    %o0,%lo(strInt),%o0
  303. !   writeString str11
  304.     sethi    %hi(str11),%o0
  305.     call    printf
  306.     or    %o0,%lo(str11),%o0
  307. !   writeInt y0
  308.     set    display0,%o1
  309.     ld    [%o1],%o1
  310.     ld    [%o1+-8],%o1
  311.     sethi    %hi(strInt),%o0
  312.     call    printf
  313.     or    %o0,%lo(strInt),%o0
  314. !   writeString str12
  315.     sethi    %hi(str12),%o0
  316.     call    printf
  317.     or    %o0,%lo(str12),%o0
  318. !   writeFloat z0
  319.     set    display0,%o1
  320.     ld    [%o1],%o1
  321.     ld    [%o1+-12],%f0
  322.     call    writeFlt
  323.     nop
  324. !   writeNewline
  325.     sethi    %hi(strNL),%o0
  326.     call    printf
  327.     or    %o0,%lo(strNL),%o0
  328. ! WRITE STMT...
  329. !   writeString str13
  330.     sethi    %hi(str13),%o0
  331.     call    printf
  332.     or    %o0,%lo(str13),%o0
  333. !   writeInt x1
  334.     ld    [%fp+-4],%o1
  335.     sethi    %hi(strInt),%o0
  336.     call    printf
  337.     or    %o0,%lo(strInt),%o0
  338. !   writeString str14
  339.     sethi    %hi(str14),%o0
  340.     call    printf
  341.     or    %o0,%lo(str14),%o0
  342. !   writeInt y1
  343.     ld    [%fp+-8],%o1
  344.     sethi    %hi(strInt),%o0
  345.     call    printf
  346.     or    %o0,%lo(strInt),%o0
  347. !   writeString str15
  348.     sethi    %hi(str15),%o0
  349.     call    printf
  350.     or    %o0,%lo(str15),%o0
  351. !   writeFloat z1
  352.     ld    [%fp+-12],%f0
  353.     call    writeFlt
  354.     nop
  355. !   writeNewline
  356.     sethi    %hi(strNL),%o0
  357.     call    printf
  358.     or    %o0,%lo(strNL),%o0
  359. ! CALL STMT...
  360. !   call p2_foo2
  361.     call    p2_foo2
  362.     nop
  363. ! WRITE STMT...
  364. !   writeString str16
  365.     sethi    %hi(str16),%o0
  366.     call    printf
  367.     or    %o0,%lo(str16),%o0
  368. !   writeInt x0
  369.     set    display0,%o1
  370.     ld    [%o1],%o1
  371.     ld    [%o1+-4],%o1
  372.     sethi    %hi(strInt),%o0
  373.     call    printf
  374.     or    %o0,%lo(strInt),%o0
  375. !   writeString str17
  376.     sethi    %hi(str17),%o0
  377.     call    printf
  378.     or    %o0,%lo(str17),%o0
  379. !   writeInt y0
  380.     set    display0,%o1
  381.     ld    [%o1],%o1
  382.     ld    [%o1+-8],%o1
  383.     sethi    %hi(strInt),%o0
  384.     call    printf
  385.     or    %o0,%lo(strInt),%o0
  386. !   writeString str18
  387.     sethi    %hi(str18),%o0
  388.     call    printf
  389.     or    %o0,%lo(str18),%o0
  390. !   writeFloat z0
  391.     set    display0,%o1
  392.     ld    [%o1],%o1
  393.     ld    [%o1+-12],%f0
  394.     call    writeFlt
  395.     nop
  396. !   writeNewline
  397.     sethi    %hi(strNL),%o0
  398.     call    printf
  399.     or    %o0,%lo(strNL),%o0
  400. ! WRITE STMT...
  401. !   writeString str19
  402.     sethi    %hi(str19),%o0
  403.     call    printf
  404.     or    %o0,%lo(str19),%o0
  405. !   writeInt x1
  406.     ld    [%fp+-4],%o1
  407.     sethi    %hi(strInt),%o0
  408.     call    printf
  409.     or    %o0,%lo(strInt),%o0
  410. !   writeString str20
  411.     sethi    %hi(str20),%o0
  412.     call    printf
  413.     or    %o0,%lo(str20),%o0
  414. !   writeInt y1
  415.     ld    [%fp+-8],%o1
  416.     sethi    %hi(strInt),%o0
  417.     call    printf
  418.     or    %o0,%lo(strInt),%o0
  419. !   writeString str21
  420.     sethi    %hi(str21),%o0
  421.     call    printf
  422.     or    %o0,%lo(str21),%o0
  423. !   writeFloat z1
  424.     ld    [%fp+-12],%f0
  425.     call    writeFlt
  426.     nop
  427. !   writeNewline
  428.     sethi    %hi(strNL),%o0
  429.     call    printf
  430.     or    %o0,%lo(strNL),%o0
  431. ! WRITE STMT...
  432. !   writeString str22
  433.     sethi    %hi(str22),%o0
  434.     call    printf
  435.     or    %o0,%lo(str22),%o0
  436. !   writeNewline
  437.     sethi    %hi(strNL),%o0
  438.     call    printf
  439.     or    %o0,%lo(strNL),%o0
  440. ! RETURN...
  441. !   returnVoid
  442.     set    display1,%o0
  443.     ld    [%fp+64],%o1
  444.     st    %o1,[%o0]
  445.     ret
  446.     restore
  447. ! PROCEDURE...
  448. !   procEntry p2_foo2,lexLev=2,frameSize=104
  449. p2_foo2:    save    %sp,-104,%sp
  450.     set    display2,%o0
  451.     ld    [%o0],%o1
  452.     st    %o1,[%fp+64]
  453.     st    %fp,[%o0]
  454. ! VAR INITIALIZATION...
  455. !   x2 := 2
  456.     set    2,%o0
  457.     st    %o0,[%fp+-4]
  458. ! VAR INITIALIZATION...
  459. !   y2 := x2
  460.     ld    [%fp+-4],%o0
  461.     st    %o0,[%fp+-8]
  462. ! VAR INITIALIZATION...
  463. !   z2 := 0.9002
  464.     set    float3,%o0
  465.     ld    [%o0],%o0
  466.     st    %o0,[%fp+-12]
  467. ! WRITE STMT...
  468. !   writeString str23
  469.     sethi    %hi(str23),%o0
  470.     call    printf
  471.     or    %o0,%lo(str23),%o0
  472. !   writeNewline
  473.     sethi    %hi(strNL),%o0
  474.     call    printf
  475.     or    %o0,%lo(strNL),%o0
  476. ! WRITE STMT...
  477. !   writeString str24
  478.     sethi    %hi(str24),%o0
  479.     call    printf
  480.     or    %o0,%lo(str24),%o0
  481. !   writeInt x0
  482.     set    display0,%o1
  483.     ld    [%o1],%o1
  484.     ld    [%o1+-4],%o1
  485.     sethi    %hi(strInt),%o0
  486.     call    printf
  487.     or    %o0,%lo(strInt),%o0
  488. !   writeString str25
  489.     sethi    %hi(str25),%o0
  490.     call    printf
  491.     or    %o0,%lo(str25),%o0
  492. !   writeInt y0
  493.     set    display0,%o1
  494.     ld    [%o1],%o1
  495.     ld    [%o1+-8],%o1
  496.     sethi    %hi(strInt),%o0
  497.     call    printf
  498.     or    %o0,%lo(strInt),%o0
  499. !   writeString str26
  500.     sethi    %hi(str26),%o0
  501.     call    printf
  502.     or    %o0,%lo(str26),%o0
  503. !   writeFloat z0
  504.     set    display0,%o1
  505.     ld    [%o1],%o1
  506.     ld    [%o1+-12],%f0
  507.     call    writeFlt
  508.     nop
  509. !   writeNewline
  510.     sethi    %hi(strNL),%o0
  511.     call    printf
  512.     or    %o0,%lo(strNL),%o0
  513. ! WRITE STMT...
  514. !   writeString str27
  515.     sethi    %hi(str27),%o0
  516.     call    printf
  517.     or    %o0,%lo(str27),%o0
  518. !   writeInt x1
  519.     set    display1,%o1
  520.     ld    [%o1],%o1
  521.     ld    [%o1+-4],%o1
  522.     sethi    %hi(strInt),%o0
  523.     call    printf
  524.     or    %o0,%lo(strInt),%o0
  525. !   writeString str28
  526.     sethi    %hi(str28),%o0
  527.     call    printf
  528.     or    %o0,%lo(str28),%o0
  529. !   writeInt y1
  530.     set    display1,%o1
  531.     ld    [%o1],%o1
  532.     ld    [%o1+-8],%o1
  533.     sethi    %hi(strInt),%o0
  534.     call    printf
  535.     or    %o0,%lo(strInt),%o0
  536. !   writeString str29
  537.     sethi    %hi(str29),%o0
  538.     call    printf
  539.     or    %o0,%lo(str29),%o0
  540. !   writeFloat z1
  541.     set    display1,%o1
  542.     ld    [%o1],%o1
  543.     ld    [%o1+-12],%f0
  544.     call    writeFlt
  545.     nop
  546. !   writeNewline
  547.     sethi    %hi(strNL),%o0
  548.     call    printf
  549.     or    %o0,%lo(strNL),%o0
  550. ! WRITE STMT...
  551. !   writeString str30
  552.     sethi    %hi(str30),%o0
  553.     call    printf
  554.     or    %o0,%lo(str30),%o0
  555. !   writeInt x2
  556.     ld    [%fp+-4],%o1
  557.     sethi    %hi(strInt),%o0
  558.     call    printf
  559.     or    %o0,%lo(strInt),%o0
  560. !   writeString str31
  561.     sethi    %hi(str31),%o0
  562.     call    printf
  563.     or    %o0,%lo(str31),%o0
  564. !   writeInt y2
  565.     ld    [%fp+-8],%o1
  566.     sethi    %hi(strInt),%o0
  567.     call    printf
  568.     or    %o0,%lo(strInt),%o0
  569. !   writeString str32
  570.     sethi    %hi(str32),%o0
  571.     call    printf
  572.     or    %o0,%lo(str32),%o0
  573. !   writeFloat z2
  574.     ld    [%fp+-12],%f0
  575.     call    writeFlt
  576.     nop
  577. !   writeNewline
  578.     sethi    %hi(strNL),%o0
  579.     call    printf
  580.     or    %o0,%lo(strNL),%o0
  581. ! WRITE STMT...
  582. !   writeString str33
  583.     sethi    %hi(str33),%o0
  584.     call    printf
  585.     or    %o0,%lo(str33),%o0
  586. !   writeNewline
  587.     sethi    %hi(strNL),%o0
  588.     call    printf
  589.     or    %o0,%lo(strNL),%o0
  590. ! ASSIGNMENT STMT...
  591. !   y0 := 1000
  592.     set    1000,%o0
  593.     set    display0,%o1
  594.     ld    [%o1],%o1
  595.     st    %o0,[%o1+-8]
  596. ! ASSIGNMENT STMT...
  597. !   y1 := 1001
  598.     set    1001,%o0
  599.     set    display1,%o1
  600.     ld    [%o1],%o1
  601.     st    %o0,[%o1+-8]
  602. ! ASSIGNMENT STMT...
  603. !   y2 := 1002
  604.     set    1002,%o0
  605.     st    %o0,[%fp+-8]
  606. ! ASSIGNMENT STMT...
  607. !   z0 := 1.9
  608.     set    float4,%o0
  609.     ld    [%o0],%o0
  610.     set    display0,%o1
  611.     ld    [%o1],%o1
  612.     st    %o0,[%o1+-12]
  613. ! ASSIGNMENT STMT...
  614. !   z1 := 1.9001
  615.     set    float5,%o0
  616.     ld    [%o0],%o0
  617.     set    display1,%o1
  618.     ld    [%o1],%o1
  619.     st    %o0,[%o1+-12]
  620. ! ASSIGNMENT STMT...
  621. !   z2 := 1.9002
  622.     set    float6,%o0
  623.     ld    [%o0],%o0
  624.     st    %o0,[%fp+-12]
  625. ! WRITE STMT...
  626. !   writeString str34
  627.     sethi    %hi(str34),%o0
  628.     call    printf
  629.     or    %o0,%lo(str34),%o0
  630. !   writeInt x0
  631.     set    display0,%o1
  632.     ld    [%o1],%o1
  633.     ld    [%o1+-4],%o1
  634.     sethi    %hi(strInt),%o0
  635.     call    printf
  636.     or    %o0,%lo(strInt),%o0
  637. !   writeString str35
  638.     sethi    %hi(str35),%o0
  639.     call    printf
  640.     or    %o0,%lo(str35),%o0
  641. !   writeInt y0
  642.     set    display0,%o1
  643.     ld    [%o1],%o1
  644.     ld    [%o1+-8],%o1
  645.     sethi    %hi(strInt),%o0
  646.     call    printf
  647.     or    %o0,%lo(strInt),%o0
  648. !   writeString str36
  649.     sethi    %hi(str36),%o0
  650.     call    printf
  651.     or    %o0,%lo(str36),%o0
  652. !   writeFloat z0
  653.     set    display0,%o1
  654.     ld    [%o1],%o1
  655.     ld    [%o1+-12],%f0
  656.     call    writeFlt
  657.     nop
  658. !   writeNewline
  659.     sethi    %hi(strNL),%o0
  660.     call    printf
  661.     or    %o0,%lo(strNL),%o0
  662. ! WRITE STMT...
  663. !   writeString str37
  664.     sethi    %hi(str37),%o0
  665.     call    printf
  666.     or    %o0,%lo(str37),%o0
  667. !   writeInt x1
  668.     set    display1,%o1
  669.     ld    [%o1],%o1
  670.     ld    [%o1+-4],%o1
  671.     sethi    %hi(strInt),%o0
  672.     call    printf
  673.     or    %o0,%lo(strInt),%o0
  674. !   writeString str38
  675.     sethi    %hi(str38),%o0
  676.     call    printf
  677.     or    %o0,%lo(str38),%o0
  678. !   writeInt y1
  679.     set    display1,%o1
  680.     ld    [%o1],%o1
  681.     ld    [%o1+-8],%o1
  682.     sethi    %hi(strInt),%o0
  683.     call    printf
  684.     or    %o0,%lo(strInt),%o0
  685. !   writeString str39
  686.     sethi    %hi(str39),%o0
  687.     call    printf
  688.     or    %o0,%lo(str39),%o0
  689. !   writeFloat z1
  690.     set    display1,%o1
  691.     ld    [%o1],%o1
  692.     ld    [%o1+-12],%f0
  693.     call    writeFlt
  694.     nop
  695. !   writeNewline
  696.     sethi    %hi(strNL),%o0
  697.     call    printf
  698.     or    %o0,%lo(strNL),%o0
  699. ! WRITE STMT...
  700. !   writeString str40
  701.     sethi    %hi(str40),%o0
  702.     call    printf
  703.     or    %o0,%lo(str40),%o0
  704. !   writeInt x2
  705.     ld    [%fp+-4],%o1
  706.     sethi    %hi(strInt),%o0
  707.     call    printf
  708.     or    %o0,%lo(strInt),%o0
  709. !   writeString str41
  710.     sethi    %hi(str41),%o0
  711.     call    printf
  712.     or    %o0,%lo(str41),%o0
  713. !   writeInt y2
  714.     ld    [%fp+-8],%o1
  715.     sethi    %hi(strInt),%o0
  716.     call    printf
  717.     or    %o0,%lo(strInt),%o0
  718. !   writeString str42
  719.     sethi    %hi(str42),%o0
  720.     call    printf
  721.     or    %o0,%lo(str42),%o0
  722. !   writeFloat z2
  723.     ld    [%fp+-12],%f0
  724.     call    writeFlt
  725.     nop
  726. !   writeNewline
  727.     sethi    %hi(strNL),%o0
  728.     call    printf
  729.     or    %o0,%lo(strNL),%o0
  730. ! WRITE STMT...
  731. !   writeString str43
  732.     sethi    %hi(str43),%o0
  733.     call    printf
  734.     or    %o0,%lo(str43),%o0
  735. !   writeNewline
  736.     sethi    %hi(strNL),%o0
  737.     call    printf
  738.     or    %o0,%lo(strNL),%o0
  739. ! RETURN...
  740. !   returnVoid
  741.     set    display2,%o0
  742.     ld    [%fp+64],%o1
  743.     st    %o1,[%o0]
  744.     ret
  745.     restore
  746.