终止mips程序集程序mr $ ra

时间:2018-03-26 10:25:11

标签: assembly mips

通常我会用

终止我的程序
li        $v0, 10
syscall

现在,我已经看到很多代码示例,他们通过跳回$ ra寄存器来终止程序。

jr        $ra        

为什么可以像这样终止程序?它取决于编译程序吗?

我最近看到的主要内容是:

主:

    addi    $sp, $sp, -4        # save return adress
    sw  $ra, 0($sp)

    lw  $a0, x              #get some arguments for a function called exp
    lw  $a1, n              #get more args

    jal exp                 #call the function

    move    $s1, $v0

    move    $a0, $s1

    li  $v0, 1               #print return value
    syscall
    lw  $ra, 0($sp)          #here we load the ra for the jr
    addi    $sp, $sp, 4
    jr  $ra

0 个答案:

没有答案