Assembler PUSH ESI unter Linux 64 Bit

Antworten
MmVisual
Beiträge: 1466
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Assembler PUSH ESI unter Linux 64 Bit

Beitrag von MmVisual »

Hallo,

Ich bin gerade dabei eine Lazarus Projekt in Linux von 32 Bit auf 64 Bit hoch zu nehmen, im Code sind einige Assembler Befehle, die ich nicht umschrieben kann, da mir das Wissen fehlt.
Diese Meldung kommt vom Kompiler:

Error: Asm: [push reg32] invalid combination of opcode and operands

Bei diesen Zeilen:
PUSH ESI
PUSH EDI
POP EDI
POP ESI

Weiß jemand wie ich das Ändern kann, dass es funktioniert?

Wie heißt die Compilerdirektive vom FPC der zwischen 32Bit und 64 Bit unterscheidet? (Damit ich mit {$ifdef } zwischen 32 und 64 Bit umschalten kann.

Vielen Dank für eure Hilfe.

Gruß Markus.

Linux: Suse/KDE64 Bit, FPC 2.6.0, Lazarus 0.9.31/SVN:35701

indianer-frank
Beiträge: 134
Registriert: So 30. Nov 2008, 21:53

Re: Assembler PUSH ESI unter Linux 64 Bit

Beitrag von indianer-frank »

Wie wär's mit sowas:

Code: Alles auswählen

{$ifdef CPU64}
  push rsi
  push rdi
  pop  rdi
  pop  rsi
{$else}
  push esi
  push edi
  pop  edi
  pop  esi
{$endif}
Gruß Frank

MmVisual
Beiträge: 1466
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Assembler PUSH ESI unter Linux 64 Bit

Beitrag von MmVisual »

Vielen Dank!
Das hat geklappt.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten