MIPS小记

作者: Amrzs | 来源:发表于2014-06-14 16:21 被阅读139次

    汇编

    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小记

        本文链接:https://www.haomeiwen.com/subject/ejqjtttx.html