Libs für OS-Programmierung mit PB schreiben

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Libs für OS-Programmierung mit PB schreiben

Beitrag 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...
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Geht nicht.
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
the one and only
Beiträge: 696
Registriert: 26.09.2004 20:17
Kontaktdaten:

Beitrag 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..
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Kannste knicken....
PB erstellt PE und ELF Executables, da is nix mit OS-Bau..
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag 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:
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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.
Bild
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Das Problem ist nur, dass, wenn man so eine Frage stellt, man eh zu wenig Ahnung hat um sowas zu verwirklichen ;)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

ach was, das ist dermaßen simpel. Wenn Fragen bestehen, kann man mich
ja über Jabber erreichen ;). mvxa@jabber.org
Bild
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag 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)... :|
Antworten