Year 2 compilers coureswork

twice.asm 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. .globl __start
  2. __start:
  3. li $a0, 72
  4. li $v0, 9
  5. syscall
  6. or $fp, $0, $v0
  7. la $t0, main
  8. sw $t0, 0($fp)
  9. sw $0, 4($fp)
  10. jal main
  11. j done
  12. twice:
  13. li $a0, 72
  14. li $v0, 9
  15. syscall
  16. sw $fp, 4($v0)
  17. sw $16, 8($fp)
  18. sw $17, 12($fp)
  19. sw $18, 16($fp)
  20. sw $19, 20($fp)
  21. sw $20, 24($fp)
  22. sw $21, 28($fp)
  23. sw $22, 32($fp)
  24. sw $23, 36($fp)
  25. or $fp, $0, $v0
  26. la $t0, twice
  27. sw $t0, 0($fp)
  28. sw $ra, 64($fp)
  29. or $16, $0, $5
  30. li $a0, 72
  31. li $v0, 9
  32. syscall
  33. or $17, $v0, $0
  34. la $v0, g
  35. sw $v0, 0($17)
  36. sw $fp, 68($17)
  37. sw $16, 8($fp)
  38. sw $17, 12($fp)
  39. sw $18, 16($fp)
  40. sw $19, 20($fp)
  41. sw $20, 24($fp)
  42. sw $21, 28($fp)
  43. sw $22, 32($fp)
  44. sw $23, 36($fp)
  45. or $v1, $0, $17
  46. jr $31
  47. g:
  48. li $a0, 72
  49. li $v0, 9
  50. syscall
  51. sw $k1, 68($v0)
  52. sw $fp, 4($v0)
  53. sw $16, 8($fp)
  54. sw $17, 12($fp)
  55. sw $18, 16($fp)
  56. sw $19, 20($fp)
  57. sw $20, 24($fp)
  58. sw $21, 28($fp)
  59. sw $22, 32($fp)
  60. sw $23, 36($fp)
  61. or $fp, $0, $v0
  62. la $t0, g
  63. sw $t0, 0($fp)
  64. sw $ra, 64($fp)
  65. or $16, $0, $5
  66. or $5, $0, $16
  67. or $k0, $fp, $0
  68. lw $fp, 68($fp)
  69. lw $fp, 68($fp)
  70. lw $9, 8($fp)
  71. or $fp, $k0, $0
  72. lw $gp, 0($9)
  73. or $k1, $0, $9
  74. jalr $gp
  75. lw $fp, 4($fp)
  76. lw $ra, 64($fp)
  77. lw $16, 8($fp)
  78. or $8, $0, $v1
  79. or $5, $0, $8
  80. or $k0, $fp, $0
  81. lw $fp, 68($fp)
  82. lw $fp, 68($fp)
  83. lw $11, 8($fp)
  84. or $fp, $k0, $0
  85. lw $gp, 0($11)
  86. or $k1, $0, $11
  87. jalr $gp
  88. lw $fp, 4($fp)
  89. lw $ra, 64($fp)
  90. lw $16, 8($fp)
  91. or $10, $0, $v1
  92. sw $16, 8($fp)
  93. sw $17, 12($fp)
  94. sw $18, 16($fp)
  95. sw $19, 20($fp)
  96. sw $20, 24($fp)
  97. sw $21, 28($fp)
  98. sw $22, 32($fp)
  99. sw $23, 36($fp)
  100. or $v1, $0, $10
  101. jr $31
  102. main:
  103. li $a0, 72
  104. li $v0, 9
  105. syscall
  106. sw $fp, 4($v0)
  107. or $fp, $0, $v0
  108. la $t0, main
  109. sw $t0, 0($fp)
  110. sw $ra, 64($fp)
  111. li $a0, 72
  112. li $v0, 9
  113. syscall
  114. or $16, $v0, $0
  115. la $v0, whammy
  116. sw $v0, 0($16)
  117. sw $fp, 68($16)
  118. or $5, $0, $16
  119. jal twice
  120. lw $fp, 4($fp)
  121. lw $ra, 64($fp)
  122. lw $16, 8($fp)
  123. or $12, $0, $v1
  124. or $17, $0, $12
  125. li $13, 2
  126. or $5, $0, $13
  127. lw $gp, 0($17)
  128. or $k1, $0, $17
  129. jalr $gp
  130. lw $fp, 4($fp)
  131. lw $ra, 64($fp)
  132. lw $16, 8($fp)
  133. lw $17, 12($fp)
  134. or $14, $0, $v1
  135. sw $16, 8($fp)
  136. sw $17, 12($fp)
  137. sw $18, 16($fp)
  138. sw $19, 20($fp)
  139. sw $20, 24($fp)
  140. sw $21, 28($fp)
  141. sw $22, 32($fp)
  142. sw $23, 36($fp)
  143. or $v1, $0, $14
  144. jr $31
  145. whammy:
  146. li $a0, 72
  147. li $v0, 9
  148. syscall
  149. sw $k1, 68($v0)
  150. sw $fp, 4($v0)
  151. sw $16, 8($fp)
  152. sw $17, 12($fp)
  153. sw $18, 16($fp)
  154. sw $19, 20($fp)
  155. sw $20, 24($fp)
  156. sw $21, 28($fp)
  157. sw $22, 32($fp)
  158. sw $23, 36($fp)
  159. or $fp, $0, $v0
  160. la $t0, whammy
  161. sw $t0, 0($fp)
  162. sw $ra, 64($fp)
  163. or $16, $0, $5
  164. li $24, 5
  165. add $15, $16, $24
  166. sw $16, 8($fp)
  167. sw $17, 12($fp)
  168. sw $18, 16($fp)
  169. sw $19, 20($fp)
  170. sw $20, 24($fp)
  171. sw $21, 28($fp)
  172. sw $22, 32($fp)
  173. sw $23, 36($fp)
  174. or $v1, $0, $15
  175. jr $31
  176. done:
  177. or $a0, $v1, $0
  178. ori $v0, $0, 1
  179. syscall
  180. ori $a0, $0, 0xA
  181. ori $v0, $0, 0xB
  182. syscall
  183. ori $v0, $0, 10
  184. syscall