Year 2 compilers coureswork

test.asm 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. li $a0, 68
  2. li $v0, 9
  3. syscall
  4. or $fp, $0, $v0
  5. la $t0, main
  6. sw $t0, 0($fp)
  7. sw $0, 4($fp)
  8. la $ra, done
  9. j main
  10. inner_fact:
  11. sw $ra, 64($fp)
  12. or $16, $0, $5
  13. or $17, $0, $6
  14. bne $16, $0, L0
  15. or $v1, $0, $17
  16. jr $31
  17. L0:
  18. li $9, 1
  19. sub $8, $16, $9
  20. mult $17, $16
  21. mflo $10
  22. or $5, $0, $8
  23. or $6, $0, $10
  24. li $a0, 68
  25. li $v0, 9
  26. syscall
  27. sw $fp, 4($v0)
  28. sw $16, 8($fp)
  29. sw $17, 12($fp)
  30. or $fp, $0, $v0
  31. la $t0, inner_fact
  32. sw $t0, 0($fp)
  33. jal inner_fact
  34. lw $fp, 4($fp)
  35. lw $ra, 64($fp)
  36. lw $16, 8($fp)
  37. lw $17, 12($fp)
  38. or $11, $0, $v1
  39. or $v1, $0, $11
  40. jr $31
  41. fact:
  42. sw $ra, 64($fp)
  43. or $16, $0, $5
  44. or $5, $0, $16
  45. li $12, 1
  46. or $6, $0, $12
  47. li $a0, 68
  48. li $v0, 9
  49. syscall
  50. sw $fp, 4($v0)
  51. sw $16, 8($fp)
  52. or $fp, $0, $v0
  53. la $t0, inner_fact
  54. sw $t0, 0($fp)
  55. jal inner_fact
  56. lw $fp, 4($fp)
  57. lw $ra, 64($fp)
  58. lw $16, 8($fp)
  59. or $13, $0, $v1
  60. or $v1, $0, $13
  61. jr $31
  62. main:
  63. sw $ra, 64($fp)
  64. li $14, 3
  65. or $5, $0, $14
  66. li $a0, 68
  67. li $v0, 9
  68. syscall
  69. sw $fp, 4($v0)
  70. or $fp, $0, $v0
  71. la $t0, fact
  72. sw $t0, 0($fp)
  73. jal fact
  74. lw $fp, 4($fp)
  75. lw $ra, 64($fp)
  76. or $15, $0, $v1
  77. or $16, $0, $15
  78. li $24, 5
  79. or $5, $0, $24
  80. li $a0, 68
  81. li $v0, 9
  82. syscall
  83. sw $fp, 4($v0)
  84. sw $16, 8($fp)
  85. or $fp, $0, $v0
  86. la $t0, fact
  87. sw $t0, 0($fp)
  88. jal fact
  89. lw $fp, 4($fp)
  90. lw $ra, 64($fp)
  91. lw $16, 8($fp)
  92. or $25, $0, $v1
  93. or $17, $0, $25
  94. li $8, 7
  95. or $5, $0, $8
  96. li $a0, 68
  97. li $v0, 9
  98. syscall
  99. sw $fp, 4($v0)
  100. sw $16, 8($fp)
  101. sw $17, 12($fp)
  102. or $fp, $0, $v0
  103. la $t0, fact
  104. sw $t0, 0($fp)
  105. jal fact
  106. lw $fp, 4($fp)
  107. lw $ra, 64($fp)
  108. lw $16, 8($fp)
  109. lw $17, 12($fp)
  110. or $9, $0, $v1
  111. or $18, $0, $9
  112. add $10, $16, $17
  113. add $11, $10, $18
  114. or $v1, $0, $11
  115. jr $31
  116. done:
  117. ori $v0, $0, 10
  118. syscall