Dokumentation
Dokumentation
Update: 19.11.2021
Start Download CPU's

8 Bit CPU Simulation


pdf Dokumente:



Ausschnitt Beispiel Assembler - Windows Version


Anpassung der Oberfläche in der INI-Datei (nur Windows Version).
Klick auf Kurzanleitung.


Source Code der Simulation siehe Download



Programmierung Windows Version

(siehe https://de.wikipedia.org/wiki/Liste_von_Programmiersprachen)

Bei der Programmierung mit
XProfan 11.2 Freeware Vollversion ( => lokale Kopie XProfan 11.2 Freeware Vollversion )
wurde auf Dinge wie Header, Include und Windows API Aufrufe bewußt verzichtet, um eine eventuelle Portierung in eine andere Sprache/auf eine andere Plattform zu vereinfachen.

Die exe Datei wurde mit XProfan 11.2 erstellt.

Das Programm wurde möglichst sinnvoll gegliedert und weitestgehend dokumentiert.
Mit '{ ... '} können beliebige Teile des Codes im XProfan Editor gefaltet werden.



Eine Reihe von Hilfsprozeduren gestaltet den gesamten Quellcode übersichtlicher und vermeidet unnötige Wiederholungen.








Programmierung Browser Version

(JavaScript und three.js + Vergleich zu Windows)

Die web Version ist nur in Englisch verfügbar.

Sie wurde auf der Grundlage der Windows Version nachträglich entwickelt.

Durch die Einschränkungen der Browser konnten nicht alle Funktionen identisch übernommen werden. Die wesentliche Funktionalität ist aber weitgehend gleich.

Nicht realisiert wurden:

- dynamische Tooltipps
- Darstellung des Cache
- Debugging
- Auswahl eines Befehls aus der Hilfsliste (nur komplette Liste als Bild)

Statt der Speicherung im lokalen Dateisystem wird die Ausgabedatei und das Assemblerprogramm in die Zwischenablage kopiert. Das wird durch die Benutzeroberfläche deutlich.

Die Simulation benutzt zur Darstellung das 3D Framework three.js .

Die Browser reagieren allergisch auf Verzögerungen im Programmablauf.
Die Simulation läuft aber mit wählbarem Takt von Einzelschritt mit beliebiger Verzögerung bis ungebremst. Um das zu erreichen, wird eine Zeitsteuerung in der Funktion animate realisiert.

Dadurch müssen einige Assemblerbefehle zur Darstellung in der ALU in Teilstücke zerlegt werden. Bei einfachen Anweisungen ist das unproblematisch. Die Multiplikation nach Booth enthält diverse Verschachtelungen, die es bereits kompliziert machen. Nach einigen Fehlversuchen klappte aber die Zerlegung.

Vergleicht man die Algorithmen der Multiplikation und Division wird deutlich, dass es fast unmöglich ist die Division zu zerlegen. In der web Version sind die Vorbereitungen zur Darstellung in der ALU auskommentiert, die Berechnung erfolgt ausschließlich in JavaScript.

Durch die unterschiedlichen Ereignismodelle bei der Programmierung für Windows und für die Browser ist in dieser Hinsicht kein unmittelbarer Vergleich des Quellcodes möglich. Beide Varianten haben sowohl Vor - als auch Nachteile.

Beim Windows Programm gibt es eine Verschachtelung von Ereignisschleifen in einem geschlossenen Programmblock.

Beim Browser werden die Ereignisse für jedes Element einzeln mit .addEventListener behandelt. Das führt zur Zersplitterung der Programmlogik und an einigen Stellen zu leicht abweichendem Verhalten.

Das Format der Assemblerprogramme ist identisch.

Vom umfangreichen Framework three.js werden nur recht wenige Dinge benötigt. Bemerkenswert ist eventuell die Nutzung von THREE.InstancedMesh zur dynamischen Darstellung von CPU, RAM und MGA Display sowie die Nutzung einer canvas Textur zur dynamischen Darstellung der Assembler Befehle und Flags an den RAM Zellen.

 
16.04.2014 - Simulation minimales 8 Bit Prozessorsystem - 256 Byte RAM