所以這是一個使用遞歸的Fibonacci程序, 但最後還是出現了「分段錯誤(代碼轉儲)」。是什麼原因造成的 代碼:nasm program:遞歸分段錯誤
_start:
mov eax, 4 ; ask for a number
mov ebx, 1
mov ecx, prompt
mov edx, promptLen
int 80h
mov eax, 3 ; scan input
mov ebx, 0
mov ecx, n
int 80h
sub byte [n], 30h
mov esi, 1
push word 0
push word [n]
call fibo
exit:
mov eax, 1
mov ebx, 0
int 80h
fibo:
mov ebp, esp
mov edi, [ebp+6]
add byte [ebp+6],30h
mov eax, 4 ; print number
mov ebx, 1
lea ecx, [ebp+6]
mov edx, 1
int 80h
sub byte [ebp+6],30h
mov eax, 4 ; print space
mov ebx, 1
mov ecx, space
mov edx, 1
int 80h
cmp byte [ebp+4],0
je bye
add [ebp+6],esi
mov esi, edi
push word [ebp+6]
dec word [ebp+4]
push word [ebp+4]
call fibo
bye:
ret 4
SAMPE輸出:
Enter a number: 5
0 1 1 2 3 5 Segmentation fault (code dumped)
輸出數字是正確的,但什麼原因導致了賽格故障?
gdb是否能夠告訴你導致seg故障的確切指令? –
我不知道gdb是什麼。抱歉。 –
Linux調試器。 –