Pascal OS

simon1997

Grünschnabel
Hallo, wie mache ich ein Betriebssystem aus Assembler und Pascal?

Das vieleicht so aussieht:

Quelltext:
PROGRAM Betriebssystem;
USES Crt;
BEGIN
Write ('Hallo, das ist ein Betriebssystem. Bitte drücken sie eine Taste zum Herunterfahren');
ReadKey;
END.
Gebootetes OS:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
a a
aHallo, das ist ein Betriebssystem. Drücken sie eine Taste zum Beenden a
a a
a a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Ich habe das Schon gefunden, aber ich möchte ja nicht nur einen Kernel haben, und ich verstehe nicht, wie ich das machen soll.

Danke schonmal


Simon1997
 
Zuletzt bearbeitet:
Willkommen bei tutorials.de :)

Es tut mir ja Leid, dich enttäuschen zu müssen, aber das wird nichts.

Ich kenn mit mich Pascal zwar nicht aus, aber
Ich habe das Schon gefunden, aber ich möchte ja nicht nur einen Kernel haben, und ich verstehe nicht, wie ich das machen soll.
zeigt irgendwie, dass dir der Umfang deines Vorhabens nicht ganz klar ist.

Zur Aufklärung: Der sog. Kernel ist die Basis/der Kern eines Betriebssystems; ohne dem wird nichts anderes laufen.
Wenn du nicht nur einen Kernel willst: Gut, aber als erstes den Kernel, dann alles andere.

Jedenfalls: Anleitungen, wie du mit C&Asm einen Kernel baust, lassen sich auf andere Sprache, deren Compiler "echten" Maschinencode generieren, übertragen.
Kompilieren und dann mit übersetzten Asm-Teilen zusammenlinken.

Gute C-Kenntnisse sind fürs Anleitung-Lesen natürlich nicht verkehrt;
ich kenn nämlich keine Anleitung mit Pascal. Immer nur C,C,C.

Gruß
 
Zuletzt bearbeitet:
Ich habe das bei lowlevel gesehen.
Es würde reichen,wenn mir das wer erkleren würde, dann wäre ich glücklich. wie soll ich das mit assembler machen und wie soll ich dann diese dateien 'verknüpfen' und sie dann in ein Image machen ?
 
Zuletzt bearbeitet:
Hi

Zum lowlevel-Artikel:
Wie gesagt: 1) Du kompilierst die Pascal-Dateien, ohne zu linken.
2) Du übersetzt die Asm-Dateien
3) Die Ergebnisse von allen werden dann zusammengelinkt

Die Konsolenbefehle auf der Seite sind für Linux. Ist natürlich unter Windows auch möglich, aber andere Anweisungen.

Und zum Exe-öffnen:
Meinst du jetzt wirklich Windowsprogramme oder nur das PE-Format?

Windowsprogramme: Vergiss es. Die gesamte Funktionensammlung von Windows nachzuprogrammieren wirst du allein schon zeitlich nie im Leben schaffen.

PE: Bei Google findet man schnell den Aufbau einer Exe-Datei.
Die muss geladen und ausgeführt werden.
Das Problem ist, wer diese Exe´s erzeugt.
Einen Grundbausatz an Librarys wirst du für einen Compiler bereitstellen müssen, falls du nicht vorhast, selber einen zu schreiben.

Gruß
 
Aja ok, das heißt die Pascal dateien kompiliere ich normal und die Asm-Dateine übersetze ich (Das ist doch soetwas wie compilieren oder? also auf lowlevel steht ja assemblieren, naja ich lade mir erstamal NASM oder MASM runter). Und wie mache ich 3) also Ergebnisse verlinken?

Danke für deine Hilfe. Aber wie geht es dann weiter, also ich meine wenn ich den kernel habe und ?
 
Aja ok, das heißt die Pascal dateien kompiliere ich normal und die Asm-Dateine übersetze ich (Das ist doch soetwas wie compilieren oder? also auf lowlevel steht ja assemblieren
Genau, mit übersetzen meinte ich asssemblieren.
Und ist im Prinzip das Gleiche wie kompilieren, also zu binären Zeug übersetzen.

Der einuige Unterschied sind die Wörter.
Assemblieren sagt man beim Assembler und kompilieren bei Hochsprachen wie Pascal, C ...

Und wie mache ich 3) also Ergebnisse verlinken?
Dafür braucht man zum Compiler/Assemblerprogramm einen Linker.

Bei deinen bisherigen Pascalprogrammen hast du einen (ohne zu wissen) schon verwendet - jedes normale Windowsprogramm muss zuerst kompiliert und dann gelinkt werden.

Den kannst du im Normalfall auch weiterverwenden. Da er mit dem Compilerergebnis arbeitet (statt direkt mit dem Quelltext) ist der ziemlich Sprachunabhängig. Sollte auch genauso gut für C ... funktionieren.

Was du tun musst: Beim kompilieren der Pascaldateien darauf achten, dass der Compiler nicht selbst gleich den Linker danach aufruft. Manche Compiler tun das, kann man aber in der Befehlszeile angeben, dass es nicht gemacht wird.
Beim assemblieren der Asm-Dateien genauso: Die dürfen nicht gelinkt werden.
Die Linker, die du hast, sind nämlcih standardmäßig darauf ausgerichtet, am Schluss Windowsprogramme zu erzeugen, die auch Windows zum Starten brauchen.

Beim kompilieren/assemblieren wird für jede Pascal/Asm-Datei eine obj-Datei erzeugt.
Alle obj-Dateien müssen, um ein fertiges Programm zu erhalten, dann gelinkt werden.
Also ein Linkerdurchgang, bei dem du alle obj-Dateien angibst.
Wie gesagt wird der Linker ohne andere Anweisungen ein Windowsprogramm daraus machen.
Wie du das verhinderst, hängt vom verwendeten Linker ab.
Grundsätzlich keine Windows-Lib-Dateien mit angeben, falls vorhanden eine Option angeben das keine Standardlibs verwendet werden, und das Ausgabeformat auf Bin umstellen.
Alles über die Befehlszeile.

Danke für deine Hilfe. Aber wie geht es dann weiter, also ich meine wenn ich den kernel habe und ?

Dann erweiterst du den Kernel :D
Für dein Vorhaben wäre zB eine Funktion zur Bildschirmausgabe ganz nett.
Muss nur ganz einfach sein, zB einen bestimmten Buchstaben ausgeben.
Im Pascal-Teil kanst du diese Funktion dann verwenden.
Dort dann eine Funktion schreiben, die zB ganze Strings ausgibt (in dem sie die Asm-Funktion für jeden Buchstaben aufruft) usw...

Wenn du einen ganzen String auch ausgeben kannst, brauchst du ja nurnoch beim Start deine gewünschte Ausgabe machen.

Gruß
 
Hi.
Ich sehe du versuchst dich wie ich an einem OS... Ich bin zwar schon sehr sehr weit, aber ich helfe dir gerne. Die Basis eines OS must du in Assembler schreiben. Später kannst du dann auf Hochsprachen umsteigen. Assembler kannst du hier lernen. Um ein Os zu machen Brauchst du ein Paar tools wie den NASM oder VirtualBox. Falls du zum OS-DEV (Operating System Development) fragen hast kannst du mich gerne mit einer Privatnachricht fragen. Hier ist eine "Anleitung zum Eigenen OS
Ich würde das Pascal vorerst weglassen und nur ASM nehmen ist übersichtlicher. Damit du nicht wegen jeder Kleinigket einen neuen Frage-thread auf machst kannst du wenn du willst mich fragen. Ich schreibe schon seit 2 Jahren an Meinem OS...

Ich hoffe das ich dir weiter helfen konnte und das du dich über einen etwas schwereren Einstieg nich abschrecken lässt :)
LG
BassBox
 
Zuletzt bearbeitet von einem Moderator:
Cool, ich habe mir gerade überlegt, dass ich erstmal um zu gucken wie es aussieht geradeFASM runtergeladen um den Text von lowlevel zu assemblieren. Und dann benutze ich free Pascal für Pascal.
Wenn ich das dann gesehen habe wie das ist, dann mache ich ein Asm tutorial. und schreibe dann alles selber.
 
Zurück