2017-08-01 3 views
0

Ich lerne zur Zeit für einen Test und die folgende Frage war in eines der alten Prüfungen:MIPS Jump-Strecke

Geben Sie den MIPS-Code für einen Sprung von der aktuellen Anweisung 1.073.742.000 (Dec) bis 221.860 (Dez).

Jetzt ist die erste Frage der J-Label-Anweisung effizienter als die jr-Anweisung?

Zweitens gehe ich davon aus, dass 221860 außerhalb der Reichweite von 1073742000 springt, weil es in einem anderen 256 MB Block ist? Also in diesem Fall hätte ich keine andere Wahl, als jr richtig zu benutzen?

Antwort

0

Ist der j-Label-Befehl effizienter als der jr-Befehl?

Sie haben unterschiedliche Zwecke.

J wird verwendet, wenn Sie jedes Mal, wenn der Sprung ausgeführt wird, zur selben Adresse springen möchten und die Zieladresse innerhalb der gleichen 256 MB-Region liegt. Sie können auch B verwenden, wenn die Zieladresse innerhalb von +/- 128kB liegt (B kann auch eine 256MB-Bereichsgrenze überschreiten, solange die Zieladresse innerhalb der angegebenen Grenze liegt). Da die Verwendung von JR auch eine oder mehrere Anweisungen zum Laden der Zieladresse in ein Register erfordert, wäre es mühsam, sie für alle unbedingten Sprünge verwenden zu müssen.

JR ist für, wenn Sie zu einer anderen Adresse zu verschiedenen Gelegenheiten springen möchten (z. B. von einer Funktion zurückkehren, die von mehreren verschiedenen Orten aufgerufen werden kann) oder zu einer anderen 256 MB-Region springen.

Also in diesem Fall hätte ich keine andere Wahl, als jr richtig zu verwenden?

Richtig.