Add: save reg in stack on entry of fun | Fix: set right mem_in func in decoder | set right mem_out code | test bench

This commit is contained in:
brice.boisson
2023-11-28 14:24:30 +09:00
parent 91514de821
commit 5e93084239
4 changed files with 62 additions and 55 deletions

View File

@@ -3,61 +3,68 @@
* 9:s1, 10:a0-7, 18:s2-11, 28:t3-6
*/
li sp, 0
j test
mult:
sw a1, 4(sp)
sw a2, 8(sp)
addi sp, sp, 8
li a0, 0
li a2, 1
li t0, 1
mult_loop_start:
blt t1, a2, mult_loop_end
and a1, t1, 1
beq a1, zero, mult_even_compute
add a0, a0, t2
blt a1, t0, mult_loop_end
and t1, a1, 1
beq t1, zero, mult_even_compute
add a0, a0, a2
mult_even_compute:
add t2, t2, t2
srl t1, t1, 1
add a2, a2, a2
srl a1, a1, 1
j mult_loop_start
mult_loop_end:
jalr ra, t0, 0
lw a2, 0(sp)
lw a1, -4(sp)
addi sp, sp, -8
jalr ra, ra, 0
test:
li t1, 0
li t2, 0
jal t0, mult
nop # R[10]=0
li t1, 0
li t2, 1
jal t0, mult
nop # R[10]=0
li t1, 1
li t2, 0
jal t0, mult
nop # R[10]=0
li t1, 1
li t2, 1
jal t0, mult
nop # R[10]=1
li t1, 2
li t2, 1
jal t0, mult
nop # R[10]=2
li t1, 1
li t2, 3
jal t0, mult
nop # R[10]=3
li t1, 2
li t2, 2
jal t0, mult
nop # R[10]=4
li t1, 2
li t2, 3
jal t0, mult
nop # R[10]=6
li t1, 5
li t2, 3
jal t0, mult
nop # R[10]=15
li t1, 5
li t2, 25
jal t0, mult
nop # R[10]=125
li a1, 0
li a2, 0
jal ra, mult
nop # R[10]=0, R[11]=0, R[12]=0
li a1, 0
li a2, 1
jal ra, mult
nop # R[10]=0, R[11]=0, R[12]=1
li a1, 1
li a2, 0
jal ra, mult
nop # R[10]=0, R[11]=1, R[12]=0
li a1, 1
li a2, 1
jal ra, mult
nop # R[10]=1, R[11]=1, R[12]=1
li a1, 2
li a2, 1
jal ra, mult
nop # R[10]=2, R[11]=2, R[12]=1
li a1, 1
li a2, 3
jal ra, mult
nop # R[10]=3, R[11]=1, R[12]=3
li a1, 2
li a2, 2
jal ra, mult
nop # R[10]=4, R[11]=2, R[12]=2
li a1, 2
li a2, 3
jal ra, mult
nop # R[10]=6, R[11]=2, R[12]=3
li a1, 5
li a2, 3
jal ra, mult
nop # R[10]=15, R[11]=5, R[12]=3
li a1, 5
li a2, 25
jal ra, mult
nop # R[10]=125, R[11]=5, R[12]=25