倍数关系
(一般来讲)1个地址单元存储有有8 bits(8比特)- 8 bits = 1 B(1字节)
- 1024 B = 1 KB(1千字节)
- 1024 KB = 1 MB(1兆字节)
- 1024 MB = 1 GB(1吉字节)
- 1024 GB = 1 TB(1太字节)
- 210 = 1024
j
指令
j
指令属于J指令范围,有26位用于存储跳转的地址,当跳转时,低位补两位0(因为指令存储地址时字(32bits)对齐的),高位补PC+4的高4位(伪直接寻址),故跳转范围由26位决定。
故,可跳转226+2=228个地址单元,即228+3bits = 256 MB。
jr
指令
jr
指令属于R指令,采用 寄存器寻址方式寻址,跳转到$ra
寄存器保存的地址,因为$ra
寄存器保存32位数据,故可跳转地址范围大小是232个地址单元,即232+3 = 235bits = 4 GB的数据内容范围。
beq
指令
beq
指令属于I型指令,跳转到 label 所指的代码,采用PC相对寻址。beq
指令中imm立即数保存的是 imm = (label 所指代码行行数)-(当前代码行+1)
,寻址跳转时对imm左移两位(相当于乘4,由行数差转变为地址单元差)再进行符号扩展,最后加(PC +4)得到最终要跳转到的地址单元。故,跳转代码范围是216+2个地址单元,即216+2+3 bits = 256 KB。