1. 程式人生 > >MIPS中有關於分支指令及跳轉尋址

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

負數 -c 通過 fff pan 例如 ack 指定 style

分支指令

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


分支指令占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(最大移動地址)

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