| Zeile 28: | Zeile 28: | ||
::::::: Überflüssige Bindestriche sind in vielen Fällen sehr wohl Falsch. Diese "Mode" sehr sehr viele Bindestriche zu setzen ist wohl auch eine Sache die sich in der letzten Zeit aus dem Englischen festgesetzt hat. Wie dem auch sei, Leerzeichen vor und nach Bindestrichen machen daraus einen Gedankenstrich, ob der jetzt ein Anderes Unicode Zeichen hat oder nicht. Nur so als Tipp ;D --[[Benutzer:Dem epOS sein Linus|DesL]] 15:46, 24. Aug. 2012 (CEST) | ::::::: Überflüssige Bindestriche sind in vielen Fällen sehr wohl Falsch. Diese "Mode" sehr sehr viele Bindestriche zu setzen ist wohl auch eine Sache die sich in der letzten Zeit aus dem Englischen festgesetzt hat. Wie dem auch sei, Leerzeichen vor und nach Bindestrichen machen daraus einen Gedankenstrich, ob der jetzt ein Anderes Unicode Zeichen hat oder nicht. Nur so als Tipp ;D --[[Benutzer:Dem epOS sein Linus|DesL]] 15:46, 24. Aug. 2012 (CEST) | ||
:::::::: Ich finde, so was ist Ansichtssache. Aber es ist ja eigentlich auch egal - dann lasse ich die Leerzeichen eben weg... --[[Benutzer:Roadrunner|Roadrunner]] 17:02, 25. Aug. 2012 (CEST) | :::::::: Ich finde, so was ist Ansichtssache. Aber es ist ja eigentlich auch egal - dann lasse ich die Leerzeichen eben weg... --[[Benutzer:Roadrunner|Roadrunner]] 17:02, 25. Aug. 2012 (CEST) | ||
| + | |||
| + | == Beispielkernel == | ||
| + | Ich kann eigentlich kein Java, aber ich habe trotzdem mal versucht, einen Beispielkernel zu entwerfen. | ||
| + | |||
| + | Da in Java keine Zeiger unterstützt werden, muss man Speicherzugriffe über externe Funktionen realisieren. Dazu bietet sich C oder von mir aus auch C++ an: | ||
| + | <c> | ||
| + | //c_file.c | ||
| + | void write(unsigned long int addr, char value) | ||
| + | { | ||
| + | *((char *) addr) = value; | ||
| + | return; | ||
| + | } | ||
| + | </c> | ||
| + | |||
| + | Nun kommen wir zum Java-Teil. Soweit ich weiß, verwendet Java eine Klasse namens String, um Zeichenketten darzustellen. Diese kommt aus der Runtime-Bibliothek, also lassen wir sie lieber weg. Ansonsten weiß ich nicht, wie man Zeichenketten in Java sinnvoll implementieren kann, so ganz ohne Zeiger - schließlich kann man char-Arrays in Java nicht einfach mit char xy[] = "abc"; zuweisen. Da ich - wie gesagt - kein Java-Programmierer bin, lassen wir den Kernel nur ein "X" darstellen: | ||
| + | |||
| + | <cpp> | ||
| + | //kernel.java | ||
| + | public class kernel | ||
| + | { | ||
| + | public static void main() | ||
| + | { | ||
| + | c_file.write(0xb8000, 0x58); //'X' an Pos. 1 | ||
| + | c_file.write(0xb8001, 0x07); //Farbe hellgrau auf schwarz | ||
| + | } | ||
| + | } | ||
| + | </cpp> | ||
| + | |||
| + | Das ganze könnte man dann (hoffentlich) mit folgenden Befehlen kompilieren: | ||
| + | <code> | ||
| + | gcj -c kernel.java -o kernel.o | ||
| + | g++ -c c_file.c -o c_file.o | ||
| + | ld -o kernel kernel.o c_file.o --entry main --Ttext=... | ||
| + | </code> | ||
| + | |||
| + | Vielleicht kann ja jemand, der in Java bessere Kenntnisse hat, das ganze mal testen und ggf. überarbeiten. Ich kann nur hoffen, dass das wirklich funktioniert... --[[Benutzer:Roadrunner|Roadrunner]] 15:06, 10. Sep. 2012 (CEST) | ||