Autor Thema: Mit gcj(Java) DIREKT in den Speicher schreiben  (Gelesen 4525 mal)

sfan

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« am: 14. April 2011, 18:08 »
Hallo,
ich dachte mir ich schreibe einen Java HelloWorld-Kernel.
Ich habe mir mit apt gcj installiert um die .java Dateien zu komplieren.
Nun zur Frage:
Ist es mit gcj möglich wie bei C ("(char*) 0xABCDE") in den Speicher zu schreiben?
Falls es nicht möglich ist:
Wie schreibe ich einen Textmodustreiber in Java(gcj)?
Zu gcj: Vielleicht gibt es da ja eine Möglichkeit.

Sfan
« Letzte Änderung: 15. April 2011, 14:49 von sfan »

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 14. April 2011, 19:12 »
Wenn du nicht in der Lage bist, das selbst zu beantworten, ist Java nicht die richtige OS-Dev-Sprache für dich.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

sfan

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 14. April 2011, 19:35 »
Das Problem ist nur das es keine Pointer gibt.
Wie soll ich es sonst machen?


Sfan

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 14. April 2011, 20:46 »
Es kann sein, dass ich mich taeusche, aber ich glaube, dass du eine native Bibliothek bauen musst.
Du musst glaub ich diese ganzen IO-, Memory-, etc.-Komponenten in C oder so bauen und dann dem linker uebergeben.
Soweit ich das verstanden habe, bleibt es eine art VM (also kein direkter Zugriff auf die Hardware).
Muesste vermutlich so sein wie bei Singularity, da ist der Kernel ja selbst ein abgeschlossenes System.
Musst du dir mal anschauen.
Es gibt aber auch ein paar Java-Kernel. Befrag einfach mal google, die wissen sowas.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

sfan

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 15. April 2011, 06:51 »
Es kann sein, dass ich mich taeusche, aber ich glaube, dass du eine native Bibliothek bauen musst.
Du musst glaub ich diese ganzen IO-, Memory-, etc.-Komponenten in C oder so bauen und dann dem linker uebergeben.
Das werde ich machen!
gcj kann man sogar direkt asm und c dateien übergeben.
Gibt es in Java so etwas wie "extern" in C und Asm?


Sfan

DesL

  • Beiträge: 23
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 15. April 2011, 14:31 »
a) NACHMACHER :D
b) es gibt "native" das bei Memberfunktionen dafür sorgt, das die nicht in der .java Datei implementiert sondern nur deklariert werden müssen, dann kann man gegen entsprechenden anderen Code linken.
c) es ist ein enormer Aufwand unter Java, schon alleine weil eine Java-Array nicht mit C/C++ kompatibel ist, und weil sich auch die primitiven Datentypen tlw anders verhalten.
« Letzte Änderung: 15. April 2011, 14:38 von DesL »

sfan

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 15. April 2011, 14:35 »
a) NACHMACHER :D
Willst du einen Java HelloWorld-Kernel wie ich schreiben oder einen ganzen Kernel?
c) es ist ein enormer Aufwand unter Java, schon alleine weil eine Java-Array nicht mit C/C++ kompatibel ist, und weil sich auch die primitiven Datentypen tlw anders verhalten.
Da hast du wohl leider recht :(


Sfan
« Letzte Änderung: 15. April 2011, 14:37 von sfan »

DerHartmut

  • Beiträge: 236
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #7 am: 15. April 2011, 14:36 »
Ok, DU, der den Kernel schreiben will, fragst UNS, wie man den schreibt ... wtf? Wir wollen den doch nicht schreiben! Wenn du den schreiben willst musst du dich selbst mit den Fragen auseinander setzen, oder? Und wenn du dir einfachste Fragen nicht beantworten kannst oder willst oder nur eine Sekunde Denkschmalz einsetzen willst dann ist das, wie taljeth schon sagte, nicht die richtige Sprache für dich.
$_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;
Nutze die Macht, nutze Perl ;-)

sfan

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 15. April 2011, 14:38 »
... dann ist das, wie taljeth schon sagte, nicht die richtige Sprache für dich.
Da habt ihr leider recht.
... oder willst oder nur eine Sekunde Denkschmalz einsetzen willst ...
Ich bin kein Java-Experte und "darf" sowas fragen.

« Letzte Änderung: 30. April 2013, 23:02 von sfan »

DesL

  • Beiträge: 23
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 15. April 2011, 14:40 »
Wie der aufmerksame Leser in #lost eventuell mitbekommen hat, arbeite ich seit geraumer Zeit an einem Java-Testkernel, und glaub mir: das ist eine Heidenarbeit. Machs lieber in irgendeiner esoterischen Programmiersprache, da sieht das ganze meist auch noch lustig aus  ;D

DerHartmut

  • Beiträge: 236
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #10 am: 15. April 2011, 14:43 »
Ein Betriebssystem sollte man dann programmieren, wenn man die Sprache beherrscht. Das hier ist kein Java-Forum.

So viel von meiner Seite, ich geh in den Keller mich weiter aufregen.
$_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;
Nutze die Macht, nutze Perl ;-)

 

Einloggen