Autor Thema: Alternativen zu Assembler und C/C++?  (Gelesen 20408 mal)

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #20 am: 06. February 2007, 18:21 »
So, Frage ist nun, soll man ein OS coden, oder soll man besser zuerst eine einfache Sprache entwickeln, mit der man dann ein OS coden kann und folglich auch alle Applikationen für das OS?
Du möchtest also eine Programmiersprache entwickeln, in der man ein OS programmieren kann? Das funktioniert nicht. Wenn dein OS auf verschiedenen Prozessoren/Architekturen laufen soll, benötigst du definitiv ein paar (wenige) absolut hardwareabhängige Teile. Der Rest, der darauf aufsetzt, kann durchaus allgemein sein.

Einfacher wäre es, ein OS zu schreiben (in irgendeiner Sprache), und dann eine Programmiersprache (bzw. die nötigen Tools) dorthin zu portieren. Beispielsweise einen Basic-Interpreter (evtl. sogar Freebasic). Dann kommst du eher dahin, wo du hin willst. Das ist aber ein sehr weiter Weg.

Zitat
Was die Grafik zum Beispiel betrifft, da müsste man nur ein Befehl für das Zeichnen eines Punktes zur Verfügung stellen und schon konnte man mit der neuen Sprache alle mögliche Funktionen für das Zeichnen von Kreis, Rechteck usw. erstellen, folglich wäre ein Grafisches OS in wenigen Tagen fertig, oder?
Ja. Aber die Geschwindigkeit ist nicht berauschend. Außerdem hat eigentlich jede Grafikkarte mindestens beschleunigte Funktionen für Linien und Flächen. Wenn ich den Bildschirmhintergrund einfarbig gestalten will und dabei jeden Punkt einzeln setze, kann ich selbst bei 2 GHz noch dabei zuschauen.
Also: Ja, aber du willst es nicht tun. :)

Zitat
Warum hat also keiner bisher eine einfache Sprache entwickelt, die nur die Prozessor Befehle verwendet? Alle gängige Sprachen lehnen sich an die Windows oder Linux API Befehle an, was für ein neues OS dann unbrauchbar ist!
Jede Programmiersprache erzeugt im Endeffekt nur die Prozessorbefehle. Wenn du die Windows oder Linux API auf dein OS portierst (oder nur Teile davon), kannst du durchaus alles mögliche darauf aufsetzen.

Zitat
Dass man noch immer C/C++ zur Verfügung hat nützt, wie wir es sehen, wenig, weil der grösste Teil von diesen Millionen-Programmierer machen doch die NICHT C/C++ Programmierer aus!
Wie ich. Allerdings programmieren genau diese Programmierer in den seltensten Fällen Betriebssysteme - sie programmieren anhand der verfügbaren API Anwendungen.

Wenn du Freebasic auf dein Betriebssystem portierst, und dazu natürlich auch die notwendigen Bibliotheken und Funktionen, kannst du Freebasic-Programme auf deinem OS ausführen. Du wirst damit aber nicht unbedingt ein ganzes Betriebssystem auf die Beine stellen können, weil viele Funktionen stark systemabhängig sind.
Unter Linux ist der Bildschirm ursprünglich als intelligentes serielles Terminal abgebildet, Windows bildet alles als "Fenster" nach, d.h. du musst die serielle Terminals erst einmal nachbilden, um dein Programm portieren zu können. Solch eine Bibliothek brauchst du unter jedem Betriebssystem und genau darauf beziehen sich Hochsprachen. Und eben dieser Begriff fällt unter "API".

Gruß,
Svenska

eldrige

  • Beiträge: 9
    • Profil anzeigen
Gespeichert
« Antwort #21 am: 07. February 2007, 16:51 »
Hmmmmmmmm  :x

Na gut, dann wird nix daraus.

PS: Unglaublich wie schwer das ist obwohl es im Prinzip eigentlich sehr einfach sein sollte (man denkt nur an Z80 Programmierung o.ä.)!

Oder man erfindet ein neues Computerkonzept wo man dann all diese Treiber nicht mehr braucht! Dann wäre wohl auch die OS Programmierung wahrscheinlich viel einfacher!

PPS: Was ist aus all diesen Homecomputer OS geworden (Spectrum, Atari, Comodore usw.). Die waren schon damals viel besser als Windows 95, ganz zu schweigen von Spielen! Was mir nicht klar ist, damals verschwanden all diese Home Computer wegen Personal Computer. Jetzt kommen die Spielconsolen, die im Grunde nichts anderes sind als die Home Computers :) Komisch wie sich die Wirtschaft entwickelt!

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 07. February 2007, 20:15 »
Oder man erfindet ein neues Computerkonzept wo man dann all diese Treiber nicht mehr braucht! Dann wäre wohl auch die OS Programmierung wahrscheinlich viel einfacher!
Wer Hardware benutzen will, braucht Treiber. Das ist keine Bösartigkeit der aktuellen Rechnerarchitekturen, sondern eine Konstante. Wenn du dich darauf beschränkst, ein paar Buchstaben auf den Bildschirm auszugeben, wird das auch noch nicht sonderlich komplex.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #23 am: 07. February 2007, 23:54 »
Zitat
PS: Unglaublich wie schwer das ist obwohl es im Prinzip eigentlich sehr einfach sein sollte (man denkt nur an Z80 Programmierung o.ä.)!
Da war auch die Hardware recht einfach gestrickt. Man brauchte sich nicht mit Caches oder Pipelines rumärgern, es gab keine verschiedenen Modi. Und das BIOS wurde (CP/M) vom Betriebssystem gesponsert.
Wobei die meisten Systeme zusätzlich ein eigenes Betriebssystem hatten, welches die Hardware ausnutzen konnte.

Zitat
Oder man erfindet ein neues Computerkonzept wo man dann all diese Treiber nicht mehr braucht! Dann wäre wohl auch die OS Programmierung wahrscheinlich viel einfacher!
Gab es ja ... das BIOS von CP/M stellte die Grundlagen von Treibern zur Verfügung, weitere gab es nicht. Und die ursprünglichen Systeme (z.B. CAOS auf dem KC85) brauchten keine Treiber, weil sie nur auf dieser entsprechenden Architektur liefen und somit die Hardware sich nicht änderte.

Allerdings gibt es dieses Konzept inzwischen nicht mehr - und darum muss es Treiber geben.

Zitat
PPS: Was ist aus all diesen Homecomputer OS geworden (Spectrum, Atari, Comodore usw.). Die waren schon damals viel besser als Windows 95, ganz zu schweigen von Spielen!
Bekannte Hardware kann man ausnutzen. Inzwischen ist Hardware aber so komplex, dass niemand da mehr durchsieht. Darum verwischen die Treiber dann die Grenzen - niemand kann/darf heutzutage ungeschert an den Registern einer modernen Graka rumpfuschen, bei Hercules/CGA/... war das noch notwendig und sinnvoll.

Schau dir mal SymbOS an, das könnte in die Richtung Homecomputer OS gehen (für Amstrad CPC, allerdings ist der Source nicht ganz freigegeben). Das finde ich durchaus ein beachtliches Stück Leistung für einen Z80.

Zitat
Was mir nicht klar ist, damals verschwanden all diese Home Computer wegen Personal Computer. Jetzt kommen die Spielconsolen, die im Grunde nichts anderes sind als die Home Computers :) Komisch wie sich die Wirtschaft entwickelt!

Für PCs gibt/gab es mehr Software für jeden Zweck. Als Rechentechnik noch richtig Geld kostete, hatte man -ein- Gerät und das musste u.U. für alle reichen. Eine Spielekonsole konnte eben keine Textverarbeitung. Inzwischen sind die Preise gesunken und spezielle Geräte für Spiele sind preislich nicht mehr so angesiedelt, dass man sich entscheiden müsste.

Dafür trifft die o.g. Behauptung wieder zu, dass sich die Hardware-Architektur nicht großartig verändert (PSX bleibt PSX, wie SNES auch SNES bleibt) und damit u.U. besser ausgereizt werden kann. Da allerdings moderne Spielekonsolen auch nur verkleinerte, zusammengestopfte PCs sind, relativiert sich das.

@taljeth: Du schriebst, dass du einen Kernel in Pascal angefangen hast. Irgendwie kann ich mir das nicht zu richtig vorstellen, wie das funktioniert (ich kenne nur Delphi). Welche Software (Compiler) benutzt du dafür? Kannst du mir einen kleinen HelloWorld-Bootloader mal darin programmieren? Weil Pascal würde mich schon interessieren (ich mag kein C und hab die Pascal-Syntax nunmehr zwangsweise lernen müssen... Basic fällt ja aus).

Gruß,
Svenska (Sebastian)

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #24 am: 08. February 2007, 13:15 »
@taljeth: Du schriebst, dass du einen Kernel in Pascal angefangen hast. Irgendwie kann ich mir das nicht zu richtig vorstellen, wie das funktioniert (ich kenne nur Delphi). Welche Software (Compiler) benutzt du dafür? Kannst du mir einen kleinen HelloWorld-Bootloader mal darin programmieren?
Bootloader? Ne, laß mal, dafür nimmt man Assembler... Ich benutze eigentlich immer GRUB. Für den Kernel habe ich FreePascal benutzt. Ich kann dir auch mal einen kleinen Beispielcode geben, wenn ich daheim bin.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 08. February 2007, 13:45 »
Ich habe dazu einen neuen Thread eröffnet.
Gruß

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #26 am: 08. February 2007, 16:01 »
Ich sage es mal so, ohne Assembler kann man kein OS schreiben (min. inline Assembler braucht man an paar stellen), da z.B. C zu blöd dafür ist Register auf den Stack zu pushen (oder geht das doch?). Aber mit Assembler brauchst du keine anderen Sprachen. Warum dann viele C/C++/Pascal/Delphi etc. benutzen? Weil es einfacher und schneller ist. Ich persönlich bin lowleveler und habe spass an der x86 (und x86-64) Architektur weshalb ich alles in Assembler Programmiere.

bitmaster
In the Future everyone will need OS-64!!!

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #27 am: 08. February 2007, 16:17 »
Thema verfehlt, sechs, setzen.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Faba

  • Beiträge: 18
    • Profil anzeigen
Gespeichert
« Antwort #28 am: 21. July 2007, 21:44 »
also, um nochmal auf freebasic zurückzukommen. Es gibt ein Betriebssystemprojekt, realisiert mit Freebasic: http://www.freebasic-portal.de/index.php?s=projekt&id=3

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #29 am: 21. July 2007, 23:10 »
3. Zeile der Projektbeschreibung: Was man können muss, um bei dem Projekt mithelfen zu können.
Zitat
Als (aktiver) Programmierer solltest du mindestens C im fortgeschrittenem Stadium können, Kenntnisse in x86-Assembler sind von Vorteil,
C und ASM Kentnisse bei einem Freebasic projekt ;)

Faba

  • Beiträge: 18
    • Profil anzeigen
Gespeichert
« Antwort #30 am: 04. August 2007, 21:52 »
Ohh, sorry, ich habe mich nur auf dieser Seite umgeschaut und das gelesen. Da dachte ich, dass es gehen würde! Tut mir leid! :oops:

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #31 am: 04. August 2007, 22:15 »
Ändert nichts daran, daß es mit Freebasic tatsächlich geht. Zumindest ein von GRUB bootbares Hello World habe ich damit schon hinbekommen. Und da das Ding Inline-Assembler kann, ist damit eigentlich alles problematische erledigt.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #32 am: 04. August 2007, 23:32 »
[...]Und da das Ding Inline-Assembler kann, ist damit eigentlich alles problematische erledigt.
:-D

--------------

Man kann einige/viele(?) Microcontroller in BASIC programmieren (z.B. BASCOM-Basic für AVRs).
Theoretisch währe es, wenn man GRUB verwendet möglich, Die BASIC-Variante müsste halt nur entsprechende lowlevel-befehle besitzen (wie IN und OUT). Wenn man einen BASIC-Interpreter mit GRUB lädt, könnte man sogar auf ein Kompilieren des Codes verzichten :evil:

 

Einloggen