Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

fibonaccifolge in mips assembler

hategrown / 9 Antworten / Flachansicht Nickles

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

bei Antwort benachrichtigen
mr.escape hategrown „fibonaccifolge in mips assembler“
Optionen

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

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen