Simulator für ganz einfache Prozessoren

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

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 :D), 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!
BlackJack

@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.
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Danke für deine Antwort. Ich habe mir jetzt mal SPIM heruntergeladen. Mal schauen, ob ich damit klar komme :mrgreen:

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!
Benutzeravatar
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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
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
Benutzeravatar
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!

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Das Jasmin hört sich auch interessant an. Danke euch beiden für eure Antworten :)
Antworten