2016-05-02 71 views
1

我學習MIPS,現在,當我閱讀文檔,它說:MIPS分支指令

18位有符號偏移量(16位偏移字段左移2位)

我想知道爲什麼分支指令的偏移量乘以4?該文檔還指出,這使得分支指令的範圍爲128 kb,因爲32kb乘以4.此乘法是否僅適用於分支指令,還是也適用於跳轉指令?

謝謝!

回答

2

我想知道爲什麼分支指令的偏移量乘以4?

所有指令必須是字對齊的。從中可以看出,原點和目的地都是字對齊的,這又意味着偏移量也始終是字對齊的。因此,存儲偏移量的兩個最低有效位是很浪費的,因爲它們始終爲0.我們可以使用指令字中的可用位通過只存儲16位最高有效位來編碼18位偏移量。

這種乘法只適用於分支指令嗎?它也適用於跳轉指令嗎?

跳轉指令是一樣的。儘管跳轉指令在其他方面有所不同,跳轉的偏移不是PC相對的,而是相對於PC當前所處的256MB對齊區域的開始。