aboutsummaryrefslogtreecommitdiff
path: root/basics/factorial.S
diff options
context:
space:
mode:
Diffstat (limited to 'basics/factorial.S')
-rw-r--r--basics/factorial.S28
1 files changed, 0 insertions, 28 deletions
diff --git a/basics/factorial.S b/basics/factorial.S
deleted file mode 100644
index 7e3df12..0000000
--- a/basics/factorial.S
+++ /dev/null
@@ -1,28 +0,0 @@
-.text
-.globl factorial
-.type factorial, @function
-
-factorial:
- // If input <= 1, just return the given thing.
- addi t0, zero, 1
- bgt a0, t0, else
- jr ra
-else:
- // Preserve the argument and the return address before the call.
- addi sp, sp, -16
- sd a0, 0(sp)
- sd ra, 8(sp)
-
- // Call the same function but with a value of argument-1.
- addi a0, a0, -1
- call factorial
-
- // Restore back the original argument and the return address. Then multiply
- // the original argument with the returned one from the previous call.
- ld t1, 0(sp)
- ld ra, 8(sp)
- addi sp, sp, 16
- mul a0, t1, a0
-
- // And return to the caller.
- jr ra