N'abend!
Habe mich gerade eben mal an das Inline Assembling von Delphi getraut. Hat mich zuerst abgeschreckt, aber wenn man erstmal hinter den Grundgedanken kommt, ist es einfacher als man erwartet. Nun, ich habe mir vorgenommen, eine Funktion zur berechnung der Fakultät zu schreiben. Klappt soweit auch ganz gut. Jedoch ist natürlich irgendwann der Wertebereich überschritten, hier leider schon ab 14! . Wie kann ich die Größe der Register ändern? Mit CDQ habe ich es bereits getestet, half aber leider auch nicht.
Grüße,
Frank.
Delphi-Quellcode:
function faculty(i:integer):integer;
asm
mov ecx,i
//schleifenvariable auf i setzen
mov eax,1
//startwert auf 1 initialisieren
@schleife:
//wiederhole
mul ecx
//eax = eax * schleifenvariable
loop @schleife
//bis schleife i mal durchlief
mov @result,eax
//gebe ergebnis aus
end;