diff options
| author | Miquel Sabaté Solà <mikisabate@gmail.com> | 2024-08-28 22:25:56 +0200 |
|---|---|---|
| committer | Miquel Sabaté Solà <mikisabate@gmail.com> | 2024-12-05 16:02:49 +0100 |
| commit | ab03d3be21f229be8c28dba292d5da237a929a73 (patch) | |
| tree | 8bc53e3031f644532fec255bb392a90cd4ad59fb /basics/factorial.S | |
| parent | 1a36e6211674f1a39c7cc0ddff705357a4add65a (diff) | |
| download | farga-ab03d3be21f229be8c28dba292d5da237a929a73.tar.gz farga-ab03d3be21f229be8c28dba292d5da237a929a73.zip | |
Restructure the whole thing
It will be something more than just messing around with RISC-V stuff.
Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
Diffstat (limited to 'basics/factorial.S')
| -rw-r--r-- | basics/factorial.S | 28 |
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 |
