Skip to content

MWeigert/Mini-Power-PC

Repository files navigation

Informatik - Aufgabenserie 6

---------------------------------------A U F G A B E------------------------------------------------
---------------------------------M I N I   P O W E R   P C------------------------------------------

	1.TEIL----------------------------------------------------------------------------------------------
 	Schreiben Sie ein Programm in einer beliebigen Programmiersprache / Umgebung, das den in der
	Vorlesung spezifierten "Mini-Power-PC" emuliert - d.h. alle Befehle des Befehlsatzes (s.h.
	Anlage Befehlssatz) ausführt.
	
	Als Eingabe soll gelesen werden:
	- Ein beliebiges mit dem Befehlssatz geschriebenes Programm, das ab Speicher 100 in den
	  Speicher eingelesen wird (Der Op-Code des Programms kann als Binär-, Dezimal- oder Hex-
	  Zahlen eingelesen werden).
	- Die Parameter des Programms (Eingabewerte) ab Speicher 500 (Die Parameter des Programms
	  können als Binär-, Dezimal- oder Hex-Zahlen eingelesen werden).
	
	Als Ausgabe wird folgendes erwartet:
	- Die aktuellen Zustände der Register
	  * Befehlszähler, Befehlsregister
	  * Akkumulator, Carry-Bit
	  * Reg-1, Reg-2, Reg-3
	  * Optional: alle Werte auch als Binär-Werte (16 Bit)
	- Der aktuelle decodierte Befehl aus dem Befehlsregister (als Mnemonics)
	- Der aktuelle Zustand des Speichers
	  * 5 Befehle vor bis 10 Befehle nach dem aktuellen Befehl
	  * Der Inhalt der Speicherzellen 500 bis 529 (wortweise)
	  * Optional: alle Werte auch als Binär-Werte
	- Die Anzahl der durchgeführten Befehle (zum Programmstart 0)
	
	Implementieren Sie einen "schnellen" und einen "slow" Modus, sowie optional einen 
	"Step-Modus".
	
	Schneller Modus:
	Während des Programmablaufs erfolgt keine Ausgabe (keine Aktualisierung der Ausgabedaten);
	diese werden erst am Programmende aktualisiert.
	
	Slow Modus:
	Während des Programmablaufs wird nach Bearbeiten eines jeden Befehls die Ausgabe 
	akutalisiert.
	
	Step-Modus
	Wie Slow Modus, jedoch wird das Programm nach Bearbeitung eines jeden Befehls unterbrochen
	und wird erst nach einer Bestätigung durch den User (z.B. drücken einer Taste) wieder
	fortgesetzt.
	
	2.TEIL-----------------------------------------------------------------------------------------------
	Schreiben Sie ein Programm in der Maschinensprache des in der Vorlesung spezifizierten 
	(vereinfachten) "Mini-Power-PC" (Befehlssatz siehe Anlage), das zwei beliebige 16-Bit 
	Zahlen miteinander multipliziert.
	
	Die beiden 16-Bit Zahlen (im 2er-Komplement) sollen in die Speicher 500/5001 und 502/503
	eingelesen werden.
	
	Die Ausgabe wird als 32-Bit Zahl (im 2er-Komplement) in die Speicher 504/505/506/507 ge-
	schrieben.
	
	3.TEIL-----------------------------------------------------------------------------------------------
	Verifizieren Sie Ihren Emulator und Ihr Programm, indem Sie folgende Multiplikationen
	durchführen:
	
	*    15 x 27
	*     0 x 23456
	* -1234 x 4321
	*  -222 x -333
	
	=====================================================================================================
	
	FORTSCHRITT-INFORMATIONEN
	28.10. MW - GitHub eingerichtet und erste Planungen begonnen.
	29.10. MW - Erste Klassen und erstes Testfile programmiert. (Converter; Memory)
	30.10. MW - Weitere Konvertierungen in die Klasse Converter.java eingefügt.
	31.10. MW - Converter wird erst einmal nicht weiterentwickelt -> neue Klasse Binary, welche
                alle funktionalitäten beninhalten wird um mit Binärzahlen im Projekt zu 
                arbeiten, entwickelt.
	03.11. MW - AssemblerCompiler implementiert.
	04.11. MW - Funktionalitäten für folgende Klassen (weiter) entwickelt: Register, CPU und Memory
	          - Memory kann nun flushen; Werte einzelner Zellen Binär & Dezimal ausgeben und
	            den Wert (als Binärzahl) einzelner Zellen setzen (Grösse: 1 KiB).
	          - Register können flushen; Werte setzen/zurückgeben (Binär). Register setzen ihren Wert
	            im Constructor zufällig.
	          - CPU hat ein Befehlsregister, einen Befehlszähler, ein Akkumulator, drei Register, 
	            ein Carry-Bit, ein RAM (1 KiB) und einen internen Counter.
	          - CPU kann nun eine Statusmeldung auf der Console ausgeben.
	          - BUGFIX: Converter rechnet nun korrekt Binärzahlen in Dezimalzahlen um.
    05.11. MW - Binary: Kann nun Binärzahlen und 2erKomplemt mit und ohne Formatierung zurückgeben.
              - NEUE KLASSE: UserInput
              - UserInput: liest zwei Integer ein und schreibt Sie an die Speicheradressen 500 bis 503
    06.11. MW - CPU kann nun den UserInput aufrufen
              - CPU kann nun ein "Reset" durchführen
              - CPU liefert nun den Wert des Befehlszählers (sowohl Binär als auch Dezimal)
              - CPU hat nun erweiterte Statusmeldungen (Aufgaben Konform)
              - Register können nun auch ihre Werte "formatiert" (Byte per Byte) zurückgeben.
    12.11. MW - Converter kann Binärzahlen nun "formatiert" (Byte weise) ausgeben.
              - Die CPU gibt nun den Datenspeicher Wort weise aus (16 Bit).
              - BUGFIX: Das 2er Komplement wird nun korrekt berechnet.
    13.11. MW - CPU zeigt nun die Dezimalwerte des Datenspeichers (2er Komplement) korrekt an.
              - Converter kann nun auch das 2er Komplement wieder ins Dezimalsystem umrechnen.
              - Der Befehlszähler ist nun auch ein Register.
              - GUI_OpenFileDialog implementiert. Diese lässt ein Assembler Programm auswählen.
              - Loader implementiert.
    14.11. MW - BUGFIX: Compiler compiliert nun den Befehl NOT korrekt.
              - CPU gibt nun den Programspeicher Wort weise aus (16 Bit).
              - CPU hat Methode welche mittels Loader aus einem auswählbaren Textfile den Program
                Code als Maschinencode in den Programspeicher lädt.
              - BUGFIX: Compiler weitere Bugs bei der Umwandlung in Maschinencode entfernt.
              - Converter kann nun Maschinencode in Mnemonic übersetzen.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages