0 Daumen
1,2k Aufrufe

blob.png

Was meint man denn in diesem Zusammenhang mit jump? Ich verstehe den letzten Teil nicht was genau passiert, bei einem jump und bei keinem jump...

Avatar von

1 Antwort

+1 Daumen
 
Beste Antwort
was genau passiert, bei einem jump und bei keinem jump...

Du weißt vermutlich, dass sich ein Programm aus mehreren Anweisungen/Befehlen zusammensetzt:

1   ADD $0,$1,$2   % Addiere den Inhalt der Register $1 und $2 und speichere das Ergebnis in Register $0
2 SUB $0,$2$0 % Substrahiere den Inhalt des Registers $0 von dem in $2 und speichere das Ergebnis in Register $0
3 CMP $42,$0,$2 % Vergleiche die Inhalte von Register $0 und $2. Sind diese gleich, schreibe den Wert 0 in Register $42, wenn ...
X01 LABEL
4 ADD $0,$1,$2
5 CMP $42,$0,$2
6 JMP LABEL

Jeder Befehl hat besitzt eine Adresse. Zuerst ist der Wert des Befehlszählers 1. Hat der Befehl alle Phasen (Fetch, Decode, Execute) durchlaufen, wird geprüft, ob nun ein Sprung stattfinden soll. Ist dies nicht der Fall, so wird der aktuelle Wert des Befehlszählers um 1 erhöht (inkrementiert) und nun steht der Wert 2 (zweiter Befehl) im Befehlszähler.

Wenn nun ein Sprung (Jump) ausgeführt werden soll, wird (in der Regel) nicht der direkt folgende Befehl ausgeführt! Befehl Nummer 6 ist ein Jump-Befehl. Hier soll zur Marke LABEL "gesprungen" werden. Dazu wird der Befehlszähler mit der Adresse dieser Marke geladen (hier exemplarisch X01).

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community