在函数开头将旧的基指针保存在堆栈上的意义何在?我是在汇编中使用函数的新手,但到目前为止我还没有看到这样做的意义。它只是被压入堆栈然后在最后弹出,它什么都不做。例如,以下代码无需这样做就可以正常工作:
.section .data
.section .text
.globl _start
.type add, @function
add:
mov %rsp, %rbp
mov 8(%rbp), %rax
mov 16(%rbp), %rdi
add %rax, %rdi
mov %rbp, %rsp
ret
_start:
push $45
push $36
call add
add $16, %rsp
mov $60, %rax
syscall
我知道您可以通过在此示例中使用堆栈指针来进一步简化此操作,但我可以看出这是一种不好的做法。