Wie funktioniert fpc/Delphi intern

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
NoCee
Beiträge: 170
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

Wie funktioniert fpc/Delphi intern

Beitrag von NoCee »

Hallo zusammen,
ich habe Verschiedenes über Programmiersprachen /Kompiler usw. gelesen.
Da steht u.a. Lazarus kann sich selber kompilieren. Jetzt bin ich aber über GCC gestolpert
was mich in meinem Wissen verunsichert hat.
Wie tickt fpc/Delphi intern? Werkelt da C im Hintergrund mit.
Wer compiliert jetzt da?

Schon mal danke für eine Antwort
Gruß
NoCee

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Wie funktioniert fpc/Delphi intern

Beitrag von af0815 »

Ganz einfach, der fpc kann seit Jahren den fpc kompilieren. Deswegen gibt es auch die Regeln zu den Bootstrap Compilern. Sprich der letzte stable wird verwendet und der konpilierte compiler muss sich srlbst compilieren können. Das ist für die Mainstream compiler so.

Auf verschiedenen Plattformen können natürlich andere (cross)- Compiler chains verwendet werden, die auch den gcc verwenden können. fpc als Compiler bzw. auch als Transpiler können natürlich auch (zwischen)-Code erzeugen, der erst vom gcc der Plattform in den endgültigen ausführbaren Code der Plattform bringt.

Bei Lazarus ist eine Trennung. Die IDE ist Lazarus, der Compiler ist der FPC. Bei Delphi ist das monolitisch zu sehen. Weil für eine kurze Zeit wurde auch dort der FPC verwendet. Zumindest behaupten das die Sagen aus längst vergangenen Zeiten.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Wie funktioniert fpc/Delphi intern

Beitrag von Winni »

Hi!

Die Herangehensweisen von fpc und Delphi unterscheiden sich grundlegend:

Free Pascal produziert im Backend Assembler code, der von dem jeweils zuständigen Assembler und dann dem Linker zu einem ausführbaren Binärcode zusammengebaut werden.

Durch diese Herangehensweise kann der fpc auf vielen verschiedenen Prozessoren und Betriebssystemen ausgeführt werden.

Delphi ist anders gestrickt. Die IDE selbst ist in Delphi geschrieben. Der Compiler war im Anfang in C geschrieben. Irgendwann wurde darüber gemunkelt, den nach C++ zu portieren. Ich weiss nicht, ob das inzwischen passiert ist.

Aufgrund dieser unflexiblen Struktur hat es Delphi wesentlich schwerer mit anderen Prozessoren und Betriebssystemen.

Winni

PascalDragon
Beiträge: 829
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Wie funktioniert fpc/Delphi intern

Beitrag von PascalDragon »

af0815 hat geschrieben:
Fr 11. Mär 2022, 19:13
fpc als Compiler bzw. auch als Transpiler können natürlich auch (zwischen)-Code erzeugen, der erst vom gcc der Plattform in den endgültigen ausführbaren Code der Plattform bringt.
Ganz entschieden: Nein. gcc ist da nie involviert. Das einzige was für andere Plattformen benötigt wird, wenn FPC die nicht selbst bereitstellt, sind Assembler und Linker. Diese sind Teil des GNU binutils Projekts und nicht von gcc. Und selbst für den Fall, dass clang genutzt wird (zum Beispiel aarch64-win64), wird hier nur der Assembler Teil genutzt und nicht der C Compiler.
FPC Compiler Entwickler

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Wie funktioniert fpc/Delphi intern

Beitrag von af0815 »

Mea culpa, ich habe da den Assembler (AS) und gcc in einen falschen Topf geworfen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

NoCee
Beiträge: 170
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

Re: Wie funktioniert fpc/Delphi intern

Beitrag von NoCee »

af0815 hat geschrieben:
Mo 14. Mär 2022, 17:38
Mea culpa, ich habe da den Assembler (AS) und gcc in einen falschen Topf geworfen.
Mich beschleicht der Verdacht, daß ich das auch gemacht habe.
Außerdem mußte ich feststellen, daß GCC nicht mehr C-Compiler heißt sondern GNU Compiler Collection.
War mir jetzt auch neu.


Danke für die Infos
Gruß
NoCee

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Wie funktioniert fpc/Delphi intern

Beitrag von Winni »

Hi!

Die heißen jetzt

GCC, the GNU Compiler Collection

weil die viele Frontends für diverse Sprachen haben, aber sich ein Backend teilen.

Nicht nur C oder C ++, es gibt auch Fortran oder Ada:

https://gcc.gnu.org/

GNU Pascal ist nicht mehr dabei - das ist so um 2005 leise verstorben.

Winni

Warf
Beiträge: 1909
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Wie funktioniert fpc/Delphi intern

Beitrag von Warf »

GCC besteht aus verschiedenen compilern, dem GNU C Compiler der auch den namen gcc trägt (woher die verwirrung stammt), dem GNU C++ Compiler, der g++ heist, der GNU Fortran Compiler, der gfortran heist, der GNU Ada Compiler der gnat heist, und noch ein paar mehr die mir jetzt nicht alle einfallen (ich glaube Objective C ist auch noch dabei, weis aber nicht wie der heist).

GCC ist also sowohl der Name für den C Compiler als auch für die Suite, ähnlich wie Delphi der Name für die IDE und den compiler ist

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Wie funktioniert fpc/Delphi intern

Beitrag von Winni »

Hi!

Das neueste von gcc:

Fork der GNU Compiler Collection;: Cobol

https://www.heise.de/news/Frischzellenk ... 2634.html

Damit die Banken nicht die Programmiersprache wechseln müssen - oder wie???

Winni

Antworten