Title | Fibonacci und Fakultät Rekursiv in MIPS implementiert. |
---|---|
Course | Rechnerorganisation |
Institution | Technische Universität Darmstadt |
Pages | 2 |
File Size | 55.6 KB |
File Type | |
Total Downloads | 689 |
Total Views | 927 |
FIBONACCI REKURSIV fib(n)= fib(n-1) + fib(n-2), mit fib(1)=fib(0)=0 fib: addi $sp, $sp, -12 # Platz auf Stack machen sw $s0, 8($sp) # $s0 auf dem Stack sichern sw $a0, 4($sp) # $a0 auf dem Stack sichern sw $ra, 0($sp) # $ra auf dem Stack sichern bne $a0, $0, elseif # n == 0? add $v0, $0, $0 # if (n=...
FIBONACCI REKURSIV fib(n)= fib(n-1) + fib(n-2), mit fib(1)=fib(0)=0 # Platz auf Stack machen fib: addi $sp, $sp, -12 sw $s0, 8($sp) # $s0 auf dem Stack sichern sw $a0, 4($sp) # $a0 auf dem Stack sichern sw $ra, 0($sp) # $ra auf dem Stack sichern bne $a0, $0, elseif # n == 0? add $v0, $0, $0 # if (n==0), return 0 addi $sp, $sp, 12 # $sp wiederherstellen jr $ra elseif:
else:
addi $t0, $0, 1 bne $a0, $t0, else addi $v0, $0, 1 addi $sp, $sp, 12 jr $ra
# n == 1? # if (n==1), return 1 # $sp wiederherstellen
addi $a0, $a0, -1 jal fib # fib(n-1)
# n = n-1
add $s0, $v0, $0 lw $a0, 4($sp) addi $a0, $a0, -2 jal fib # fib(n-2)
# $s0 = fib(n-1) # $a0 wiederherstellen # n = n-2
add $v0, $s0, $v0 # $v0 = fib(n-1) + fib(n-2) lw $s0, 8($sp) # $s0 wiederherstellen lw $ra, 0($sp) # $ra wiederherstellen addi $sp, $sp, 12 # $sp wiederherstellen jr $ra # Rückkehr zum Aufrufer
FAKULTÄT REKURSIV n! = n-1 * n-2 * … * 1 main:
addi $a0, $0, 3
# Beispiel Wert
addi $sp, $sp, -8 sw $ao, 4($sp) sw $ra, 0($sp)
# Speicher reservieren # $a0 auf dem Stack sichern # $ra auf dem Stack sichern
addi $t0, $0, 2 slt $t0, $a0, $t0 beq $t0, $0, else
# $t0 = 2 zum vergleich # $a0 < 2 ? ($a0 ? 2 → else
addi $v0, $0, 1 addi $sp, $sp, 8
# $v0 = 1 setzen # Speicher freimachen
fakultät:
jr $ra else:
add $a0, $a0, -1 jal fakultät
# $ao = $a0 – 1
lw $ra 0($sp) lw $a0, 4($sp)
# Letztes $ra laden # Letztes $a0 laden
mul $v0, $a0, $v0
# §vo = $v0 * $a0 (hier: v0 = 1*2 = 2 → v0 = 2*3 = 6) # Speicher freimachen
addi $sp, $sp, 8 jr $ra...