2016-05-02 10 views
1

I MIPS jetzt lerne, und, wie ich die Dokumentation wurde bereits gesagt:MIPS Verzweigungsbefehle

Ein 18-Bit-Offset-AK (das 16-Bit-Offset-Feld links 2 Bits verschoben)

Ich fragte mich, warum genau für Verzweigung Anweisungen der Offset mit 4 multipliziert wird? Die Dokumentation besagt auch, dass dies den Bereich für Verzweigungsbefehle 128 kb macht, da der 32 kb mit 4 multipliziert wird. Gilt diese Multiplikation nur für Verzweigungsbefehle oder gilt sie auch für Sprungbefehle?

Danke!

Antwort

2

Ich frage mich, warum genau für Verzweigung Anweisungen der Offset mit 4 multipliziert wird?

Alle Anweisungen müssen wortorientiert sein. Daraus folgt, dass sowohl der Ursprung als auch das Ziel wortausgerichtet sind, was wiederum bedeutet, dass der Versatz auch immer wortausgerichtet ist. Es wäre also eine Verschwendung, die zwei niedrigstwertigen Bits des Offsets zu speichern, da sie immer 0 sind. Stattdessen können wir die verfügbaren Bits in dem Befehlswort verwenden, um 18-Bit-Offsets zu codieren, indem nur die 16 höchstwertigen Bits gespeichert werden.

Gilt diese Multiplikation nur für Verzweigungsbefehle oder gilt sie auch für Sprungbefehle?

Das gleiche gilt für Sprunganweisungen. Obwohl sich Sprunganweisungen auf andere Weise unterscheiden; Der Versatz für einen Sprung ist nicht PC-relativ, sondern relativ zum Beginn der 256MB-ausgerichteten Region, in der sich der PC gerade befindet.