Einzelnen Beitrag anzeigen

Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#1

erste Gehversuche in Delphi InlineASM

  Alt 5. Jan 2008, 17:24
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.
Frank Dumont
  Mit Zitat antworten Zitat