Einzelnen Beitrag anzeigen

Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#48

AW: 256 bit Integer Addition von ASM in PurePascal

  Alt 3. Dez 2013, 07:42
Das läuft in x64 Delphi, das RDX Register scheint dem FPC x64 Compiler aber nicht zu gefallen:
Zitat:
Error: Unknown identifier "RDX"
Gleich in der ersten Zeile bei SHL RDX, 3.

Nun gut, ich kenne FPC nicht weiter, möglicherweise ist dies bekannt und über Defines steuerbar. Ggf bleibt dort der Weg über PurePascal, was wegen der breiteren Unterstützung ja mit o.g. Delphi Code möglich ist.
Ist zwar schon ne Weile her der Post, aber dennoch sollte man erklären woran es hier hakt: FPC arbeitet standardmäßig im AT&T Syntax Modus, wobei register mit einem "%"-Prefix benannt sind und noch dazu Source und Destination Register vertauscht sind. Will man den Intel Modus verwenden (der für i386 und x86_64 unterstützt ist), so muss man eine {$asmmode intel} Direktive einfügen.

Eine Anmerkung noch zu Calling Conventions: diese sind unter x86_64-win64 und x86_64-[alles andere] unterschiedlich. Letztere verwenden die Linux x86_64 ABI während nur Windows hier sein eigenes Süppchen kocht. Für FPC würde ich dennoch eine PurePascal Implementierung vorziehen, da es ja noch einige Plattformen mehr gibt (Achtung: auch mit unterschiedlicher Endianess!).

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat