MIPS小记

汇编

from my wp blog

MIPS

获取一个32位整数

lui $s0, 61
ori $s0, 1234

不使用addi:addi会将16位数最左位补全为32位


无条件跳转

j 10000

先左移两位,再将PC前4位放到前面,构成绝对目标地址


条件跳转

bne $s0, $s1, Exit

Exit左移两位,跳转相对于PC的地址(pc+Exit<<2),用于循环loop和if中


条件跳转不能远跳,用无条件代替

beq $s0, $s1, L1
...
bne $s0, $s1, L2
j L1
L2;

范围检查

if($a1>=$t2 && $a1<0) goto indexOutOfBounds

sltu $t0, $a1, $t2 #Temp 

reg$t0=0 if k>=length or k<0

beq$ t0, $zero, IndexOutofBounds

你可能感兴趣的:(MIPS小记)