Wie viele Bits stehen zur Verfügung?

Haya98

Mitglied
Hallo,

ich komme bei dieser Aufgabe nicht mehr weiter:



Für einen RISC-Prozessor mit folgenden Eigenschaften:

•32-Bit Programm- und Datenwortbreite

•32 Register

•124 Befehle

sei ein sehr langes Programm gegeben, in dem von einer Anweisung an Speicherstelle 2^25 zu einem Programmteil gesprungen werden soll, der an der Speicheradresse 2^27 + 2^21 steht. Beim Jump-Befehlwerden alle Bits des Instruktionswortes, die nicht für die Codierung des Opcodes verwendet werden, für die Sprungzieladresse

(PC := PC + offset) benutzt und als vorzeichenbehaftete Zahl interpretiert.

Bei Branch-Befehlen enthält das Instruktionswort neben dem Opcode noch zwei Quellregister, die verbleibenden Bits werden analog für die Sprungzieladresse benutzt.



a) Ermittle, wie viele Bits einem Jump- und einem Branch-Befehl jeweils für die Sprungzieladresse indiesem Fall zur Verfügung stehen.

b) Ermittle, wie viele Instruktionen mindestens nötig sind, um die gegebene Speicheradresse zu errei-chen, wenn für Sprünge ausschließlich der beschriebene Jump-Befehl und die beschriebenen Branch-Befehle zur Verfügung stehen.
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Wo genau ist jetzt der Zusammenhang zu Java?!?

Ansonsten: wie viele Bits werden denn benötigt, um 124 Befehle zu kodieren? Sagen wir mal x, dann sind 32-x Bits des Programm-/Datwortes ungenutzt...
 

Haya98

Mitglied
Wir können auch keine Versuche erkennen, wie du mit dieser Aufgabe weiterkommen kannst.

Abgesehen davon, dass dies ein Java-Forum (und kein Assembler-Forum) ist, erwarten wir schon von dir Bemühungen, die Aufgabe zu lösen. Wenn du dabei konkrete Probleme hast, helfen wir gerne weiter.
ich weiß nicht wie ich a und b überhaupt lösen soll..., ich weiß, dass der Main Bus 32 bit breit ist. An der Stelle 2^25 ist unser Programm in Ausführung und mit einem Sprungbefehl müssen wir auf 2^27 + 2^21 springen, was ??? wären. Dabei ist das PC:=PC+offset ein relativer Sprung, wobei die Sprungrichtung durch das Vorzeichen impliziert wird. Wie soll ich jetzt die weite des jumps heraufinden?
 

temi

Top Contributor
An der Stelle 2^25 ist unser Programm in Ausführung und mit einem Sprungbefehl müssen wir auf 2^27 + 2^21 springen, was ??? wären. Dabei ist das PC:=PC+offset ein relativer Sprung, wobei die Sprungrichtung durch das Vorzeichen impliziert wird. Wie soll ich jetzt die weite des jumps heraufinden?
Die maximale Weite eines Sprunges ist ja begrenzt. Insofern kann es auch sein, dass mehrere Sprünge erforderlich sind um, das Ziel zu errreichen.

Deine Aufgabe ist es herauszufinden, wie weit das Ziel von der Startposition entfernt ist. Wie groß die maximale Sprungweite ist und daraus auszurechnen, wieviele Sprünge notwendig sind. Das sind zum größten Teil Grundrechenarten.

Ansonsten hat @mihe7 ja schon erklärt, dass ein Programmwort 32 Bit breit ist. Davon entfällt eine gewisse Anzahl an Bits auf die Codierung des Befehls und der Rest steht für andere Dinge zur Verfügung, wie in der Aufgabe beschrieben.
 

Neue Themen


Oben