ja auf den ersten blick ist die simple addition und der vergleich schwachsin. Ich will Assembler lernen und auch verstehen lernen was mir als delphi-entwickler mit assembler für Möglichkeiten entstehen.
Deshalb ist das ein Versuch von mir, ein Delphiprogramm zu schreiben was z.b. einen vergleich in delphi und einen in assembler ausführt. Durch die Schleife (1. c kann nie < 1 sein weil es ein integer ist, und weil ich es hardcoded setze) die ich einsetze will ich die gleiche Operation, mehrmals hintereinander ausführen um so die dauer zu summieren:
Delphi-Quellcode:
start1:=now;
//zeit vor der schleife
asm
MOV ECX,c
@schleife1:
MOV EAX,wert1
ADD EAX,wert2
LOOP @schleife1
MOV result1,EAX
end;
end1:=now;
//zeit nach der schleife
label3.Caption:=inttostr(result1)+'
'+Formatdatetime('
ss:zzz',end1-start1);
//Ergebnis + Dauer
Das mache ich, weil nur eine ausführung bei diesen einfachen beispielen immer in nur <001 hundertstel sec abgearbeitet wird. Damit hätte ich sogar (wie ich bisher gemerkt habe) einigermassen vergleichbare Ergebnisse zwischen dem Delphi-compiler und assembler.
Was ich erreichen will ist, den assembler code verstehen und bei einfachen operationen am besten genauso/ähnlich schnell zu werden wie der Delphi compiler.
2. Stimmt, du hast recht, ich wollte die gespeedeste version für beide einsetzen, aber so ist das unrealistisch weil man sollte ja nicht davon ausgehen das das ergebnis immer das gleiche ist (auch wenn es in diesem fall so ist). Anmerkung umgesetzt!
Das ist der
asm code vom delphi compiler?
cool...Vielen dank für den Tipp damit das mich das loop so ausgebremst hat (hab die ursache schon gesucht), der ist gold wert!
Übrigens der Code den du mir geschickt hast ist 300 hundertstel sec schneller als die schleife in delphi, ergebnis ist wiederholbar.
Vielen Dank das du dir die zeit nimmst zu antworten!
PS: