Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Vogtinator

Seiten: 1 [2]
21
Lowlevel-Coding / Re: Kernel mit GCJ
« am: 11. September 2012, 17:42 »
Ich sags mal so:
Viel OS-Dev habe ich noch nicht gemacht (Ich mach nur abundzu mal weiter, wenn ich gerade Lust dazu habe, habe letztes mal am Diskettentreiber (glaube ich) weitergemacht).
Und ich nehme mal an, GCJ arbeitet so:
Es kompiliert den Java-Source-Code soweit wie möglich und benötigt dann nur noch die libgcj.so für die (jetzt nicht mehr) "Java-VM".
Diese Executable benötigt ja keine weitere Unterstützung vom Betriebssystem für GC etc. darum muss sie sich ja schon selbst kümmern.
Mit OS habe ich nicht den Java-Kernel gemeint, sondern z.B. Linux, wenn eine (statisch gelinkte) GCJ-Anwengung ausgeführt wird.
Linux muss die Anwendung nur in den Speicher laden und bekommt von dem Java-spezifischem Zeug nichts mehr mit.
-> Wir müssen "nur" die libgcj zerlegen, um an die Java-Bestandteile zu kommen und diese in unseren Kernel-Kern integrieren. Danach sollten wir ohne riesige Probleme die Dateien als (fast) C++ behandeln können.
Oder sehe ich das jetzt komplett falsch?
22
Lowlevel-Coding / Re: Kernel mit GCJ
« am: 11. September 2012, 17:04 »
Im Grunde genommen muss man sich ja gar nicht mit so einem "Dreck" wie GC beschäftigen, das hat GCJ schon alles nativ implementiert.
Das OS bekommt davon ja nichts mit.
Es kann eigentlich nicht so schwer sein, von libgcj die OS-Abhängigen Dinge zu ändern und neu zu kompilieren, wenn man die Stellen gefunden hat.
So etwas wie http://cs.nyu.edu/rgrimm/teaching/fa11-oop/1108/java_lang.h sieht da schon ganz gut aus.
Am Ende hat man eine Art libgcj.so für das eigene OS, nur dann halt statisch gelinkt...

Wenn CVS auch gehen würde (Ich hasse git, das will nie so wie ich :x) schickt mir ne PM oder eine Mail (mit Benutzer/Passwort) und ich schick euch Daten.

Edit: Da habe ich wohl zu langsam getippt und den Beitrag über mir nicht gelesen..  :roll:
23
Lowlevel-Coding / Re: Kernel mit GCJ
« am: 11. September 2012, 16:04 »
Ja, http://www.lowlevel.eu/wiki/Teil_4_-_Hello_World.
Was bringts, das neu zu schreiben.
24
Lowlevel-Coding / Kernel mit GCJ
« am: 11. September 2012, 14:26 »
Damit der Artikel http://www.lowlevel.eu/wiki/Java endlich mal einen Beispielkernel erhält, wurde unter http://www.lowlevel.eu/wiki/Diskussion:Java schon eifrig über die Theorie diskutiert. Das ganze kommt jetzt aber ins Forum, weil es einfach keine Diskussion mehr ist  :-D
Hier ist ersteinmal das, was ich getan habe:
-Tutorial-Kernel kopiert
-Makefile für *.java ergänzt
-Init.java erstellt, die in Funktion Init.main() die native Funktion write_char('a') aufruft
-Funktionen von java.lang.Object überschrieben so gut es ging
-Versucht zu linken:
Init.java:1: undefined reference to `java::lang::Object::Object()'
Init.o: In function `void Init::main()':
Init.java:5: undefined reference to `_Jv_InitClass'
Init.java:5: undefined reference to `hidden alias for void Init::write_char(wchar_t)'
Init.o: In function `_Jv_global_static_constructor':
Init.java:13: undefined reference to `_Jv_RegisterResource'
Init.o:(.data+0x24): undefined reference to `void java::lang::Object::throwNoSuchMethodError()'
Init.o:(.data+0x74): undefined reference to `hidden alias for void Init::write_char(wchar_t)'
Init.o:(.data+0x100): undefined reference to `vtable for java::lang::Class'
Init.o:(.data+0x110): undefined reference to `java::lang::Object::class$'

Was also noch getan werden muss:
-write_char nativ implementieren (Mit CNI, das verlangt nix externes, soweit ich weiß)
-C++-Support einbauen, dazu braucht man einen rudimentären Kernel
-herausfinden, was (und wie) man die anderen Funktionen implementieren kann, dazu sollte man sich vllt. mal den GCJ-Quelltext anschauen oder dekompilieren (wer will das schon...).

Projekt-Ordner ist hier: http://ritter-vogt.dyndns.biz/rv/files/gcj-kernel.zip

Viel Spaß beim rumprobieren!
Fabian

Edit: Wenn C++ drin ist, sollte Java kein Problem mehr werden, da GCJ Java C++-Kompatibel kompiliert, soweit ich das verstanden habe.
Seiten: 1 [2]

Einloggen