All pastes #422279 Raw Edit

Stuff

public text v1 · immutable
·published 2007-04-03 10:59 UTC
rendered paste body
#include <iregdef.h>
        .data
format: .asciiz "%d \n"
        .text
        .globl start
        .ent start
start:
        addi    sp, sp, -4            # push return address on stack
        sw      ra, 0(sp)
        li      a0,5
        jal     fact
        la      a0,format
        lw      v0,0(v0)
        jal printf
        lw      ra, 0(sp)             # pop  return address
        addi    sp, sp, 4
        break
done:   jr      ra
fact:
        addi    sp, sp, -4            # pusha returadressen
        sw      ra, 0(sp)
        beqz    a0, basfall             # n == 0?
        addi    sp, sp, -4            # pusha $s0
        sw      s0, 0(sp)
        move    s0, a0          # spara n i $s0
        addi    a0, a0, -1              # n-1
        jal     fact                    # rekursivt anrop ==> $v0 = fact(n)
        mul     v0, s0, v0              # fact(n) = n*fact(n-1)
        lw      s0, 0(sp)             # poppa $s0
        addi    sp, sp, 4
        j       return
basfall:
        addi    v0, zero, 1
return:
        lw      ra, 0(sp)             # popa  returadressen
        addi    sp, sp, 4
        jr      ra                     # Hoppa tillbaka till anroparen