Einzelnen Beitrag anzeigen

Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#15

AW: Fehler beim Byte-Swap mit Assembler in Delphi

  Alt 29. Feb 2012, 09:24
Moin moin,

erstmal danke für eure Erklärungen. Ich konnte es gestern Abend noch unter einem XE2 testen. Wenn ich allerdings eine x64 Version erstellt habe und diese auf einer x64 CPU ausführe, funktioniert es nicht wie gewünscht.

Ursache ist wohl, dass bei 64bit der Wert DW nicht in EAX übergeben wird, sondern in ECX. (Falls diese Erklärung falsch ist, dann korrigiert mich)
Delphi-Quellcode:
function SwapDWord(DW: DWord): DWord;
asm
{$IFDEF CPUX64}
   MOV EAX, ECX
{$ENDIF CPUX64}
   BSWAP EAX
end;
So hat es jedenfalls auf 32bit wie auch auf 64bit funktioniert.
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat