Ungetestet, und keine Ahnung ob das wirklich schneller ist. Spart ein paar OPs, ob es damit auch cycles spart ist nie so sicher
Zumindest spart es eine Menge pushes auf den FPU Stack! Auch möglich, dass man den Vergleich mit i noch etwas optimieren kann, ohne die Statusbits erst noch nach AX zu schaufeln. Das wait kann man sich erfahrungsgemäß so gut wie immer sparen. In meinen Handoptimierungen hat es bislang zumindest nie weh getan das einfach ersatzlos zu streichen
Delphi-Quellcode:
fild &i
fld &n
fld &Zahl
jmp @@Loop
@@Start:
// Unit1.pas.32: Zahl:= Zahl +1/n;
fld 1
fdiv st(0), st(2)
faddp
// Unit1.pas.33: n:= n+1;
fadd st(1), 1
@@Loop:
// Unit1.pas.30: while Zahl < i do
fcomp st(2)
fstsw ax
sahf
jnbe @@Start
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)