AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Inline-Funktionen und der Delphi-Compiler...
Thema durchsuchen
Ansicht
Themen-Optionen

Inline-Funktionen und der Delphi-Compiler...

Offene Frage von "OldGrumpy"
Ein Thema von OldGrumpy · begonnen am 6. Nov 2007 · letzter Beitrag vom 6. Nov 2007
Antwort Antwort
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#1

Inline-Funktionen und der Delphi-Compiler...

  Alt 6. Nov 2007, 11:24
Hallo zusammen,

ich hab kürzlich gelesen, dass der Delphi-Compiler sehr wählerisch sei, was Inline-Funktionen angeht. Mit anderen Worten, man kann sehr wohl die Inline-Direktive benutzen, der Compiler lässt sich aber nicht zum Inlinen zwingen. Wenn nun also der Berg nicht zum Propheten kommt...

Lange Rede, kurzer Sinn: Weiss jemand, welche Bedingungen eine Funktion erfüllen muss, damit sie vom Compiler auch als Inline akzeptiert wird? Der Compiler wird ja nicht gerade würfeln
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.173 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Inline-Funktionen und der Delphi-Compiler...

  Alt 6. Nov 2007, 13:57
In der uses-Anweisung müssen alles Units aufgeführt sein für die Funktionen die "geinlined" werden.
Wird aber auch als Warnung angezeigt falls das nicht der Fall ist.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Inline-Funktionen und der Delphi-Compiler...

  Alt 6. Nov 2007, 14:02
Könnte mir gut vorstellen, dass das von der Anzahl der benötigten Register abhängt.
Wenn die Inline-Funktion z.B. zwei Register benötigt aber im aufrufenden Kontext schon alle X86 Register
benützt werden, wird sich der Compiler wohl dafür entscheiden die Funktion nicht inline zu kompilieren.
Der X86 Befehlssatz hat leider viel zu wenig Register.
Alternativ könnte der Compiler ja PUSH und POP einfügen, aber das ist viel komplizierter als ein normaler
Funktionsaufruf.

Wenn die Inline-Funktion nur ein Register (EAX) benötigt, gibt es wahrscheinlich kein Problem,
da ja mit EAX ständig gearbeitet wird.
Die Inlinefunktion sollte also keine lokalen Variablen benutzen und höchstens einen Übergabeparameter haben,
damit nur ein Register benützt werden muss.

Das sind hier nur Vermutungen, aber ich denke dass sie zutreffen.
Andreas
  Mit Zitat antworten Zitat
geofranz01

Registriert seit: 17. Jun 2007
72 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Inline-Funktionen und der Delphi-Compiler...

  Alt 6. Nov 2007, 15:11
IMHO prüft der Compiler ob es einen Zeitvorteil bringt (zeitkritische Anwendung). Falls nicht streicht er die inline-Funktion und ruft sie normal auf.

Gruß
Max
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#5

Re: Inline-Funktionen und der Delphi-Compiler...

  Alt 6. Nov 2007, 22:51
ab und an hilft auch mal die OH weiter ... . in diesem falle sogar sehr gut (zumindest für D2006)


Hilfekenntwort: Inline-Direktive

<HTH>
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz