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

Für Dinge rund um die Unterstützung des offizielen Lazarusprojekts, wie Übersetzungsabsprachen und anderem.

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

Beitragvon mschnell » 10. Jan 2015, 07:56 Re: Lazarus als IDE für LLVM (llvm-pascal)

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
mschnell
 
Beiträge: 3226
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon MitjaStachowiak » 10. Jan 2015, 10:59 Re: Lazarus als IDE für LLVM (llvm-pascal)

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:
MitjaStachowiak
 
Beiträge: 336
Registriert: 15. Mai 2010, 12:46
CPU-Target: 64 bit
Nach oben

Beitragvon mschnell » 10. Jan 2015, 12:34 Re: Lazarus als IDE für LLVM (llvm-pascal)

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 10. Jan 2015, 17:40, insgesamt 5-mal geändert.
mschnell
 
Beiträge: 3226
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon mschnell » 10. Jan 2015, 12:41 Re: Lazarus als IDE für LLVM (llvm-pascal)

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 11. Jan 2015, 09:31, insgesamt 1-mal geändert.
mschnell
 
Beiträge: 3226
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon MitjaStachowiak » 10. Jan 2015, 22:31 Re: Lazarus als IDE für LLVM (llvm-pascal)

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?
MitjaStachowiak
 
Beiträge: 336
Registriert: 15. Mai 2010, 12:46
CPU-Target: 64 bit
Nach oben

Beitragvon mschnell » 11. Jan 2015, 09:25 Re: Lazarus als IDE für LLVM (llvm-pascal)

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 17. Jan 2018, 12:06, insgesamt 1-mal geändert.
mschnell
 
Beiträge: 3226
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon thosch » 13. Jan 2018, 15:47 Re: Lazarus als IDE für LLVM (llvm-pascal)

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.

.
thosch
 
Beiträge: 131
Registriert: 10. Jul 2017, 19:32

Beitragvon mischi » 13. Jan 2018, 17:05 Re: Lazarus als IDE für LLVM (llvm-pascal)

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
mischi
 
Beiträge: 204
Registriert: 10. Nov 2009, 18:49
OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon mse » 13. Jan 2018, 17:35

mse
 
Beiträge: 1986
Registriert: 16. Okt 2008, 09: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
Nach oben

Beitragvon MitjaStachowiak » 17. Jan 2018, 11:32 Re: Lazarus als IDE für LLVM (llvm-pascal)

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?
MitjaStachowiak
 
Beiträge: 336
Registriert: 15. Mai 2010, 12:46
CPU-Target: 64 bit
Nach oben

Beitragvon mse » 17. Jan 2018, 13:38 Re: Lazarus als IDE für LLVM (llvm-pascal)

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?
mse
 
Beiträge: 1986
Registriert: 16. Okt 2008, 09: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
Nach oben

Beitragvon MitjaStachowiak » 17. Jan 2018, 23:26 Re: Lazarus als IDE für LLVM (llvm-pascal)

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:
MitjaStachowiak
 
Beiträge: 336
Registriert: 15. Mai 2010, 12:46
CPU-Target: 64 bit
Nach oben

Beitragvon Soner » 18. Jan 2018, 01:04 Re: Lazarus als IDE für LLVM (llvm-pascal)

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.
Soner
 
Beiträge: 411
Registriert: 26. Sep 2012, 23:07
Wohnort: Hamburg
OS, Lazarus, FPC: Win7Pro-32Bit, Immer letzte Lazarus Release mit SVN-Fixes | 
CPU-Target: 32Bit
Nach oben

Beitragvon MitjaStachowiak » 21. Jan 2018, 19:43 Re: Lazarus als IDE für LLVM (llvm-pascal)

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:
MitjaStachowiak
 
Beiträge: 336
Registriert: 15. Mai 2010, 12:46
CPU-Target: 64 bit
Nach oben

• Themenende •
Vorherige

Zurück zu Unterstützung Lazarusproject



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried