2022-01-13 · 2분
专用寄存器
关于 CPU 专用寄存器的学习笔记——累加器、程序计数器、指令寄存器、MAR、MBR、状态/数据/地址寄存器——以及用户可见与用户不可见的区分。
2021-11-07 · 1분
这篇文章发布已超过两年,内容可能已过时。
什么是栈帧(Stack Frame)?
What's the stack frame?
栈帧(Stack Frame)是指函数被调用时,为区分该函数自己的栈区域而产生的区域。这个空间保存与函数相关的局部变量、参数,在函数调用时分配,函数结束时消亡。
函数被调用时,栈里会保存函数的参数、调用结束后要返回的返回地址值、函数中声明的局部变量等。像这样依次保存在栈区域的函数调用信息就叫栈帧(Stack Frame)。多亏这个栈帧,函数调用全部结束后,才能回到该函数被调用之前的状态。
push rbp, mov rbp, rsp
!> ****](https://eliez3r.github.io/post/2019/10/16/study-system.Stack-Frame.html)
用 push rbp 把函数的 rbp 保存到栈上。再把 rsp 复制到 rbp,从而把 rsp 设为 rbp 地址。由于 rbp 表示函数的基准点,以 rbp 为基准就能轻松知道 RET、argc、argv、函数局部变量等的位置。## 2. 函数尾声(Epilog) 函数尾声是自己的函数结束再返回时整理栈的过程。就是让它回到原来的状态。旁边用的是 mov eax, 0x0 pop rbp , ret,而 le — study-system.Stack-Frame.html
https://blog.naver.com/hermet/56227646
原文(韩语): tistory — 发布于 2021-11-07,已迁移至本博客。本翻译由 AI 协助完成。
…