Hallo,
ich möchte mal ein wenig in ganz grundlegende Programmierung einsteigen, und vor allem mal verstehen, wie das mit Taktzyklen, Registern usw. alles passiert.
Da ein moderner Computer ja viel zu kompliziert und umfangreich ist, ein uralter Rechner aber auch nicht mehr aufzutreiben ist, wollte ich fragen, ob jemand einen guten Simulator oder ähnliches kennt?
Ich stelle mir das halt vor, dass man den kompletten Inhalt des Arbeitsspeichers sehen kann (Praktisch wie im Hex-Editor), die Registerbelegung usw (und was es sonst noch gibt ), und man das ganze dann in Assembler programmieren kann (Und, wenn möglich, vielleicht noch in C).
Hat jemand da eventuell eine Empfehlung? Es wäre schön, wenn das irgendwie didaktisch aufbereitet wäre.
Danke!
Simulator für ganz einfache Prozessoren
@Hellstorm: Am didaktisch aufbereitet könnte es grundsätzlich vielleicht scheitern. Da gibt's dann nämlich eher Simulatoren die auch extra für's lernen entwickelt wurden, oder zumindest so keinem echten System entsprechen. Knuth's MMIX zum Beispiel. Uns hatte man in der Uni den MIPS32-Simulator SPIM zum Assembler lernen gegeben.
Ein ”moderner” Computer muss auch nicht zu kompliziert sein. Man muss ja nicht alle Befehlserweiterungen verwenden und auch keine Assembler-Programme schreiben die auf nackter Hardware laufen, sondern kann auch mal damit experimentieren bei einem C-Programm einzelne Funktionen in Assembler zu schreiben. Oder man nimmt sich Dosbox und programmiert damit dann 386er oder 486er in 16-Bit-Assembler. Und wenn man mutig ist, schaltet man den Prozessor in den 32-Bit-Modus in den „flat memory mode”, wie man das damals bei Demos gemacht hat.
An moderner Hardware gibt es neben den Intel-kompatiblen auch noch ARM-Prozessoren (Raspberry Pi, Smartphones, …), oder man schaut sich mal einen Mikrokontroller an. Irgendeinen Atmega auf einem Arduino beispielsweise.
Uralte Rechner sind auch physisch noch aufzutreiben. Die ganzen Heimrechner und Spielekonsolen der 80er und 90er mit 6510, z80, 68k, ARM2, …-Prozessoren gibt es auf dem Gebrauchtmarkt teilweise günstig. Tipp: Nach einer anderen Quelle als EBay suchen, denn dort fragt man sich echt manchmal nicht nur wer solche Mondpreise verlangt, sondern auch wer zur Hölle das dann auch noch bezahlt. Klar gibt es seltene Stücke die einen hohen Sammlerwert haben, aber nicht alles was da hoch gehandelt wird ist wirklich selten und den jeweiligen Preis wert. Verbreitete Geräte finden sich auch oft bei Verwandten oder Bekannten auf Dachboden oder Keller — einfach mal rumfragen kann sich da auch lohnen.
Es gibt aber auch Emulatoren für die ganzen alten Schätzchen.
Ein ”moderner” Computer muss auch nicht zu kompliziert sein. Man muss ja nicht alle Befehlserweiterungen verwenden und auch keine Assembler-Programme schreiben die auf nackter Hardware laufen, sondern kann auch mal damit experimentieren bei einem C-Programm einzelne Funktionen in Assembler zu schreiben. Oder man nimmt sich Dosbox und programmiert damit dann 386er oder 486er in 16-Bit-Assembler. Und wenn man mutig ist, schaltet man den Prozessor in den 32-Bit-Modus in den „flat memory mode”, wie man das damals bei Demos gemacht hat.
An moderner Hardware gibt es neben den Intel-kompatiblen auch noch ARM-Prozessoren (Raspberry Pi, Smartphones, …), oder man schaut sich mal einen Mikrokontroller an. Irgendeinen Atmega auf einem Arduino beispielsweise.
Uralte Rechner sind auch physisch noch aufzutreiben. Die ganzen Heimrechner und Spielekonsolen der 80er und 90er mit 6510, z80, 68k, ARM2, …-Prozessoren gibt es auf dem Gebrauchtmarkt teilweise günstig. Tipp: Nach einer anderen Quelle als EBay suchen, denn dort fragt man sich echt manchmal nicht nur wer solche Mondpreise verlangt, sondern auch wer zur Hölle das dann auch noch bezahlt. Klar gibt es seltene Stücke die einen hohen Sammlerwert haben, aber nicht alles was da hoch gehandelt wird ist wirklich selten und den jeweiligen Preis wert. Verbreitete Geräte finden sich auch oft bei Verwandten oder Bekannten auf Dachboden oder Keller — einfach mal rumfragen kann sich da auch lohnen.
Es gibt aber auch Emulatoren für die ganzen alten Schätzchen.
Danke für deine Antwort. Ich habe mir jetzt mal SPIM heruntergeladen. Mal schauen, ob ich damit klar komme
Ich will da auch nichts absolut verrücktes mit machen, nur mal ein wenig herumprobieren. Ich hab mir auch überlegt, vielleicht mal einen ATmega oder ähnliches zu holen, aber letzten Endes habe ich da wieder das gleiche Problem wie bei einem alten PC: Ich habe ein Gerät zusätzlich herumstehen, was ich anschließen muss oder was eine doofe Bedienung hat. Wenn ich das wesentlich bequemer einfach in Software simulieren kann, dann ist das ja praktischer.
Also von daher danke für deinen Tipp!
Ich will da auch nichts absolut verrücktes mit machen, nur mal ein wenig herumprobieren. Ich hab mir auch überlegt, vielleicht mal einen ATmega oder ähnliches zu holen, aber letzten Endes habe ich da wieder das gleiche Problem wie bei einem alten PC: Ich habe ein Gerät zusätzlich herumstehen, was ich anschließen muss oder was eine doofe Bedienung hat. Wenn ich das wesentlich bequemer einfach in Software simulieren kann, dann ist das ja praktischer.
Also von daher danke für deinen Tipp!
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Es gibt sehr vereinfachte Modelle einer CPU...
Gerade das gefunden: http://www.wolfgang-back.com/knowhow_home.php bzw.: https://de.wikipedia.org/wiki/Know-how-Computer
oder auch: https://www.cs.drexel.edu/~bls96/museum/cardiac.html bzw. https://en.wikipedia.org/wiki/CARDboard ... omputation
Da sollten die Grundlagen klar werden...
Konkrete Implementationen in Python sind u.a. hier: https://github.com/jtauber/pycpu
Ich selber habe den 6809 implementiert und einen Emulator daraus gemacht: https://github.com/jedie/DragonPy
Wie es dazu gekommen ist, kann man hier nachlesen: http://www.python-forum.de/viewtopic.php?f=1&t=32089
Gerade das gefunden: http://www.wolfgang-back.com/knowhow_home.php bzw.: https://de.wikipedia.org/wiki/Know-how-Computer
oder auch: https://www.cs.drexel.edu/~bls96/museum/cardiac.html bzw. https://en.wikipedia.org/wiki/CARDboard ... omputation
Da sollten die Grundlagen klar werden...
Konkrete Implementationen in Python sind u.a. hier: https://github.com/jtauber/pycpu
Ich selber habe den 6809 implementiert und einen Emulator daraus gemacht: https://github.com/jedie/DragonPy
Wie es dazu gekommen ist, kann man hier nachlesen: http://www.python-forum.de/viewtopic.php?f=1&t=32089
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Bei uns an der Uni wurde Jasmin verwendet. Das ist zwar nicht direkt ein CPU-Simulator sondern nur ein Interpreter für x86-Artigen Assembler aber es gibt ne Ansicht für RAM und Register und so Späße.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ach, wenn man mal eben ein wenig Spielen will, mit CPU, registern, RAM, Assemlber usw. dann kann ich http://www.asm80.com/ empfehlen!