Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#17

Re: heruasfinden ob zahl Gerade oder ungerade ist

  Alt 10. Sep 2004, 00:21
nein wird es nicht, Odd() ist ein Compiler-Magic und muß direkt im Source anaylsiert werden. In den meisten Fällen wie eben

if Odd(Zahl) then ; ensteht ein Branch, ein bedingter Sprung in Assembler.

Delphi-Quellcode:
asm
  AND EAX,1
  JZ @NichtOdd


@NichtOdd:
end;
if Zahl and 1 = 1 then ; würde dagegen so aussehen

Delphi-Quellcode:
asm
   AND EAX,1
   CMP EAX,1
   JNE @NichtOdd

@NichtOdd:
end;
Odd() selber wird aber als Magic unterschiedlich nach Assembler umgesetzt, zB.

Result := Odd(Zahl); würde im besten Falle so aussehen

AND EAX,1 könnte aber auch so ausehen

Delphi-Quellcode:
AND EDX, 1
SETNZ AL
je nach Optimierung des Compiliers und den Vorrausetzung der benutzen Register.

Gruß hagen
  Mit Zitat antworten Zitat