我错过了什么?分段故障核心已转储

问题描述

我正在学习AT&T x64 / GNU汇编语法。我正在尝试创建斐波那契函数,但出现错误。我不明白弹出是如何导致错误的。它只是调用恢复的堆栈。

================================================ ===============================================以下代码: 。数据 .text

.fibo: .string "Fibonacci: "
.fibo_ouput: .string "Result of Fibonacci: %d\n"
.user_input: .string "%d"

############################################## #############################################

fibonacci_inout:
    push %rbp
    mov %rsi,%rbp

    mov $.fibo,%rdi
    xor %rax,%rax
    call printf

    subq $8,%rsp
    mov $.user_input,%rax
    lea -8(%rbp),%rsi
    call scanf

    call fibonacci

    mov $.fibo_output,%rdi
    mov %rax,%rsi
    xor %rax,%rax
    call printf

    mov %rbp,%rsp
    pop %rbp # where the error occurs
    ret

############################################## #############################################

fibonacci:
    push %rbp
    mov %rsp,%rbp

    mov %rax,%rbx
    add $2,%rbx
    shl $2,%rbx
    sub %rbx,%rsp
    xor %rcx,%rcx
    mov %rcx,(%rsp,%rcx,4)
    inc %rcx
    mov %rcx,4)
    inc %rcx
    add $2,%rax

############################################# #############################################

fibonacci_loop:
    cmp %rax,%rcx
    jge fibonacci_end

    mov -4(%rsp,4),%rbx
    mov -8(%rsp,8),%rdx
    add %rdx,%rbx
    mov %rbx,4)
    inc %rcx
    jmp fibonacci_loop

############################################# #############################################

fibonacci_end:
    mov %rbp,%rsp
    pop %rbp
    ret

############################################# #############################################

main:
    call fibonacci

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)