社区
C语言
帖子详情
为什么VS下一个int总是从ebp-8开始,ebp-4对应的4个字节干吗用了?
dpdp_2012
2012-10-10 05:11:30
RT
...全文
533
5
打赏
收藏
为什么VS下一个int总是从ebp-8开始,ebp-4对应的4个字节干吗用了?
RT
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dpdp_2012
2012-10-10
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
1 我记不清了,你可以查一下vc用了防止stackoverflow 机制,在返回地址前插一个checkval。
我不确定是不是这玩意,你可以搜一下。
[/Quote]我也是在想留出这四个字节,是不是和什么缓冲区溢出有关。
大熊猫侯佩
2012-10-10
打赏
举报
回复
ebp+4是返回地址鸟
swlilike
2012-10-10
打赏
举报
回复
ebp-4 是不是存放 ret 的返回地址了?
大熊猫侯佩
2012-10-10
打赏
举报
回复
1 我记不清了,你可以查一下vc用了防止stackoverflow 机制,在返回地址前插一个checkval。
我不确定是不是这玩意,你可以搜一下。
大熊猫侯佩
2012-10-10
打赏
举报
回复
你说的是函数局部变量是吧?这个没有绝对。
因为在函数进入序言后,
ebp->old ebp
ebp+4->ret addr
ebp+8->1st parm
所以ebp-4是可以使用的,至于vc为啥不用,2种可能:
1 做vc专有用途
2 简单无视他,就是不用
VC++函数调用过程汇编分析(基于
vs
2012)
本文详细分析了在
VS
2012环境下C++函数调用过程中的汇编代码,包括栈操作、局部变量管理、参数传递及返回值处理等关键步骤。从
ebp
和esp寄存器的使用、现场保护到内存清理,再到参数入栈、函数内部运算直至返回主函数,全程展示了C++函数调用的底层实现细节。
【C语言】C语言中的函数栈帧
本文深入解析C语言中函数栈帧的结构与运行机制,涵盖栈基础、栈帧定义、内存布局(参数区、返回地址、旧
ebp
、局部变量区)、函数调用全过程(创建与销毁),并结合
VS
2013编译器特性分析栈保护、参数传递(从右向左)、
ebp
/esp寄存器作用及栈对齐等关键技术点。
c语言烫烫烫,每
一个
程序员都会经历的“烫烫烫”
本文详细解释了在C语言编程时,为何会出现“烫烫烫”这一现象。通过分析“烫”的GBK编码0xCCCC与汇编指令
INT
3的机器码相同,以及C语言中未初始化数组在打印时可能遇到的情况,揭示了“烫烫烫”产生的原因。文章还提供了
一个
简单的测试程序来验证这一现象,并讨论了函数堆栈填充与ESP、
EBP
指针的关系。
【Visual Studio】调试时 memcpy 拷贝错误,
VS
竟擅自修改内存
Visual Studio调试器在调试过程中会通过patch策略修改内存中的指令,插入0xCC作为调试标记,导致memcpy复制到目标内存的内容出现偏差。这些修改包括opcode和位移
字节
的替换,属于
VS
特有的调试机制,如JMC、Edit & Continue等,在执行前虽会恢复但拷贝操作已获取 patched 数据。
函数栈帧的创建和销毁
本文深入剖析C语言函数栈帧的创建与销毁全过程,涵盖
ebp
/esp寄存器作用、栈帧五步创建流程(保存调用者栈底、更新栈底、预开辟空间、保护寄存器、初始化填充)、局部变量内存分配、从右向左传参机制、call指令的返回地址压栈、返回值通过eax寄存器传递、以及栈帧销毁时的寄存器恢复与空间回收。所有分析基于
VS
2013编译器的32位汇编级实现。
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章