深入探究栈帧、函数调用与异常处理机制
1. 栈帧概述
栈帧是程序中极为重要的资源,用于存储每个函数的返回地址、函数参数以及基于栈的变量。其结构如下:
high |----------| <- top of stack
| |
| Used |
| |
|----------| <- Current frame (rbp)
| | <- Stack pointer (rsp)
|----------|
| |
| Unused |
| |
low |----------|
栈帧本质上是一个从顶部向下增长的内存数组。在 Intel PC 上,入栈操作会使栈指针减小,出栈操作则会使栈指针增大,这表明内存实际上是向下增长的。
System V ABI 规定栈由栈帧组成,每个栈帧的结构如下:
high |----------|
| .... |
|----------|
| arg8 |
|----------|
| arg7 |
|----------|
| ret addr |
|----------| <- Stack pointer (rbp)
|
超级会员免费看
订阅专栏 解锁全文
2811

被折叠的 条评论
为什么被折叠?



