我試圖寫一個彙編代碼版本的斐波那契給出第n個斐波那契數並返回它。彙編中的斐波那契實現給出了意想不到的結果
由於某些原因,它存儲斐波納契數字的返回值並添加它們時遇到問題。
我希望它打印第n個斐波那契數。
我對代碼做了一些修改,現在它仍然不正確,但它更接近。現在它告訴我第11次斐波那奇數是48.仍然不正確,但我們正在某處正確嗎?
.text
.globl _fibonacci
_fibonacci:
pushl %ebp
movl %esp,%ebp
push %esi
movl 8(%ebp),%esi
cmp $1,%esi
jle BASE
sub $1,%esi
push %esi
call _fibonacci
add $4,%esp
movl %eax,%edx
sub $1,%esi
push %esi
call _fibonacci
add $4,%esp
add %eax,%edx
movl %edx,%eax
DONE:
pop %esi
pop %ebp
ret
BASE:
mov $1,%eax
jmp DONE
我打電話用C這樣的彙編代碼:
#include <stdio.h>
int fibonacci(int n);
int main(void){
int n=111;
int x=fibonacci(n);
printf("The %d fibonaacci number is %d\n",n,x);
}
該代碼有指數漸近成長..不要那樣做。 –
運行時間對我來說不是一個大問題,我只是想要一些能夠在彙編中給出正確輸出 – NONE