Einzelnen Beitrag anzeigen

Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

XE2: ASM und Pascal gemischt?

  Alt 11. Sep 2011, 17:11
Hallo DPler,

ich habe gerade den von mir bevorzugten SQLite3-Wrapper in XE2 (Win32) an den Start gebracht. Funktioniert soweit, wie erwartet. Also das Ganze mal für die Win64-Plattform probiert... (dass die DLL im Moment nur in der 32Bit-Version vorliegt, sollte mit dem Problem erstmal nichts zu tun haben)

Eine erste Besonderheit des Wrappers ist, dass er Funktionen der SQLite-DLL erst bei Bedarf lädt.

Dazu verwendet der Wrapper beispielsweise folgenden Code:
Delphi-Quellcode:
var
  _SQLite3_Open: Pointer;

function SQLite3_Open(filename: PAnsiChar; var db: TSQLiteDB): integer; cdecl;
begin
  if _SQLite3_Open = nil then
    LoadProcAddress(_SQLite3_Open, 'sqlite3_open');
  asm
    MOV ESP, EBP
    POP EBP
    JMP [_SQLite3_Open]
  end;
end;
Beim Kompilieren für die Win64-Plattform stolpert er nun über die ASM-Anweisung.

Meldung: [DCC Fehler] SQLite3Wrapper.pas(360): E1025 Sprach-Feature wird nicht unterstützt: 'ASM'

Frage: Liegt es wieder daran, dass ich noch mit der Trial "rummache" oder geht sowas tatsächlich nicht mehr?
Oder liegt's an der Angabe der calling convention, die es ja in der Form unter Win64 nicht mehr gibt. "cdecl" weglassen hat aber nichts geändert.


Grüße,
Uwe
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks
  Mit Zitat antworten Zitat