当前位置: 首页 > news >正文 【汇编】关于函数调用过程的若干问题 news 2025/2/7 18:37:04 1. 为什么需要bp指针? 因为bp是栈帧的起始地址,函数内的局部栈变量,采用相对bp的内存寻址。不能相对于sp,sp是一直在变的。 2. 函数调用过程? 函数开始,先压栈bp,保存父函数栈底指针bp;再更新bp为sp;再移动sp,分配局部变量内存;再取参数,执行。调用子函数时,压栈参数;调用call压栈pc。子函数重复上述步骤。 其实就是处理好 bp,sp,pc的保存与恢复,bp与sp确定一个函数栈帧。参数传递局部变量分配 这三件事。 参考 《Linux内核 完全注释》第三章C语言程序 查看全文 http://www.mrgr.cn/news/81449.html 相关文章: 【ollama通过命令行启动后如何在网页端查看运行】 查找地理处理工具 Ubuntu 20.04 x64下 编译安装ffmpeg 数据恢复常见故障(四)关键信号的耦合电容撞件后导致SATA前端通信异常 用css和html制作太极图 HTTP/HTTPS ⑤-CA证书 || 中间人攻击 || SSL/TLS ubuntu22.04上安装win10虚拟机,并采用noVNC+frp,让远程通过web访问桌面 pip离线批量安装时报错No matching distribution found for【解决方案】 【ES6复习笔记】箭头函数(5) vulnhub靶场(Os-hacknos-3) 【ES6复习笔记】模板字符串(3) 【C++】设计模式 FreeSql 【Rust自学】7.1. Package、Crate和定义Module 【ES6复习笔记】函数参数的默认值(6) 【Rust自学】6.4. 简单的控制流-if let 【ES6复习笔记】let 和 const 命令(1) 【ES6复习笔记】Promise对象详解(12) 重温设计模式--5、职责链模式 实现 QTreeWidget 中子节点勾选状态的递归更新功能只影响跟节点的状态父节点状态不受影响 单片机:实现可调时钟(附带源码) MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式) Python|Pyppeteer实现自动化获取reCaptcha验证码图片以及提示词(29) echarts地图可视化展示 RSICV国产芯片之CHV208 Datawhale-AI活动2024.12.24
1. 为什么需要bp指针? 因为bp是栈帧的起始地址,函数内的局部栈变量,采用相对bp的内存寻址。不能相对于sp,sp是一直在变的。 2. 函数调用过程? 函数开始,先压栈bp,保存父函数栈底指针bp;再更新bp为sp;再移动sp,分配局部变量内存;再取参数,执行。调用子函数时,压栈参数;调用call压栈pc。子函数重复上述步骤。 其实就是处理好 bp,sp,pc的保存与恢复,bp与sp确定一个函数栈帧。参数传递局部变量分配 这三件事。 参考 《Linux内核 完全注释》第三章C语言程序 查看全文 http://www.mrgr.cn/news/81449.html 相关文章: 【ollama通过命令行启动后如何在网页端查看运行】 查找地理处理工具 Ubuntu 20.04 x64下 编译安装ffmpeg 数据恢复常见故障(四)关键信号的耦合电容撞件后导致SATA前端通信异常 用css和html制作太极图 HTTP/HTTPS ⑤-CA证书 || 中间人攻击 || SSL/TLS ubuntu22.04上安装win10虚拟机,并采用noVNC+frp,让远程通过web访问桌面 pip离线批量安装时报错No matching distribution found for【解决方案】 【ES6复习笔记】箭头函数(5) vulnhub靶场(Os-hacknos-3) 【ES6复习笔记】模板字符串(3) 【C++】设计模式 FreeSql 【Rust自学】7.1. Package、Crate和定义Module 【ES6复习笔记】函数参数的默认值(6) 【Rust自学】6.4. 简单的控制流-if let 【ES6复习笔记】let 和 const 命令(1) 【ES6复习笔记】Promise对象详解(12) 重温设计模式--5、职责链模式 实现 QTreeWidget 中子节点勾选状态的递归更新功能只影响跟节点的状态父节点状态不受影响 单片机:实现可调时钟(附带源码) MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式) Python|Pyppeteer实现自动化获取reCaptcha验证码图片以及提示词(29) echarts地图可视化展示 RSICV国产芯片之CHV208 Datawhale-AI活动2024.12.24