
2020-11-19(栈帧)
发布日期:2021-05-07 12:06:11
浏览次数:23
分类:技术文章
本文共 317 字,大约阅读时间需要 1 分钟。
今天看到几句比较经典语句:
每个函数自己的这片区域称为帧,由于这些帧都在栈上,所以又被称为栈帧。栈的内存区域不一定固定,而且随着每次调用的路径不同,栈帧的位置也会不同。所以引入一个寄存器来专门存储当前栈帧的位置,即ebp,称为帧指针。push ebp
mov ebp,esp 可以看出,ebp在初始化后实际上执行的是父栈帧地址的存储位置,因此*ebp形成了一个链表,代表一层层函数的调用链。编译器也可以通过跟踪每个计算指令执行时栈的位置,从而直接越过ebp,而使用栈指针esp来引用局部变量。这样就能节省每次保存ebp时所需要的时间,且增加了一个通用寄存器
因此现在有两种函数:一是有帧指针的函数,二是经过优化后没有帧指针的函数。发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月11日 17时48分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
眼睛跟随鼠标转动的小黄人 html+css+js
2019-03-04
平均年龄,,数字求和
2019-03-04
简单的字符串操作(注意要点)
2019-03-04
统计字符数
2019-03-04
Vue Element UI Upload 上传多张图片
2019-03-04
JS数据类型的判断
2019-03-04
实现一个简易Vue(三)Compiler
2019-03-04
仿小米商城(上)
2019-03-04
仿小米商城(下)
2019-03-04
【30】kotlin 闭包
2019-03-04
文件md5怎么会变化
2019-03-04
好玩的editText
2019-03-04
自动安装服务2
2019-03-04
android 用action拦截打电话界面
2019-03-04
错误: 编码GBK的不可映射字符
2019-03-04
Python-Url编码和解码
2019-03-04