Untitled

 avatar
unknown
plain_text
2 months ago
1.1 kB
1
Indexable
.text
jal zero main

multiply:
    lw t0 4 sp     # load first parameter (a)
    lw t1 0 sp     # load second parameter (b)
    addi t2 zero 0 # reset result register (result)
    
    schleife:
        beq t1 zero return # (if b == 0) goto return;
        add t2 t2 t0       # result = result + a;
        addi t1 t1 -1      # b--;
        jal zero schleife  # goto schleife;
        
    return:
        addi sp sp -4  #
        sw t2 0 sp     # Push result to stack
        jalr zero ra 0 # Return to caller
        
factorial:
    lw t0 0 sp
    bne t0 x0 fall2
    
    fall1:
        addi sp sp -4
        addi t1 x0 1
        sw t1 0 sp
        jalr zero ra 0
        
    fall2:
        addi sp sp -8
        sw ra 4 sp
        addi t1 t0 -1
        sw t1 0 sp
        jal ra factorial
        
        lw t1 0 sp
        addi sp sp 8
        lw t0 4 sp
        addi sp sp -8
        sw t0 4 sp
        sw t1 0 sp
        jal ra multiply
        
        lw t0 0 sp
        addi sp sp 12
        lw ra 0 sp
        sw t0 0 sp
        jalr zero ra 0
 
main:
addi t0 zero 6
addi sp sp -4
sw t0 0 sp

jal ra factorial

lw t0 0 sp
addi sp sp 4
Leave a Comment