1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# Copyright (c) 2024 Freya Murphy
# file: recursion.asm
# test: should recurse sum n..0 numbers
.text
.align 2
.globl main
main:
# init $a0
li $a0, 5
sum:
# save stack
addiu $sp, $sp, -8
sw $ra, 0($sp)
sw $s0, 4($sp)
# load n from a0
move $s0, $a0
# skip if n is zero
li $v0, 0
beq $s0, $zero, add
nop
jal sum
addi $a0, $s0, -1
add:
# n = n + returned
add $v0, $s0, $v0
# restore stack
lw $ra, 0($sp)
lw $s0, 4($sp)
addiu $sp, $sp, 8
# return
jr $ra
nop
|