Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.86 KB | None | 0 0
  1. .import print
  2. .import init
  3. .import new
  4. .import delete
  5. lis $4
  6. .word 4
  7. lis $11
  8. .word 1
  9. sub $29,$30,$4
  10. sw $1, -4($30) ; store first command
  11. sub $30, $30, $4
  12. ;offset: -4 location: 0
  13. sw $2, -4($30);store second param
  14. sub $30, $30, $4
  15. ;offset: -8 location: -4
  16. sw $31, -4($30);push 31 on stack
  17. sub $30, $30, $4
  18. lis $5 ; $5 <- print addr
  19. .word init
  20. jalr $5 ; call init subroutine
  21.  
  22. lw $31, 0($30)
  23. add $30,$30,$4 ; restore $31
  24. ;;***** init line end********
  25.  
  26.  
  27. ;*****rule: DECLARING INT dcls dcl BECOMES NULL SEMI BEGIN ******
  28.  
  29. ;*****rule: DECLARING INT dcls dcl BECOMES NULL SEMI BEGIN ******
  30.  
  31.  
  32. ;;///////////////////////////////////////////////not generating code for rule: dcls
  33. add $3, $0, $11
  34.  
  35. ;;***** dcl type ID ******
  36. ;;storing symbol c ****
  37. sw $3, -4($30) ; store declaration
  38. sub $30, $30, $4
  39. ;offset: -12 location: -8
  40.  
  41. ;*****rule: DECLARING INT dcls dcl BECOMES NULL SEMI END ******
  42. add $3, $0, $11
  43.  
  44. ;;***** dcl type ID ******
  45. ;;storing symbol d ****
  46. sw $3, -4($30) ; store declaration
  47. sub $30, $30, $4
  48. ;offset: -16 location: -12
  49.  
  50. ;*****rule: DECLARING INT dcls dcl BECOMES NULL SEMI END ******
  51.  
  52.  
  53. ;;///////////////////////////////////////////////not generating code for rule: statements
  54.  
  55. ;;********* statement lvalue BECOMES expr SEMI begin ********
  56.  
  57. ;; loading number into register 3
  58. lis $3
  59. .word 10
  60.  
  61. ;********** factor new int [expr] *********
  62. add $1, $3, $0
  63. sw $31, -4($30);push 31 on stack
  64. sub $30, $30, $4
  65. lis $5 ;
  66. .word new
  67. jalr $5 ; callnewsubroutine
  68.  
  69. lw $31, 0($30)
  70. add $30,$30,$4 ; restore $31
  71. ;;***** init line end********
  72.  
  73. bne $3, $0, 1
  74. add $3, $0, $11
  75.  
  76. ;***** lvalue ID ******
  77. ;;calling symbol c ****
  78. sw $3, -8($29)
  79. ;;********* statement lvalue BECOMES expr SEMI end ********
  80.  
  81.  
  82. ;;********* statement lvalue BECOMES expr SEMI begin ********
  83.  
  84. ;; loading number into register 3
  85. lis $3
  86. .word 2
  87. ; INT * ***************
  88. sw $3, -4($30); push $3 on stack
  89. sub $30, $30, $4
  90. ;; *** loading c******
  91. lw $3, -8($29)
  92. ;offset: -20 location: 0
  93. lw $5, 0($30)
  94. add $30,$30,$4 ; $5 <- expr2
  95. sw $5, 0($3)
  96. ;;********* statement lvalue BECOMES expr SEMI end ********
  97.  
  98.  
  99. ;;********* statement lvalue BECOMES expr SEMI begin ********
  100.  
  101. ;; loading number into register 3
  102. lis $3
  103. .word 3
  104. ; INT * ***************
  105. sw $3, -4($30); push $3 on stack
  106. sub $30, $30, $4
  107.  
  108. ; *** PLUS ***
  109. ;; *** loading c******
  110. lw $3, -8($29)
  111. ;offset: -20 location: 0
  112. sw $3, -4($30); push $3 on stack
  113. sub $30, $30, $4
  114.  
  115. ;; loading number into register 3
  116. lis $3
  117. .word 1
  118. mult $3, $4
  119. mflo $3
  120. lw $5, 0($30)
  121. add $30,$30,$4 ; $5 <- expr2
  122. add $3, $5, $3 ; $3 <- expr + term
  123. lw $5, 0($30)
  124. add $30,$30,$4 ; $5 <- expr2
  125. sw $5, 0($3)
  126. ;;********* statement lvalue BECOMES expr SEMI end ********
  127.  
  128.  
  129. ;;********* statement lvalue BECOMES expr SEMI begin ********
  130.  
  131. ;; loading number into register 3
  132. lis $3
  133. .word 5
  134. ; INT * ***************
  135. sw $3, -4($30); push $3 on stack
  136. sub $30, $30, $4
  137.  
  138. ; *** PLUS ***
  139. ;; *** loading c******
  140. lw $3, -8($29)
  141. ;offset: -20 location: 0
  142. sw $3, -4($30); push $3 on stack
  143. sub $30, $30, $4
  144.  
  145. ;; loading number into register 3
  146. lis $3
  147. .word 2
  148. mult $3, $4
  149. mflo $3
  150. lw $5, 0($30)
  151. add $30,$30,$4 ; $5 <- expr2
  152. add $3, $5, $3 ; $3 <- expr + term
  153. lw $5, 0($30)
  154. add $30,$30,$4 ; $5 <- expr2
  155. sw $5, 0($3)
  156. ;;********* statement lvalue BECOMES expr SEMI end ********
  157.  
  158.  
  159. ;;********* statement lvalue BECOMES expr SEMI begin ********
  160.  
  161. ;; loading number into register 3
  162. lis $3
  163. .word 7
  164. ; INT * ***************
  165. sw $3, -4($30); push $3 on stack
  166. sub $30, $30, $4
  167.  
  168. ; *** PLUS ***
  169. ;; *** loading c******
  170. lw $3, -8($29)
  171. ;offset: -20 location: 0
  172. sw $3, -4($30); push $3 on stack
  173. sub $30, $30, $4
  174.  
  175. ;; loading number into register 3
  176. lis $3
  177. .word 3
  178. mult $3, $4
  179. mflo $3
  180. lw $5, 0($30)
  181. add $30,$30,$4 ; $5 <- expr2
  182. add $3, $5, $3 ; $3 <- expr + term
  183. lw $5, 0($30)
  184. add $30,$30,$4 ; $5 <- expr2
  185. sw $5, 0($3)
  186. ;;********* statement lvalue BECOMES expr SEMI end ********
  187.  
  188.  
  189. ;;********* statement lvalue BECOMES expr SEMI begin ********
  190.  
  191. ;; loading number into register 3
  192. lis $3
  193. .word 11
  194. ; INT * ***************
  195. sw $3, -4($30); push $3 on stack
  196. sub $30, $30, $4
  197.  
  198. ; *** PLUS ***
  199. ;; *** loading c******
  200. lw $3, -8($29)
  201. ;offset: -20 location: 0
  202. sw $3, -4($30); push $3 on stack
  203. sub $30, $30, $4
  204.  
  205. ;; loading number into register 3
  206. lis $3
  207. .word 4
  208. mult $3, $4
  209. mflo $3
  210. lw $5, 0($30)
  211. add $30,$30,$4 ; $5 <- expr2
  212. add $3, $5, $3 ; $3 <- expr + term
  213. lw $5, 0($30)
  214. add $30,$30,$4 ; $5 <- expr2
  215. sw $5, 0($3)
  216. ;;********* statement lvalue BECOMES expr SEMI end ********
  217.  
  218.  
  219. ;;********* statement lvalue BECOMES expr SEMI begin ********
  220. ;; *** loading c******
  221. lw $3, -8($29)
  222. ;offset: -16 location: 0
  223.  
  224. ;***** lvalue ID ******
  225. ;;calling symbol d ****
  226. sw $3, -12($29)
  227. ;;********* statement lvalue BECOMES expr SEMI end ********
  228.  
  229.  
  230. ;;***** printline begin********
  231. sw $31, -4($30);push 31 on stack
  232. sub $30, $30, $4
  233. ;; *** loading d******
  234. lw $3, -12($29)
  235. ;offset: -20 location: 0
  236. lw $3, 0($3); *************** FACTOR STAR FACTOR
  237. add $1, $3, $0 ; $1 <- expr
  238. lis $5 ; $5 <- print addr
  239. .word print
  240. jalr $5 ; call print subroutine
  241.  
  242. lw $31, 0($30)
  243. add $30,$30,$4 ; restore $31
  244. ;;***** printline end********
  245.  
  246.  
  247. ;;***** printline begin********
  248. sw $31, -4($30);push 31 on stack
  249. sub $30, $30, $4
  250.  
  251. ; *** PLUS ***
  252. ;; *** loading d******
  253. lw $3, -12($29)
  254. ;offset: -20 location: 0
  255. lw $3, 0($3); *************** FACTOR STAR FACTOR
  256. sw $3, -4($30); push $3 on stack
  257. sub $30, $30, $4
  258.  
  259. ;; loading number into register 3
  260. lis $3
  261. .word 2
  262. lw $5, 0($30)
  263. add $30,$30,$4 ; $5 <- expr2
  264. add $3, $5, $3 ; $3 <- expr + term
  265. ;;**********************
  266. add $1, $3, $0 ; $1 <- expr
  267. lis $5 ; $5 <- print addr
  268. .word print
  269. jalr $5 ; call print subroutine
  270.  
  271. lw $31, 0($30)
  272. add $30,$30,$4 ; restore $31
  273. ;;***** printline end********
  274.  
  275.  
  276. ;; loading number into register 3
  277. lis $3
  278. .word 0
  279.  
  280. ;;;epilog
  281. add $30,$29,$4
  282. jr $31
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement