Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#24

AW: einzelne bytes in ein 4-byte int umwandeln

  Alt 23. Mär 2017, 19:10
Von inline Assembly würde ich abraten. Ist zwar tatsächlich schneller, als die vom Delphi Compiler ziemlich hirnlos generierte Übersetzung des Pascal Äquivalents, aber:
  1. es lässt sich deutlich schlechter lesen
  2. es ist verdammt Fehler-anfällig und schlecht zu warten
  3. 64-Bit unterstützt kein inline Assembly

Wenn du es doch umbedingt verwenden willst, dann solltest du dran denken volatile Register zu preserven:
Delphi-Quellcode:
asm
  push eax
  ..
  pop eax
end;
In der Standard Calling-Convention von Delphi wird EAX zwar final als Return-Value verwendet, aber theoretisch steht es dem Compiler frei auch mitten in der Funktion irgendwelche Werte in EAX abzulegen, die vielleicht nach deinem Assembler Block nochmal gebraucht werden.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat