Lazarus als IDE für LLVM (llvm-pascal)

Für Dinge rund um die Unterstützung des offizielen Lazarusprojekts, wie Übersetzungsabsprachen und anderem.
mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von mschnell »

MitjaStachowiak hat geschrieben:Im Prinzip könnte man natürlich sagen, ...

Über eine Begriffs-Definition ("virtuelle Maschine") kann man nicht diskutieren, sondern nur die offizielle Definition konsultieren. Und da ist ziemlich klar auch eine JIT basierte VM (die dasselbe tut wie ein Interpreter nur effizienter) gemeint.

"Im Prinzip" ist ein moderner Intel Chip ein Virtuelle Prozessor, weil er intern wie ein JIT Compiler arbeitet und eine "Übersetzungs-Einheit" hat, die den X86 Code häppchenweise in einen (proprietären) RISC Code übersetzt, der in einem Cache steht und von den Ausführungs-Einheiten dann verarbeitet wird.

-Michael

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von MitjaStachowiak »

Interessant. Ist das dann AMD64?

...sondern nur die offizielle Definition konsultieren

Sicher, aber wo findet man die? Auf Wikipedia steht zum Beispiel "Die virtuelle Machine bildet die Rechnerarchitektur eines echt in Hardware existierenden oder hypothetischen Rechners nach." Bei so Sachen, wie Virtual Box, schließt das auch den Nachbau sämtlicher Geräte, wie Maus, Sound- und Grafikkarte ein. Ich würde bei LLVM eher sagen "Man abstrahiert von der tatsächlichen Architektur, aber mit dem Ziel alle darin verfügbaren Möglichkeiten bestmöglich auszunutzen". Auf Wikipedia steht über LLVM auch, dass das FRÜHER für "Low Level Virtual Machine" stand und man dann diese Abkürzung als Name beibehalten hat.

Auf jeden Fall ist das Ziel der Virtualisierung bei LLVM die eigentliche Abstraktion, und nicht eine Trennung des Codes vom System für erhöhte Sicherheit.

Ich denke, in den nächsten Jahren werden die Begrifflichkeiten da auch immer mehr aufweichen, weil immer mehr JIT-Compilierung eingesetzt wird, inzwischen, wie du geschrieben hast sogar Hardwareseitig, an meiner TU arbeitet man angeblich an einer Architektur, die ihren Befehlssatz zur Laufzeit verändern kann. :shock:

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von mschnell »

Virtual Box und VMWare verwenden keine virtuellen Prozessoren, ebenso wenig Wine. Da wird der (aus einr Datei geladene) Objektcode direkt vom Hardware-Prozessor ausgeführt. Im Gegensatz zum "Normalbetrieb" werden nur Prozessor-Features (bei modernen Prozessoren) oder Änderungen im Objekt-Code, die beim Laden der auszuführenden Software eingebaut werden, verwendet, um mehrere parallel laufende "Maschinen" zu simulieren.

QEMU ist dagegen ein virtueller Prozessor.

-Michael
Zuletzt geändert von mschnell am Sa 10. Jan 2015, 17:40, insgesamt 5-mal geändert.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von mschnell »

MitjaStachowiak hat geschrieben: an meiner TU arbeitet man angeblich an einer Architektur, die ihren Befehlssatz zur Laufzeit verändern kann. :shock:


Ist nicht besonders neu und mit FPGAs gar kein Problem. Z.B. beim Altera NIOS Prozessor kann man "in Hardware" User-Befehle zusätzlich zu den MIPS-ähnlichen Standard-Befehlen selbst implementieren.

In stark eingeschränkter Form können das auch Intel-CPUs. Da wird beim Start immer vom BIOS ein Patch eingespielt, das bei bestimmten Befehlen auftretende Hardware-Fehler beheben kann, indem sie anders (z.B. langsamer aber fehlerfrei) umgesetzt werden (laut Intel werden natürlich nur "Verbesserungen" eingespielt).

-Michael
Zuletzt geändert von mschnell am So 11. Jan 2015, 09:31, insgesamt 1-mal geändert.

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von MitjaStachowiak »

Virtual Box und VMWare verwenden keine virtuellen Prozessoren

Hast recht, auf x86-Hosts kann man auch nur x86-Guests laufen lassen... Das hatte ich schon vergessen.

Da wird beim Start immer vom BIOS ein Patch eingespielt

Gut zu wissen. Kennst du dafür auch eine Quelle?

Ich würde die Details gerne mal nachlesen.

QEMU ist dagegen ein virtueller Prozessor.

...der aber auch wieder geeignete Codesequenzen auf der physikalischen CPU ausführen kann. Aber ich schweife ab :mrgreen:

Kennt zufällig jemand eine seriöse Quelle, die die Sicherheit von Virtual Box und anderer virtueller Maschinen unter die Lupe nimmt?

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von mschnell »

MitjaStachowiak hat geschrieben:Gut zu wissen. Kennst du dafür auch eine Quelle?


Google "cpu microcode"
http://thinkpad-forum.de/threads/130543 ... deutet-das
http://en.wikipedia.org/wiki/Microcode
...
-Michael
Zuletzt geändert von mschnell am Mi 17. Jan 2018, 12:06, insgesamt 1-mal geändert.

thosch
Beiträge: 324
Registriert: Mo 10. Jul 2017, 20:32

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von thosch »

MitjaStachowiak hat geschrieben:Hallo,

wer beim letzten Forumtreffen dabei war, erinnert sich vielleicht, dass ich bereits Fragen in diese Richtung gestellt habe. Also LLVM ist ganz entfernt mit Java vergleichbar: Hochsprachen werden für eine RISC-Architektur kompiliert, für die es nicht unbedingt eine Mikroarchitektur (Hardware), sondern nur eine virtuelle Umgebung gibt. Innerhalb dieser Umgebung können Optimierungen, Debugging, etc. durchgeführt werden, dann wird das Ganze in einen bestimmten Assembler-Code für x86, amd64, ARM, usw. übersetzt.


AN sowas habe ich auch schon gedacht.

Könnte man dies nicht auch mit PascalScript erreichen?

-Pascalprogramm schreiben

-Im Skriptiinterpreter ausführen testen debuggen

-wenn alles fehlerfrei funktioiert, Programm für konkreten Prozessor übersetzen.

.

mischi
Beiträge: 206
Registriert: Di 10. Nov 2009, 18:49
OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x
CPU-Target: 32Bit/64bit

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von mischi »

Was ich über den Stand der Dinge weiß: Mit fpc 3.0.4 kann man bereits für die virtuelle cpu jvm kompilieren. Das war als Vorarbeit zu llvm gedacht. In trunk kann man die compiler bereits mit llvm kompilieren, indem man die Variable LLVM setzt:

make -C compiler all LLVM=1

rtl und packages gehen wohl noch nicht. Dahinter steckt auch die Idee, im Endeffekt die Optimierungen von llvm zu nutzen. Dadurch erspart man sich separate Optimierungen in fpc für jede einzelne cpu, weil die dann von llvm übernommen werden.

Die Person hinter dieser Entwicklung ist Jonas Maebe und er hat eben auch nicht unendlich viel Zeit, aber vielleicht gibt es ja hier schlaue Leute, die ihn unterstützen können.

MiSchi
MiSchi macht die fink-Pakete

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Beitrag von mse »


MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von MitjaStachowiak »

Coole Arbeit!
LLVM scheint ja tatsächlich was zu bringen...
Welche Optimierungsstufe hast du in den Tests für FPC verwendet?

Theoretisch bräuchte man doch "nur" die Zwischenarchitektur von LLVM als weitere Zielplattform in FPC einzubauen und schon könnte man mit Lazarus für LLVM coden ohne komplizierte Anbindung eines alternativen Compilers (also kein Murks wie LLVM-pascal). Oder übersehe ich was?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von mse »

MitjaStachowiak hat geschrieben:Coole Arbeit!
LLVM scheint ja tatsächlich was zu bringen...
Welche Optimierungsstufe hast du in den Tests für FPC verwendet?

-O3, oder wenn FPC abstürzt -O1, die Bedingungen sind jeweils angegeben.
Theoretisch bräuchte man doch "nur" die Zwischenarchitektur von LLVM als weitere Zielplattform in FPC einzubauen und schon könnte man mit Lazarus für LLVM coden ohne komplizierte Anbindung eines alternativen Compilers (also kein Murks wie LLVM-pascal). Oder übersehe ich was?

Das ist ja das was Jonas macht:
http://wiki.freepascal.org/LLVM
Warum ist LLVM-Pascal ein Murks?

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von MitjaStachowiak »

LLVM-Pascal habe ich vor längerer Zeit mal angesehen und das sah eher nach einem halbfertigen Studienprojekt aus, aber keine Ahnung, wie sich das weiter entwickelt hat :wink:

Soner
Beiträge: 622
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von Soner »

mse hat geschrieben:
MitjaStachowiak hat geschrieben:Coole Arbeit!
LLVM scheint ja tatsächlich was zu bringen...
Welche Optimierungsstufe hast du in den Tests für FPC verwendet?

-O3, oder wenn FPC abstürzt -O1, die Bedingungen sind jeweils angegeben.
Theoretisch bräuchte man doch "nur" die Zwischenarchitektur von LLVM als weitere Zielplattform in FPC einzubauen und schon könnte man mit Lazarus für LLVM coden ohne komplizierte Anbindung eines alternativen Compilers (also kein Murks wie LLVM-pascal). Oder übersehe ich was?

Das ist ja das was Jonas macht:
http://wiki.freepascal.org/LLVM
Warum ist LLVM-Pascal ein Murks?

Nein, LLVM-Pascal hat ein Brasilianische Student Wanderlan gemacht https://github.com/wanderlan/llvm-pascal/wiki/Object-Pascal-compiler-for-LLVM.

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Lazarus als IDE für LLVM (llvm-pascal)

Beitrag von MitjaStachowiak »

Yepp. Als Studienprojekt war das sicher 'ne tolle Sache, aber ein Ersatz für Freepascal ist das nicht. Wozu auch, wenn FPC selbst jetzt auf LLVM hinarbeitet.

Habe mir gerade die Liste der ToDos angesehen: http://wiki.freepascal.org/LLVM
Ich habe letztes Jahr auch eine Compilerbau-Vorlesung gehört und frage mich, ob ich hier helfen kann... Werde das Thema definitiv beim nächsten Forumtreffen ansprechen :mrgreen:

Antworten