Autor Thema: Entwicklung eines JIT-Compilers  (Gelesen 5528 mal)

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« am: 06. December 2005, 20:52 »
Ich entwickele gerade einen Java Compiler, den ich in den Kernel meines OS einbauen will. Dieser Compiler soll zur Laufzeit Java Code (also classfiles) zu x86 Code kompilieren und linken können. Er sollte selbst auch in Java geschrieben sein, und sich selbst kompilieren können, damit man ihn in nativen Code, wie den OS Kernel einbauen kann.

Vor einigen Wochen habe ich einen einfach Compiler für Java gebastelt, der jedoch nur Java zu NASM Code kompilieren konnte. Der neue Kompiler soll aber direkt zu x86 Code kompilieren können, und diesen linken können. Ausserdem ist er nicht grad gut gecodet^^;.

Hier gibt es meinen alten Compiler zum Download:
http://80.190.252.208/~os/aot.zip

Ich würde mich sehr freuen, falls jemand sich vom Compiler beteiligen könnte. Es werden eigentlich nur Java Kenntnisse, und Motivation erforderlich, um an dem Projekt mitzumachen.
Ich würde mich freuen, wenn sich der eine oder andere findet :)

Azi

  • Beiträge: 47
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 06. December 2005, 20:56 »
Bei deinem Projekt kann ich dir nicht helfen, aber bei etwas anderem:
Du könntest deine Seite bei DynDNS anmelden, oder, falls die IP statisch ist, eine .de.vu-Domain rüberleiten :wink: !

Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen nicht.

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger.

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 06. December 2005, 21:26 »
Die IP ist statisch, und ich hab ja keine Seite, für die ich eine Domain bräuchte ;D

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 06. December 2005, 22:01 »
Jeztz mal ne Frage: Warum muss sicher der Kompiler selbst kompilieren können ??? Was bringt das ???

C#ris

  • Beiträge: 47
    • Profil anzeigen
    • http://www.xerxys.org
Gespeichert
« Antwort #4 am: 07. December 2005, 10:41 »
Zitat von: nooooooooos
Jeztz mal ne Frage: Warum muss sicher der Kompiler selbst kompilieren können ??? Was bringt das ???


Zitat von: SSJ7Gohan

Er sollte selbst auch in Java geschrieben sein, und sich selbst kompilieren können, damit man ihn in nativen Code, wie den OS Kernel einbauen kann.


Abgesehen davon könnte der Compiler dann auch nativen Code erzeugen, der perfekt an die Plattform angepasst ist.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #5 am: 07. December 2005, 12:14 »
Gut, wenn du den JIT Ahead of Time übersetzt geht das natürlich.
Den JIT Just in Time zu übersetzen geht natürlich nicht. Deswegen finde ich das mit dem selber kompilieren können problematisch. Er wird wenn höchstens durch seine AOT-Variante kompilierbar, und diese sollte dann evtl. auch mehr Optimierungen (später) können.
*post*

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 07. December 2005, 12:37 »
Ja, er kann sich natürlich nur durch seine AOT Variante selbst kompilieren.

@Legend
C++ hätte eventuell Vorteile im Speicherverbrauch, da man in Java ja leider statt unsigned short int verwenden muss. :(

Wenn sich einige melden würden, am Projekt mitzuarbeiten, könnte man ja mal über die Sprache nachdenken.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #7 am: 07. December 2005, 12:47 »
Ich glaub ich kann heute oder bald mal drübergucken. Du meintest ja das er "nicht ganz gut gecodet" sein. Ich nehme mal an das heisst das der Code etwas chaotisch aussieht und evtl. fällt mir da ja was ein um dies besser zu machen! ;)
*post*

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 07. December 2005, 12:50 »
Der Code den ich online gestellt habe ist eh etwas älter, der neue Code ist wie gesagt modularer aufgebaut.

Was siehst du denn für Vorteile in C++?

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #9 am: 07. December 2005, 13:21 »
Hmm, von der Geschwindigkeit her kommt es natürlich auch auf die Compiler an! ;)

Vom gesamten Systemaufbau her empfinde ich immer einen gewissen Bruch zwischen nativem und Java-Code. Es klingt etwas für mich wie ein Henne-Ei Problem den JIT in Java zu schreiben, auch wenn es durchaus hierbei doch eine Lösung gibt.

Der JIT muss ja etwas privilegierter sein als der restliche Java Code, andererseits wird er für den Kernel dann eh nativer Code sein. Ich denke mal  ein Teil der Vorteile von Java wird man für den JIT nicht anwenden können.

Ob das allerdings Grund genug ist den neuzuschreiben, das weiss ich allerdings nicht.
*post*

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 07. December 2005, 13:56 »
Die neuere Version ist noch nicht so weit, die kann man problemlos umschreiben, wenns Sinn macht.^^

Ich habe mal ein Forum für die Compilerentwicklung bereitgestellt: http://80.190.252.208/~os/phpbb

 

Einloggen