Hallo,
das sind meine ersten Gehversuche in Delphi Inline
ASM. Wie man sieht, es soll die Fibonacci Folge berechnen. Zum Einstieg habe ich mir
das Tutorial von Balu der Bär angeschaut.
Es funktioniert soweit ich sehr gut (bis Schritt 45, ab da geht's ins negative), schon bei meinem dritten oder vierten Anlauf funktionierte es =)
Die Registergröße selbst kann man nicht ändern. Trotzdem gibt es ja Möglichkeiten, größere Werte (z.B. Int64) zu speichern. Wie gehe ich so etwas an? Mehrere Register für einen Zahlenwert nutzen vielleicht?
Außerdem würde ich mich freuen, wenn Ihr Schönheitsfehler nennen würdet (funktionieren tut es ja...), damit ich mir das von Anfang an angewöhnen kann =)
Delphi-Quellcode:
function fibonacci(step:integer):integer;
asm
push ebx
cmp step,2
jbe @@
end
mov ecx,step
sub ecx,2
xor eax,eax
mov ebx,1
mov edx,2
@@loop:
xor eax,eax
add eax,ebx
add eax,edx
mov ebx,edx
mov edx,eax
dec ecx
cmp ecx,0
jne @@loop
@@
end:
pop ebx
end;
//Edit: Wurde etwas gekürzt...
//Edit2: Upps, da sind wohl ein paar Einrückungen futschgegangen...
Danke im Voraus,
Gruß,
Frank.