Wie kann ich meinen eigenem Bootloader erstellen
-
Und welche Sprache!
-
Für einen Bootloader benötigst du Assembler. Lern das erst einmal.
Ansonsten:
http://wiki.osdev.org/Babystep1
-
Gut, werde Assembler lernen!
-
sebastianfox schrieb:
Gut, werde Assembler lernen!
...
Oh man ...
-
Du willst immer noch dein eigenes OS programmieren, stimmts?
Wie wärs, wenn du dir endlich mal diesen Link anschaust:http://www.henkessoft.de/OS_Dev/OS_Dev1.htm
Dort steht auch, wie man von einer Diskette booten kann.
-
Janjan schrieb:
Für einen Bootloader benötigst du Assembler. Lern das erst einmal.
Ansonsten:
http://wiki.osdev.org/Babystep1und deine Glaskugel sagte dir, der Sebastian will einen bootloader für x64 schreiben. So eine Glaskugel will ich auch.
@seb: 1. welche Architektur? Assembler ist keine Sprache wie C oder C++, die man "einfach so" lernen kann. Assembler != Assembler und bevor man irgendwelchen Code tippt, muss man sich mit der Architektur (zumindest oberflächlich) auseinandersetzen, sonst kommt kein Stückchen vorwärts.
-
supertux schrieb:
und deine Glaskugel sagte dir, der Sebastian will einen bootloader für x64 schreiben. So eine Glaskugel will ich auch.
Das ergibt sich, wenn man seine bisherigen Fragen gelesen hat. Bloß, dass sein vermeintliches Betriebssystem kein Betriebssystem ist, sondern eine DOS-Oberfläche. Insofern ist es ziemlich egal, welche Tipps man gibt, es wird ohnehin nicht funktionieren.
-
Ja, da steht schon was über den Boot,... Heute kauf ich mir ein Assembler Buch. Ich weiß, dass Assembler eine noch sehr sehr schwierige Sprache ist als C oder C++. Aber trotzdem: ALLES FÜR DAS OS!
-
supertux schrieb:
Janjan schrieb:
Für einen Bootloader benötigst du Assembler. Lern das erst einmal.
Ansonsten:
http://wiki.osdev.org/Babystep1und deine Glaskugel sagte dir, der Sebastian will einen bootloader für x64 schreiben. So eine Glaskugel will ich auch.
Wie bitte? Wie kommst du auf x64?
-
ich meinte x86 und da habe ich mir total vertippt
-
Yeah.......Mein Vater saght, er kauft mir erst Assembler Set(also Assembler Grundlagen, OS bau...), wenn ich ihn mit einem Programm in C++ überzeuge. Aber welches soll ich machen?
-
Oder anders gesagt:
Kann man eine .asm Datei als .Exe OHNE Kompilieren? Und damit sie geht? Denn ich finde weit und breit keinen Compiler.
-
Vielleicht solltest du dir erst einmal Grundkenntnisse im Prorammieren aneignen, ohne Gedanken an ein OS. Dir fehlt ganz klar das absolute Basiswissen.
-
Ich stimme Janjan und deinem Vater vollkommen zu. Aber um deine Frage zu beantworten: Dein C++ Compiler hat wahrscheinlich auch einen Compiler für Assembler eingebaut (Ich meine damit nicht Inline-Assembler). Wie genau man den benutzt, hängt natürlich vom Compiler ab.
Aber mal ehrlich: Das was du vor hast, schaffst du mit deinen Kenntnissen nie. Hast du kein anderes Projekt, dass dich interessieren würde? Vielleicht Grafikprogrammierung? Da hat man was zu sehen und kann das auch seinen Freunden zeigen. Und das was du dabei lernst bringt dich auch allgemein beim Programmieren weiter. Während du beim Betriebssystemprojekt bloß Frust schieben wirst um dann in 5-8 Jahren (Ja, so lange wird das bei dieser Vorgehensweise dauern!) erste Ergebnisse zu erzielen und dabei nur gelernt hast, wie man Betriebssysteme programmiert.
Der Vorteil, wenn du dich erstmal mit Programmierung allgemein beschäftigt hast ist, dass du dann in ein paar Jahren (vielleicht reichen schon 1-2, wenn du gut bist) dich einfach mal ein paar Wochen mit Betriebssystemprogrammierung beschäftigen kannst und dann ganz schnell Ergebnisse erzielen wirst. Umgekehrt wird das nicht gut funktionieren.
-
Assemblerprogrammierung sollte man schon in den jungen Jahren lernen, da es sehr umfangreich ist und man brauch viel mehr Hintergrundwissen, als man erwartet. Ich hatte mich, rein aus Neugier, auch mal 2-3 Wochen damit beschäftigt. Das war aber mehr um reinzuschnuppern und zu schauen, wie das alles so funktioniert. Bringen tut dir das alles nicht mehr. Selbst wenn du es könntest, bräuchtest du alleine ewig, bis du mal ein ordentlich funktionierendes OS auf die Beine stellst. Heut zu Tage würde ich damit nicht mehr anfangen. Microsoft baut z.B. gerade auch an einem OS komplett in C# (in Zusammenarbeit mit Sing# oder auch Singularity) mit managed Code und die verwenden da kein Asm.
-
FreakY<3Cpp schrieb:
Microsoft baut z.B. gerade auch an einem OS komplett in C# (in Zusammenarbeit mit Sing# oder auch Singularity) mit managed Code und die verwenden da kein Asm.
Doch, tun sie.
-
Sicher?
Singularity ist ein Projekt von Microsoft Research mit dem Ziel, ein zuverlässiges Betriebssystem zu schaffen, in dem der Kernel, Gerätetreiber und alle Applikationen in Managed Code geschrieben sind.
...
Das Betriebssystem ist als Microkernel-System konzipiert. Kernel und Gerätetreiber sind in Managed Code geschrieben, wobei Sing#, eine Variante des C#-Derivats Spec#, zum Einsatz kommt.Hab jetzt den Quellcode gerade nicht zur Hand, sonst würde ich selber gucken.
-
Kann natürlich sein, dass sie die direkten Hardwarezugriffe wegabstrahieren (was übrigens jeder tut) und in ein extra Projekt auslagern. Ändert alles nichts daran, dass man für bestimmte Konfigurationsarbeiten an der CPU Assemblercode schreiben muss.
-
Einen kleinen Assembler Teil wird man in der Regel immer brauchen. Es ist in Hochsprachen z.B. nicht so einfach möglich eine Binary für den Bootsektor zu erstellen, die 512 Byte groß ist, am Ende die nötige Signatur enthält und dazu 16 Bit Code enthält. Auch bieten Hochsprachen in der Regel keine Funktionen an um auf bestimmte Register zuzugreifen, Interrupts aktivieren/deaktivieren oder andere Maschinenbefehle gezielt auszuführen. Hochsprachen haben ja den Sinn von der Architektur unabhängig zu sein, also wird auf dessen Besonderheiten nicht eingegangen. Da muss man zumindest ein paar Assembler Funktionen schreiben, die man dann aus dem Hochsprachen Code aufrufen kann.
-
Okay ihr habt Recht, ein kleiner Teil im Kernel ist native (asm + c++). Trotzdem bin ich noch der Meinung, dass man mittlerweile kein Asm mehr lernen sollte.