Assembler PUSH ESI unter Linux 64 Bit

Assembler PUSH ESI unter Linux 64 Bit

Beitragvon MmVisual » 8. Mär 2012, 12:07 Assembler PUSH ESI unter Linux 64 Bit

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
MmVisual
 
Beiträge: 1109
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon indianer-frank » 8. Mär 2012, 12:46 Re: Assembler PUSH ESI unter Linux 64 Bit

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
indianer-frank
 
Beiträge: 134
Registriert: 30. Nov 2008, 21:53

Beitragvon MmVisual » 8. Mär 2012, 13:42 Re: Assembler PUSH ESI unter Linux 64 Bit

Vielen Dank!
Das hat geklappt.
MmVisual
 
Beiträge: 1109
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

• Themenende •

Zurück zu Linux



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron
porpoises-institution
accuracy-worried