Guest User

Untitled

a guest
Oct 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. Main:
  2. addi sp, zero, 1600 # make room in stack
  3. ecall t0, zero, 5 # store input in t0
  4. add a0, t0, zero # move input to a0
  5.  
  6. jal ra, RecLin # call function
  7. ecall zero, a0, 0 # print result via a0
  8. beq zero, zero, Done
  9.  
  10. RecLin:
  11. addi sp, sp, -16 # push stack for 2 items
  12. sd ra, 8(sp) # store return address
  13. sd a0, 0(sp) # store n on stack
  14.  
  15. addi t1, zero, 6
  16. bge a0, t1, Else # goto Else if a0 >= 6
  17. addi a0, zero, 5 # base case: return 5
  18.  
  19. addi sp, sp, 16 # pop stack; values not returned
  20. jalr zero, 0(ra)
  21.  
  22. Else:
  23. addi a0, a0, -5 # n -= 5
  24. jal ra, RecLin # call RecLin(n - 5)
  25.  
  26. add t2, a0, zero # t2 = RecLin(n - 5)
  27. ld a0, 0(sp) # restore caller's n value
  28. ld ra, 8(sp) # restore return address
  29. addi sp, sp, 16 # pop stack
  30.  
  31. addi t3, zero, 4 # t3 = 4
  32. mul a0, t3, t2 # a0 = 4 * RecLin(n - 5)
  33. add a0, a0, t0 # a0 += n
  34.  
  35. jalr zero, 0(ra)
  36.  
  37. Done:
Add Comment
Please, Sign In to add comment