组装中的尖头

时间:2018-10-21 06:56:59

标签: assembly mips

我试图使用MARS 4.5在mips汇编中编写fibonacci函数,得到了一些有线连接,下面有一个性能良好的版本,但是当我将第1行的代码替换为第2行时(然后消除代码)在第1行中),aways返回1作为结果,为什么?造成差异的原因是什么?

.data   

prompt1 : .asciiz "Input a integer : \n"
prompt2 : .asciiz "The result is : \n"

.text
    .globl main

main :
    li  $v0  4
    la  $a0  prompt1
    syscall 

    li  $v0  5
    syscall 

    move  $a0  $v0

    jal  fib

    move  $t0  $v0

    li    $v0  4
    la    $a0  prompt2
    syscall

    li    $v0  1
    move  $a0  $t0
    syscall

    li  $v0  10
    syscall

fib :
    subi  $sp  $sp  12
    sw    $ra  0($sp)
    sw    $a0  4($sp)

    li   $v0  1               ############# line 1
    beq  $a0  1  final
    beq  $a0  2  final

    subi  $a0  $a0  1
    jal   fib

    sw    $v0  8($sp)

    lw    $a0  4($sp)
    subi  $a0  $a0  2
    jal   fib

    lw    $t1  8($sp)
    add   $v0  $v0  $t1


final :

       ###############                    line 2

    lw  $ra  0($sp)

    addi  $sp  $sp  12
    jr    $ra

0 个答案:

没有答案