mirror of
https://github.com/Sosokker/RISC-V-asm-programming.git
synced 2025-12-19 14:04:05 +01:00
Update mult_recursive.s
This commit is contained in:
parent
4616b3681a
commit
86cb0c811a
@ -12,22 +12,27 @@ main:
|
|||||||
|
|
||||||
mult:
|
mult:
|
||||||
# a0 = a, a1 = b
|
# a0 = a, a1 = b
|
||||||
addi sp sp -12 # Move stack pointer down by 12 bytes to store a, b, ra
|
# Set Up
|
||||||
sw a0 8(sp) # Store a
|
addi sp sp -8 # Move stack pointer down by 8 bytes to store a, ra
|
||||||
sw a1 4(sp) # Store b
|
sw a0 4(sp) # Store a
|
||||||
sw ra 0(sp) # Store ra
|
sw ra 0(sp) # Store ra
|
||||||
addi t0 x0 1 # t0 = temporary 1
|
addi t0 x0 1 # t0 = temporary 1
|
||||||
bne a1 t0 return # if b != then jump to return
|
|
||||||
addi sp sp 12
|
bne a1 t0 return # if b != 1 then jump to return
|
||||||
|
# Base Case
|
||||||
|
addi sp sp 8 # Move stack pointer up to previous ra
|
||||||
jr ra # return a
|
jr ra # return a
|
||||||
|
|
||||||
return:
|
return:
|
||||||
# a + mult(a, b-1)
|
# a + mult(a, b-1)
|
||||||
addi a1 a1 -1 # b = b-1
|
addi a1 a1 -1 # b = b-1
|
||||||
|
|
||||||
jal mult # call mult(a, b-1)
|
jal mult # call mult(a, b-1)
|
||||||
lw t1 8(sp) # load a into t1
|
|
||||||
|
# After get output from function (get a0)
|
||||||
|
lw t1 4(sp) # load a into t1
|
||||||
lw ra 0(sp) # Load ra
|
lw ra 0(sp) # Load ra
|
||||||
addi sp sp 12
|
addi sp sp 8 # Move stack pointer up to previous ra
|
||||||
add a0 a0 t1 # a + mult(a, b-1)
|
add a0 a0 t1 # a + mult(a, b-1)
|
||||||
jr ra
|
jr ra
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user