Year 2 compilers coureswork

cplus.asm 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. cplus:
  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, cplus
  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, cplusa
  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. cplusa:
  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, cplusa
  63. sw $t0, 0($fp)
  64. sw $ra, 64($fp)
  65. or $16, $0, $5
  66. or $k0, $fp, $0
  67. lw $fp, 68($fp)
  68. lw $fp, 68($fp)
  69. lw $8, 8($fp)
  70. or $fp, $k0, $0
  71. add $9, $8, $16
  72. sw $16, 8($fp)
  73. sw $17, 12($fp)
  74. sw $18, 16($fp)
  75. sw $19, 20($fp)
  76. sw $20, 24($fp)
  77. sw $21, 28($fp)
  78. sw $22, 32($fp)
  79. sw $23, 36($fp)
  80. or $v1, $0, $9
  81. jr $31
  82. main:
  83. li $a0, 72
  84. li $v0, 9
  85. syscall
  86. sw $fp, 4($v0)
  87. or $fp, $0, $v0
  88. la $t0, main
  89. sw $t0, 0($fp)
  90. sw $ra, 64($fp)
  91. li $10, 5
  92. or $5, $0, $10
  93. jal cplus
  94. lw $fp, 4($fp)
  95. lw $ra, 64($fp)
  96. or $11, $0, $v1
  97. or $16, $0, $11
  98. li $12, 2
  99. or $5, $0, $12
  100. lw $gp, 0($16)
  101. or $k1, $0, $16
  102. jalr $gp
  103. lw $fp, 4($fp)
  104. lw $ra, 64($fp)
  105. lw $16, 8($fp)
  106. or $13, $0, $v1
  107. sw $16, 8($fp)
  108. sw $17, 12($fp)
  109. sw $18, 16($fp)
  110. sw $19, 20($fp)
  111. sw $20, 24($fp)
  112. sw $21, 28($fp)
  113. sw $22, 32($fp)
  114. sw $23, 36($fp)
  115. or $v1, $0, $13
  116. jr $31
  117. done:
  118. or $a0, $v1, $0
  119. ori $v0, $0, 1
  120. syscall
  121. ori $a0, $0, 0xA
  122. ori $v0, $0, 0xB
  123. syscall
  124. ori $v0, $0, 10
  125. syscall