我正在尝试了解有关堆栈和基指针的更多信息。以下示例汇编代码来自 gcc 在 IA32 上编译的二进制文件的 objdump。
08048e0b <func_3>:
8048e0b: 55 push %ebp
8048e0c: 89 e5 mov %esp,%ebp
8048e0e: 83 ec 28 sub $0x28,%esp
8048e11: 8d 45 f0 lea -0x10(%ebp),%eax
8048e14: 89 44 24 0c mov %eax,0xc(%esp)
8048e18: 8d 45 f4 lea -0xc(%ebp),%eax
8048e1b: 89 44 24 08 mov %eax,0x8(%esp)
8048e1f: c7 44 24 04 65 9b 04 movl $0x8049b65,0x4(%esp)
我知道基指针%ebp
是用来引用函数参数和局部变量的。通常正偏移量是传递给函数的参数,负偏移量是局部变量?
上线8048e18: 8d 45 f4 lea -0xc(%ebp),%eax
-0xc(%ebp) 指的是什么?