AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XE2: ASM und Pascal gemischt?

Ein Thema von Schorschi5566 · begonnen am 11. Sep 2011 · letzter Beitrag vom 12. Sep 2011
 
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#11

AW: XE2: ASM und Pascal gemischt?

  Alt 12. Sep 2011, 08:25
Dieser ASM-Trick wird häufig verwendet (z.B. Jedi-Projekt). Es gibt drei Vorteile:
1) Es braucht nicht jedesmal eine individuelle global variable deklariert zu werden. Wenn man nur eine Funktion wrappen muss spielt das keine Rolle, aber bei 150 Funktionen macht einen dieses ständige Copy&Paste schon ganz schön müde.
2) Die Parameter, die sich ja sowieso schon auf dem Stack befinden, werden nicht nochmal auf den Stack kopiert
3) Ein sicherlich zu vernachlässigender Zeitvorteil beim Sprung/Rücksprung in die eigentliche Routine

Wenn der Compiler eine Aufrufkonvention unterstützen würde, bei der die Parameter nicht nochmals kopiert werden müssten, könnte man sich den Umweg über Assembler sparen. Ich würde mir so etwas wünschen (entsprechend des Aufrufs "inherited;"):

Delphi-Quellcode:
var
   _SQLite3_Open: FARPROC;

function SQLite3_Open(filename: PAnsiChar; var db: TSQLiteDB): integer; cdecl;
begin
   if _SQLite3_Open = nil then
     LoadProcAddress(_SQLite3_Open, 'sqlite3_open');
   _SQLite3_Open;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz