我有以下汇编程序:
.globl main
main:
push %rbp
mov %rsp, %rbp
movb $8, -1(%rbp)
movw $30, -4(%rbp)
mov -1(%rbp), %rax
add -4(%rbp), %rax
call func
pop %rbp
ret
func:
push %rbp
mov %rsp, %rbp
movl $7, -4(%rbp)
mov -4(%rbp), %rbx
pop %rbp
ret
单步执行程序时,在尝试访问 的值call func
之前,之前是 $0x0800001e`(8 字节,0 字节,0 字节,30 字节),现在显示全零:push %rbp
rbp
>>> x/1xw $rbp-4
0x7fffffffe410: 0x00000000
为什么会出现这种情况?是否rbp
在函数调用之间重置其值(尽管保留其地址)?