MIPS中有關於分支指令及跳轉尋址


分支指令

分支指令包含該指令,和兩個操作數,以及跳轉的分支地址,該地址是相對於下一條指令的相對地址


分支指令占6位   操作數1占5位     操作數2占5位     分支指令16位


 例如

bne   $s0  ,  $s1,EXIT

執行bne分支指令,比較$s0和$s1兩個操作數中的數據,如果不相等則跳轉到EXIT指定的地址,

如何到達EXit的地址?

這就要利用分支指令那16位二進制數了

16位二進制可以表示的范圍為-2^15~2^15也就是-128~127,通過下一指令的地址加上該分支指令值就能得到目標地址

如何進行地址的加減就要用到二進制的補碼來進行運算

16位中負數最小值的補碼演變:0X0000FFFF(原碼)因為是負數所以在FFFF前加一得到OX0001FFFF,再進行按位取反得到OXFFFE0000(補碼)

加上下一條指令的地址就是目標地址了

16位中正數的補碼就是原碼最大值為Ox00007FFFF



 

跳轉指令

 

跳轉指令則只有該指令和跳轉的目標地址組成

 


 跳轉指令6位      相對跳轉地址16位


因為地址都是4位一組所以將該26位地址進行左移2位表示28位的地址

其沒有正負之分因此相對簡單

OX6位指令碼+(11)多的2位二進制碼FFFFFF(24位)

左移之后變成

保留6位指令當中的最高4位,之后的目標地址等於原來的26位加上補上的2位得到

OX0FFFFFFC(最大移動地址)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM