diff options
author | Freya Murphy <freya@freyacat.org> | 2024-10-01 18:22:10 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2024-10-01 18:22:10 -0400 |
commit | 091c684bf1d2cca09da001b9170b205dbe5c333f (patch) | |
tree | e7dd5091ddb989b1eae35f8a5130a66b2d7b4d9b /test/masm/recursion.asm | |
parent | dont hardcode RA in JALR (diff) | |
download | mips-091c684bf1d2cca09da001b9170b205dbe5c333f.tar.gz mips-091c684bf1d2cca09da001b9170b205dbe5c333f.tar.bz2 mips-091c684bf1d2cca09da001b9170b205dbe5c333f.zip |
add recursion test, add noops for branch delay slots
Diffstat (limited to '')
-rw-r--r-- | test/masm/recursion.asm | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/masm/recursion.asm b/test/masm/recursion.asm new file mode 100644 index 0000000..38982e1 --- /dev/null +++ b/test/masm/recursion.asm @@ -0,0 +1,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 |