Seite 1 von 2

Libs für OS-Programmierung mit PB schreiben

Verfasst: 03.06.2007 18:45
von Marvin
Hallo erstmal...
Hier im Forum wurde vor einiger Zeit öfters die Frage laut, ob man denn mit PB ein Betriebssystem programmieren könnte. Dazu wurde geantwortet, dass man dazu erstmal besondere Libs schreiben müsste. Nun zu meiner Frage: Ich beschäftige mich jetzt seit ca. einem dreiviertel Jahr mit der OS-Programmierung (unter FASM/NASM und C). C ist mir oft nicht "flexibel" genug, da ich nicht einfach so ASM-Befehle benutzen kann (bzw. das nur unter einigen Compilern geht, außerdem gibts da noch ein paar andere Sachen, die mich an C stören und von PASCAL hab ich keinen Compiler gefunden, der mir binäre Dateien erstellen kann). Wenn es denn nun wirklich möglich wäre, mit PureBasic und besonderen Libs binäre Dateien ohne Header, etc. - also vollkommen roh - zu erstellen, wie kann man dann solche Libs schreiben? Ich wäre dankbar für hilfreiche Antworten. :allright:

P.S.: Dazu müsste man dann doch aber nicht nur Libs schreiben, sondern man müsste dem Compiler doch auch sagen, dass er der Assemblerdatei für FASM keinen Win32- bzw. ELF-, etc. -Header hinzufügen müsste, oder? Außerdem müsste man ja auch dem Linker die "Verschiebung" der Variablen im Speicher mitteilen können...

Verfasst: 03.06.2007 19:43
von vonTurnundTaxis
Geht nicht.

Verfasst: 03.06.2007 19:59
von the one and only
geht schon, im prinzip müsstest du nur dafür sorgen dass dein "grundstock" aus asm/c windows executables ausführen kann :allright: aber ich denke das ist doch leicht utopisch..

Verfasst: 03.06.2007 20:39
von 125
Kannste knicken....
PB erstellt PE und ELF Executables, da is nix mit OS-Bau..

Verfasst: 03.06.2007 20:49
von ts-soft
Man kann doch mit seinem Code übersetzen und direkt mit WriteData
schreiben. Besser wäre es aber wohl wenn man seinen eigenen Compiler
baut um dann sein OS zu bauen.

Marvin hau rein, Du bist jung :twisted: :lol:

Verfasst: 03.06.2007 21:32
von hardfalcon
Du kannst dir ja mal den ASM-Output anschauen, den der Compiler ausspuckt, wenn du nen Quellcode mit dem Compilerparameter "/COMMENTED" kompilierst. Da wirst du (fast) nur Referenzen zu Windows-DLLs (bei der Windows-Version) finden.

Ich hab mich auch mal mit OS-Design versucht, das einzige ergebnis war eine bootfähige Diskette, bei der über ein Dutzend verschiedene Meldungen angezeigt wurden, dass haufenweise noch überhaupt nicht implementierte Features erfolgreich geladen wurden (das ganze war ein bisschen den Bootmeldungen von Knoppix nachemfunden, v.a. von den Farben her :mrgreen: ). Als ich dann kläglich daran gescheitert bin, den PC-Speaker zu seiner Bestimmung, Rumzupiepsen, zu bewegen, hab ich das Thema endgültig begraben... :lol:

Verfasst: 04.06.2007 00:26
von MVXA
Das klappt sehr wohl ;). Grub tut Kernel laden, die im ELF Format sind.
Ich habs schon mal geschafft mit FreeBasic ein kleines Hallo Welt auf
den Schirm zu zaubern. Man benötigt dafür keine speziellen Libs.
Ganz im Gegenteil, man muss darauf achten, dass man nicht einen
einzigen Befehl von PureBasic oder der System API nutzt.

Allerdings ist es auch nicht das Wahre den Kernel in FreeBasic zu
schreiben. Ich würde empfehlen den Kernel mit seinen absoluten
Grundfunktionen in C zu schreiben und auch die FreeBasic Runtime
in den Kernel zu compilieren. Danach kann man die .o Dateien, die
von FreeBasic generiert wurden, mit ld mit in den Kernel linken.
Funktioniert wunderbar, hab ich auch schon getestet ;).

Nichts ist unmöglich. Lass dir nie etwas anderes einreden.

Verfasst: 04.06.2007 00:29
von Deeem2031
Das Problem ist nur, dass, wenn man so eine Frage stellt, man eh zu wenig Ahnung hat um sowas zu verwirklichen ;)

Verfasst: 04.06.2007 17:16
von MVXA
ach was, das ist dermaßen simpel. Wenn Fragen bestehen, kann man mich
ja über Jabber erreichen ;). mvxa@jabber.org

Verfasst: 04.06.2007 20:50
von Marvin
@Deem2031: Ich beschäftige mich jetzt seit über einem dreiviertel Jahr mit OS-Programmierung. Und schon viel länger mit ASM. Wer mein derzeitiges OS ausprobieren möchte - gerne. Ich brauche sowieso Tester.
Downloade 42os
[ist ein Image, muss auf Diskette geschrieben werden. z.B. unter Windows mit Rawwritewin)
[wird in Zirkon umbenannt]
Bild
"Features":
- Lesen der PCI-Status-Register (wäre nett, wenn Ihr mir die Vendor- und Device-IDs zukommen lassen könntet)
- Finden eines OHCI/UHCI (und initialisieren des UHCI)
- IDE/ATAPI-Modellnamen lesen
- und mehr

Probleme:
- CMOS-Clock zeigt manchmal falschen Tag an
- FD-Funktionen funktionieren nicht richtig
- manchmal Fehlerkennung von ATAPI-Geräten

Vorraussetzung:
- (leider) Intel i386+-Prozessor
- mind. ca. 8 MB RAM
- Diskettenlaufwerk

Getestet unter:
- Meinem Computer (Celeron, 640 MB RAM, FDC ist von NEC)
- Einem anderen Computer (Pentium II, 64 MB RAM)
- VMware
- Inno Tec VirtualBox
- QEMU
- Virtual PC 2007

Wichtig: Bitte nur langsam auf die Tastatur einhämmern: hat bei meinem Computer zu einem Aufhänger geführt... :wink:
Das OS ist auf deutsch.
Wer den Source haben will, kann sich an mich wenden.

Back to topic: Außerdem war das nur eine Frage. Ich habe mich natürlich auch gewundert, da ich die Probleme kenne. Ich habe lediglich das wiedergegeben, was hier im Forum geschrieben wurde.
@MVXA: Ich glaube doch, dass das sehr schwierig werden würde, da PB ja immer auf gtk oder die WinAPI, etc. zurückgreift. Evtl. wäre es mit eigenen Prozeduren möglich, aber PB ist nun einmal zur Programmierung von Anwendungen gedacht. Ich weiß nicht, wie man die Pointer implementieren könnte (was ja sehr wichtig ist)... :|