Programmiersprache
-
Gamepower schrieb:
XanClic schrieb:
http://compilers.iecc.com/crenshaw/tutor1.txt
"Let's build a compiler": Nie befolgt, könnte aber helfen.Die Quelltexte aus dem Tutorial muss mit TurboPascal kompilieren... Ich habe kein TP... Aber, evtl. kann ja jemand das ganze für C oder ASM übersetzen...
Du sollst ja auch nicht abkopieren, sondern selbst überlegen. Also mindestens abschreiben, das dabei in eine andere Programmiersprache umzuschreiben hilft wohl eher beim Verstehensprozess.
-
Macht ihr ernsthaft ein eigenes OS? Das finde ich toll.
Danke! Mache doch einfach mit. Es gibt momentan viele interessante Themen: Kernel, Treiber, User-Schnittstelle (User-Lib, API = syscalls, ...), Multitasking (Scheduler, Dispatcher), User-Programme, Portierungen (dazu ist es aber noch zu früh, da die API erst stehen muss), ...
Voraussetzung: vernünftiges Programmieren in C.
-
Erhard Henkes schrieb:
Voraussetzung: vernünftiges Programmieren in C.
Für User-Programme ginge auch C++ (natürlich ohne Standardbibliothek)...
-
Erhard Henkes schrieb:
Mache doch einfach mit. Es gibt momentan viele interessante Themen: Kernel, Treiber, User-Schnittstelle (User-Lib, API = syscalls, ...), Multitasking (Scheduler, Dispatcher), User-Programme, Portierungen
Ich habe gelesen dass ihr schon einiges habt. Was wäre denn konkret noch offen?
Erhard Henkes schrieb:
Voraussetzung: vernünftiges Programmieren in C.
Ich kann etwas C/C++.
-
Für User-Programme ginge auch C++
Auf der Nutzerseite sollte, wie bereits erwähnt, alles erlaubt sein. Dafür ist ein OS ja da. Die Begrenzung liegt dort nur in den Erstellungstools.
-
ich kann etwas C/C++.
Gut!
Du solltest vielleicht hier einsteigen:
http://www.henkessoft.de/Assembler/Assembler.htm
http://www.henkessoft.de/OS_Dev/OS_Dev1.htm
http://de.wikipedia.org/wiki/Betriebssystem
-
Erhard Henkes schrieb:
Für User-Programme ginge auch C++
Auf der Nutzerseite sollte, wie bereits erwähnt, alles erlaubt sein. Dafür ist ein OS ja da. Die Begrenzung liegt dort nur in den Erstellungstools.
ja, und in der Schwierigkeit, die Userlib zu portieren/verwenden
-
Erhard Henkes schrieb:
Du solltest vielleicht hier einsteigen:
http://www.henkessoft.de/OS_Dev/OS_Dev1.htmO Mann, alles auf einer Seite
Sieht so aus, als macht ihr eine Art FreeDOS mit Multitasking. Ihr macht auch viel über BIOS-Funktionen, oder?
Direktprogrammierung des VGA-Controllers habe ich auch mal für Grafikdemos gemacht, in Turbo-Pascal und Assembler. Das macht viel Spass!
Die Festplatten benutzt ihr nicht? Kann ich verstehen. Das ist wohl etwas zu riskant. Sowas sollte man sich nur in einem PC-Emulator wie VirtualPC trauen.
-
PrettyOS ist ein "normales" 32-Bit-ProtectedMode-OS, das hat nichts mit DOS/FreeDOS zu tun. Damit nutzt es natürlich auch so gut wie keine BIOS-Funktionen.
-
Ihr macht auch viel über BIOS-Funktionen, oder?
Nur im Bootloader, später schalten wir zügig in den Protected Mode mit all seinen Herausforderungen.
-
XanClic schrieb:
PrettyOS ist ein "normales" 32-Bit-ProtectedMode-OS, das hat nichts mit DOS/FreeDOS zu tun. Damit nutzt es natürlich auch so gut wie keine BIOS-Funktionen.
Ach so. Der Screenshot auf Seite 3 sah etwas danach aus. Ihr habt
schon viel Arbeit reingesteckt. Wie lange seid ihr schon dabei?
-
Ich habe Mitte März 2009 so begonnen: http://www.c-plusplus.net/forum/viewtopic-var-t-is-236354-and-start-is-0.html
Das ist das Ergebnis.
-
Erhard Henkes schrieb:
Ich habe Mitte März 2009 so begonnen: http://www.c-plusplus.net/forum/viewtopic-var-t-is-236354-and-start-is-0.html
Das ist das Ergebnis.Also knapp ein Jahr. Fulltime oder arbeitest bzw. studierst Du "nebenher"?
-
Ich arbeite, und betreibe das hier nur zum Spaß.
Alles fängt klein an:
http://www.henkessoft.de/OS_Dev/Bilder/VirtualBox.PNGAber ich muss sagen bei OSDEV kommt man aus dem "kleinklein" nicht mehr heraus. dafür bleibt es dauerhaft spannend.
-
Aber zurück zum Thema des Threads: eine eigene Programmiersprache erstellen, die auf PrettyOS optimal arbeitet.
-
Eine Idee wäre auch eine kleine DSL (Domain-specific language) zu entwerfen um damit einen Teil von PrettyOS zu schreiben. Bossa (http://bossa.lip6.fr/) ist z.B. eine DSL für Scheduling Verfahren. Da als Grundlage C verwendet wird und auch C Code erzeugt wird, ist der Einarbeitungs- und Implementationsaufwand gar nicht so groß (man sollte es trotzdem nicht unterschätzen).
Barrelfish setzt auch stark auf DSLs und auf http://www.barrelfish.org/ gibt es ein paar recht aktuelle Paper dazu.
-
Nöö. Wenn die Sprache was Neues Gutes zu bieten hat, kann man drüber nachdenken. Und zwar, das OS auf die Sprache mit der Sprache aufzubauen, das heißt, erstmal wieder jeden bisherigen Code außer dem bootsector umzuschubsen.
-
volkard schrieb:
Nöö. Wenn die Sprache was Neues Gutes zu bieten hat, kann man drüber nachdenken. Und zwar, das OS auf die Sprache mit der Sprache aufzubauen, das heißt, erstmal wieder jeden bisherigen Code außer dem bootsector umzuschubsen.
Über diesen Punkt denke ich gerade nach. Dazu müsste man dann sich die Sprache so umfangreich entwerfen, dass man den Compiler in der Sprache selbst schreiben kann, aber so einfach, dass man es mit nicht allzu großen Umständen schafft.
Vielleicht sollten wir erstmal uns Gedanken machen, was wir haben wollen:
-Bedingte Sprünge (IF-THEN-ELSE) sind unerlässlich.
-Welche Typen? (auf jeden Fall Integers und Strings)
-Welche Schleifen? (Ich würde erstmal sagen: WHILE unbedingt, weitere nach Bedarf nachrüsten)
-Prozeduren/Funktionen? (Funktionen mit rekursiver Ausführung und Rückgabe sollte man schon haben)
-Welche Standard-API (besonders Input/Output)
-GOTO?Zu Henne und Ei:
Man könnte am Anfang einen kleinen Compiler schreiben, der aus dem Code einfachen C-Code generiert. Mit diesem könnte man dann einen Compiler in der Sprache selbst übersetzen.Die grundsätzlichen Prinzipien von Compilern sind mir bekannt, allerdings müsste ich wohl einiges auffrischen. Ich würde das Projekt umsetzen, aber Mitstreiter könnte ich sicherlich gebrauchen.
-
earli schrieb:
aber so einfach, dass man es mit nicht allzu großen Umständen schafft.
Ähm. Und dann ist sie aber schlechter als C oder C++ und bringt keinen Vorteil.
Ich würde zunächst von der Nullterminierung weggehen, verlangen, daß Funktionen zur Compilezeit rechnen können, und nettes Exceptionhandling haben wollen.
-
Will ja kein Spielverderber sein, aber...
Was hat Sprachenentwicklung und Compilerbau mit OS-Development zu tun?
IMHO nichts ->Ist das Thema evtl. nicht besser in RUDP aufgehoben?Und mal kurz fuer euch zum selber Ueberdenken:
Was wollt ihr eigentlich konkret erreichen? "eine Programmiersprache" (/compiler) ist reichlich allgemein und mir draengt sich der Verdacht auf, dass die Mehrzahl der Beteiligten hier im Prinzip aneinander vorbei redet, bzw. komplett unterschiedliche Zielsetzungen und Motivationen hat.
Die Diskussion ueber grundlegende Ziele und Kriterien solltet ihr vielleicht vor konkreten Vorschlaegen an den Anfang stellen.Last but not least um die Ernsthaftigkeit und Erfolgschancen abzuschaetzen: Hat ueberhaupt schon mal jemand von euch sich tiefgehender mit Theoretischer Informatik, Sprachentheorie, Compilerbau, etc. befasst oder sind die Massstaebe eher nur Erfahrungen und Ideen, die bei der Benutzung anderer Sprachen entstanden sind?
Ihr solltet bedenken: Eine vernuenftige (Programmier)Sprache zu entwerfen und dazu einen Compiler zu bauen ist alles andere als trivial und kann von der Komplexitaet ganz locker dieses ganze OS-Projekt uebersteigen. ... (*auf Finger beiss* in dem Zusammenhang draengt sich mir irgendwie ein rant gegen vieler Leute Lieblingsprogrammiersprache hier geradezu auf)