问题描述
我正在学习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 (将#修改为@)