hi kann mir wer bei der implementierung der fibonaccifolge in assembler helfen :
die folge ist wie folgt definiert :
für n=0 f(n)=0, für n=1 f(n)=1
für n>=2 : f = f(n-1)+f(n+2)
krieg dass einfach nicht gebacken, bin für jeden lösungsvorschlag sehr dankbar
mfg hategrown
Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge
Vielleicht so?
#start
#$a0 = n
#rückgabe in $v0
#zerstört inhalt von $t0, $t1, $t2 und u.u. $a0
fib_start:
beq $a0, $zero, offset_a0 #für n=0 gebe n zurück
addi $t0, $a0, -1
beq $t0, $zero, offset_a0 #für n=1 gebe n zurück
addi $a0, $a0, -2 #noch n-2 schritte übrig
move $t2, $zero #f_n-2=0
addiu $t1, $t2, 1 #f_n-1=1
fib_loop:
addu $t0, $t1, $t2 #f_n=aus alten werten berechnen
beq $a0, $zero, offset_t0 #wenn letzter durchgang, $t0 zurückgeben
move $t2, $t1 #werte weiterkopieren (hier könnte man auch ein dreiteiliges loop-unrolling machen)
move $t1, $t0 #werte weiterkopieren
addi $a0, $a0, -1 #zähler verringern
j fib_loop
offset_a0:
move $v0, $a0
j $ra
offset_t0:
move $v0, $t0
j $ra
mr.escape