Programmierung von Grund auf neu [closed]

Lesezeit: 11 Minuten

Benutzer-Avatar
Adam Halasz

Was ich gerne wissen würde, ist, ohne Betriebssystem und ähnliches von Grund auf mit der Programmierung zu beginnen.

Da ich Windows und Mac kenne und fast alles, sogar DOS, ist in C, C++ Pascal usw. geschrieben, also denke ich, dass ich eine dieser Sprachen beherrschen sollte, aber dafür bräuchte ich ein Programm, in dem ich den Code schreiben kann, und auch es zu kompilieren, aber ohne Betriebssystem und Programme, wie geht das? Wie konnten sie das tun?

Aber das reicht noch lange nicht, wie wurde C geschrieben? in was? Wenn ich also von Grund auf neu meine, meine ich, alles von den Grundlagen aus aufzubauen. Vielleicht von 0,1,0,1 Im Moment denke ich, dass dies der genaue Ausgangspunkt ist. Aber wie kann ich das machen, was muss ich haben und wo soll ich anfangen?

Danke für jede Antwort!

  • Alles, was Sie brauchen, ist eine magnetisierte Nadel und eine ruhige Hand: xkcd.com/378

    – neo2862

    3. Dezember 2010 um 23:14 Uhr


  • Ein Betriebssystem wurde in Pascal geschrieben?

    – Johannes Dibling

    3. Dezember 2010 um 23:18 Uhr

  • @John: Ja. Mac OS. (Nun, mehr als jedes andere Betriebssystem sowieso)

    – Nick Bastin

    3. Dezember 2010 um 23:19 Uhr


  • @neo2862: Großartig. XKCD ist die großartigste Seite im Web … Neben StackOverflow natürlich.

    – jwueller

    3. Dezember 2010 um 23:30 Uhr

  • Wenn Sie einen Apfelkuchen von Grund auf neu backen möchten, müssen Sie zuerst das Universum erschaffen – Carl Sagan [This is extensible to anything you want to make from scratch, and this is really an answer]

    – David Rodríguez – Dribeas

    3. Dezember 2010 um 23:56 Uhr

Benutzer-Avatar
Jörg W Mittag

Da ist ein Großartig Lehrbuch genannt Die Elemente von Computersystemen: Aufbau eines modernen Computers von Grundprinzipien von Noam Nisan und Shimon Schocken, die als Grundlage für einen von den genannten Autoren unterrichteten Universitätslehrgang dient Workshop im Computerbau – Von NAND zu Tetris in 12 Schritten. Dieser Studiengang wird auch an anderen Hochschulen unter anderen Namen gelehrt.

Da ist ein 10 Minuten Einführung auf YouTube und a 1 Stunde Google TechTalk auf Google Video, beide vom Autor selbst.

Die offizielle Begleit-Website ist http://nand2tetris.org/

Lassen Sie sich nicht vom Titel „Computerbau“ täuschen. Mit „Computer“ meint der Autor nicht nur die rechteckige Plastikbox auf Ihrem Schreibtisch, er meint das Ganze Rechensystemvon den einzelnen Logikgattern bis hin zur Anwendungsprogrammierung auf höchster Ebene.

Das Buch/der Kurs lehrt Sie

  • wie Sie Ihre eigenen individuellen Logikgatter erstellen
  • wie man eigene logische Schaltungen baut
  • wie man seine eigene CPU baut
  • wie man direkt in Maschinencode programmiert
  • wie man in seinem eigenen Assembler programmiert (den man in Maschinencode geschrieben hat)
  • wie Sie Ihre eigene virtuelle Maschine schreiben
  • wie Sie in Ihrer eigenen Hochsprache (die Sie in Assembler geschrieben haben) entwerfen, implementieren und programmieren
  • wie man einen Bootloader schreibt
  • wie man ein Betriebssystem schreibt
  • und schließlich, wie man ein einfaches Spiel schreibt

  • vielen Dank für deine Antwort @Jörg W Mittag dieses Buch sieht sehr interessant aus, deine Liste, was ich aus dem Buch lernen kann, sieht sehr cool aus, das ist genau das, was ich suche, ich hoffe, wenn ich dieses Buch eines Tages bekomme Es wird mir helfen!

    – Adam Halasz

    4. Dezember 2010 um 0:09 Uhr

  • Google Video ist vor langer Zeit gestorben. Dies scheint ein funktionierender Ersatz zu sein: youtube.com/watch?v=IlPj5Rg1y2w

    – i336_

    29. Januar 2016 um 12:58 Uhr


Benutzer-Avatar
vl

Sie können ein Mikrocontroller-Prototyping-Board wie z Arduino, Beagleboard oder MPLAB PIC boardund erstellen Sie dann eine machine monitor program die Ihre anderen Programme laden und ausführen kann user space.

Sie können diese Mikrocontroller in C oder ihren jeweiligen programmieren instruction sets.

Hook up an LCD display zu dieser MCU-Platine und Sie haben einen Monitor. Hook up a keyboard and mouse dazu und Sie haben die Kontrolle. (Sie können sogar Ihre eigenen schreiben trap handlers zum Schreiben auf LCD und zum Lesen von Eingaben von Tastatur und Maus, um zu verstehen, wie Interrupts und Ausnahmen auf niedrigem Niveau funktionieren. Wenn Sie niedriger gehen möchten, müssen Sie sich die MCU-Pinbelegungen für Interrupt-Steuerleitungen und Zeitdiagramme ansehen).

Voilà! Sie haben Ihren eigenen Computer von Grund auf neu entworfen!

Um Ihre Frage zu C zu beantworten, wurden Compiler für die ersten Programmiersprachen geschrieben assemblyund Compiler für die Assemblierung wurden eingeschrieben machine code.

  • cool, vielen Dank für deine Antwort @vls , viele Links und Ressourcen, vielen Dank!

    – Adam Halasz

    4. Dezember 2010 um 0:16 Uhr

Benutzer-Avatar
jcomeau_ictx

Das, wovon Sie sprechen, wurde früher als “Monitor” -Programm bezeichnet. Vielleicht erhalten Sie einige interessante Informationen auf osdev.org und werfen einen Blick auf colorforth.

[afterthought] googeln Sie auch Rick Hohensees Geschwafel auf comp.lang.forth.

[much later afterthought] Um wirklich zu den Grundlagen zu gelangen, besorgen Sie sich ein Steckbrett, einige alte EPROMs, ein 5-VDC-Netzteil und ein 25-VDC-Netzteil (24 sollten funktionieren, es ist häufiger). Verwenden Sie Pullup- oder Pulldown-Widerstände an den Adress- und Datenleitungen und Schalter, um die Adress- und Datenleitungen mit Masse oder Strom zu versorgen. Gehen Sie mit den Schaltern durch die Adressen und geben Sie die Daten als Einsen und Nullen auf den Datenbus ein, wobei Sie jede mit einem Impuls von 25 V programmieren. Ich habe das noch nie manuell gemacht, aber ich habe einmal ein Programm (http://jc.unternet.net/hacks/?1994-01-01-01) geschrieben, um dies von einem Centronics-Port aus zu tun, und mehrere Programme damit gebrannt Weg. Das war damals, als Intel Ihnen kostenlose Bücher für alle seine Prozessoren und Hilfschips zusandte, komplett mit detaillierten Befehlssätzen und Zeitangaben.

Wenn Sie fertig sind, verbinden Sie Ihren Prozessor mit dem EPROM, geben Sie ihm etwas Saft und beobachten Sie, was passiert. Lassen Sie es vielleicht einige LEDs oder so etwas blinken, bevor Sie versuchen, Tastaturen und Monitore zu integrieren.

  • Vielen Dank @jcomeau_ictx osdev.org sieht sehr interessant aus! und ich werde mich auch um diese vierte Sprache kümmern

    – Adam Halasz

    3. Dezember 2010 um 23:32 Uhr

  • Ich würde gerne diesen LED-basierten selbstgelöteten Monitor sehen! So etwas habe ich tatsächlich vor langer Zeit gesehen…

    – jwueller

    4. Dezember 2010 um 0:14 Uhr


Das Problem, das Sie beschreiben, wird am häufigsten als bezeichnet Bootstrapping (und seine Beziehung zu den Henne-Ei-Problem). Dieser spezielle Link ist für Compiler, aber Sie haben das gleiche Problem in vielen Bereichen – Hardware, Betriebssysteme usw. mit ähnlichen Lösungen.

Benutzer-Avatar
jwueller

Beginnend bei den Grundlagen ist 1 und 0. Sie müssen wissen, welche Befehle Ihr Prozessor unterstützt und welche Register und Cache usw. vorhanden sind. Dann wäre es praktisch, einen kleinen Assembler-Compiler in Maschinencode zu schreiben (für readable 1 und 0). Wenn Sie das haben, können Sie den ersten echten Compiler für eine einfache höhere Sprache schreiben und so weiter (jeder mit einer niedrigeren “Sprache” gebaut). Sie sollten jedoch wissen, dass die Erstellung eines einfachen Betriebssystems Jahre der Planung und noch mehr Zeit für die Entwicklung, das Debuggen usw. in Anspruch nehmen kann (und das alles, bevor Sie überhaupt daran denken können, etwas Nützliches auf dem Bildschirm zu sehen). Und dieses Betriebssystem kann auf keinem anderen Prozessor als Ihrem ausgeführt werden. Dann brauchen Sie Treiber usw. für jedes einzelne Stück Hardware. Und von hier aus sind viele Schritte zu gehen. Beginnend auf der Ebene von 1 und 0 ist nicht sehr lohnend, da Sie sehr lange nichts davon sehen werden. Einfach nicht.

  • Ich würde nicht sagen, tu es nicht; Ich würde nur raten, keine spektakulären Ergebnisse zu erwarten 🙂

    – Chris Laplante

    3. Dezember 2010 um 23:23 Uhr

  • @SimpleCoder: Ich denke immer noch, dass Sie das nicht tun sollten, bis Sie es wissen exakt was tust du. Ich habe diesen Rat aber hinzugefügt 😉

    – jwueller

    3. Dezember 2010 um 23:28 Uhr

  • Nun, ich denke, nichts ist unmöglich. Und lernt nie Herzen 😉 aber du hast mich mit deinen Worten vorangebracht, also danke!

    – Adam Halasz

    3. Dezember 2010 um 23:36 Uhr

  • @CIRK: Stimmt. Ich wünsche Ihnen viel Glück mit Ihrem Betriebssystem 🙂 Ich würde gerne das Ergebnis sehen! Gerne können Sie mir eine Kopie zukommen lassen. Ich melde mich freiwillig zum Betatest!

    – jwueller

    4. Dezember 2010 um 0:11 Uhr

  • Die Frage von CIRK ist eine der interessanteren, die ich gefunden habe. @elusive: Ihre Antwort hat sehr gut erklärt, was die Frage wissen wollte, denke ich … Ich studiere Betriebssystem, aber ich habe immer über dieses Henne-Ei-Problem nachgedacht, und keine Bücher haben dies erklärt! (oder gut bis ich natürlich rot habe lol) Ich entschuldige mich für mein Englisch 😛

    – Sonenengel

    6. Dezember 2010 um 10:44 Uhr


Benutzer-Avatar
Billy ONeal

Die meisten C-Compiler können Code ausgeben, der nicht für die Ausführung im Kontext eines Betriebssystems ausgelegt ist (siehe die memtest86+ codebase), aber das wird den Funktionsumfang, der von einem dieser Compiler bereitgestellt wird, stark einschränken. (Insbesondere wirst du nichts wie bekommen malloc).

  • Ich würde nicht sagen, tu es nicht; Ich würde nur raten, keine spektakulären Ergebnisse zu erwarten 🙂

    – Chris Laplante

    3. Dezember 2010 um 23:23 Uhr

  • @SimpleCoder: Ich denke immer noch, dass Sie das nicht tun sollten, bis Sie es wissen exakt was tust du. Ich habe diesen Rat aber hinzugefügt 😉

    – jwueller

    3. Dezember 2010 um 23:28 Uhr

  • Nun, ich denke, nichts ist unmöglich. Und lernt nie Herzen 😉 aber du hast mich mit deinen Worten vorangebracht, also danke!

    – Adam Halasz

    3. Dezember 2010 um 23:36 Uhr

  • @CIRK: Stimmt. Ich wünsche Ihnen viel Glück mit Ihrem Betriebssystem 🙂 Ich würde gerne das Ergebnis sehen! Gerne können Sie mir eine Kopie zukommen lassen. Ich melde mich freiwillig zum Betatest!

    – jwueller

    4. Dezember 2010 um 0:11 Uhr

  • Die Frage von CIRK ist eine der interessanteren, die ich gefunden habe. @elusive: Ihre Antwort hat sehr gut erklärt, was die Frage wissen wollte, denke ich … Ich studiere Betriebssystem, aber ich habe immer über dieses Henne-Ei-Problem nachgedacht, und keine Bücher haben dies erklärt! (oder gut bis ich natürlich rot habe lol) Ich entschuldige mich für mein Englisch 😛

    – Sonenengel

    6. Dezember 2010 um 10:44 Uhr


Benutzer-Avatar
Superkatze

Auf den meisten modernen PC-Computern können Sie das, was Sie suchen, nicht sehr bequem tun, aber es gibt viele preiswerte (unter 100 oder sogar unter 50 US-Dollar) Kits zum Programmieren kleinerer Ein-Chip-Mikros. Ein typisches Mikro hat ein paar Dutzend Pins, die unter Programmsteuerung hoch und niedrig angesteuert werden können, zusammen mit einem Prozessor, etwas RAM (normalerweise 256 Bytes – 8 KB oder so) und etwas Flash-Speicher für Code (normalerweise 8 KB – 128 KB oder so). ). Die Entwicklungskits haben typischerweise einen Prozessor mit einigen Stiften, die mit LEDs oder einem LCD-Display verbunden sind, und mit anderen Drähten, die mit einigen Tasten verbunden sind. Die Platinen enthalten auch Schaltkreise, damit Sie Ihre Software auf einem PC entwickeln, ein USB-Kabel anschließen und Ihren Code in den Chip übertragen können.

Embedded-Programmierung macht Spaß. Vermittelt ein wenig das Gefühl von „Old-School“-Programmierung, mit einigen neueren, modernen Annehmlichkeiten.

  • danke für deine antwort @supercat , ja das old-school-feeling das spüre ich gerade und zieht mich echt an, die hardware ist eine große frage für mich, da ich hier einen MAC habe, und wie ich hier auch gehört und gelesen habe Ich möchte es wirklich von Grund auf neu, ich muss mit dem Prozessor arbeiten und so weiter, und ich möchte meinen Computer nicht wirklich zum Absturz bringen oder so, vielen Dank für Ihre Tipps!

    – Adam Halasz

    3. Dezember 2010 um 23:48 Uhr

  • @CIRK: Übrigens, wenn Sie wirklich altmodisch werden wollen, gehen Sie zu AtariAge.com und suchen Sie nach Informationen über die Harmony-Cartridge. Kaufen Sie eine Harmony-Cartridge zusammen mit einem Atari 2600, und (mit Hilfe anderer Informationen auf der Website) können Sie Ihre eigenen Spiele schreiben, die auf einer Spielkonsole von 1977 laufen. Wenn Sie viel von irgendetwas auf diesem System zeigen möchten , müssen Sie die Daten in Echtzeit in den Videochip einspeisen. Der Prozessor ist sogar für die Erzeugung der vertikalen Synchronisation verantwortlich (glücklicherweise kümmert sich die Hardware um die horizontale Synchronisation). Vielleicht bin ich komisch, aber ich liebe den 2600 als Programmierplattform.

    – Superkatze

    4. Dezember 2010 um 0:13 Uhr

  • @CIRK: Bei den meisten Videospielsystemen steuert das Design des Videochips, was Sie auf dem Bildschirm anzeigen können, außer bei Systemen, bei denen alles eine Bitmap ist und Sie zeigen können, was Sie wollen. Der Atari 2600 ist ziemlich begrenzt, aber die einzige harte Grenze besteht darin, dass jede Scanzeile nur 160 Pixel groß ist. Das System wurde entwickelt, um zwei bewegliche einfarbige Formen pro Bildschirm plus ein paar bewegliche Blöcke anzuzeigen, aber eines meiner Spiele enthält 16 bewegliche Formen (eine bewegt sich überall hin und fünf Dreiergruppen bewegen sich horizontal an festen vertikalen Positionen) mit jeder Form zeilenweise unabhängig eingefärbt.

    – Superkatze

    4. Dezember 2010 um 0:19 Uhr

1186760cookie-checkProgrammierung von Grund auf neu [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy