社区
汇编语言
帖子详情
ESP做栈基址?
godss
2007-03-18 10:18:04
反汇编一个程序,发现里面全是用ESP做的栈基地址,找调用栈都不好找。在调用的API里面是用的正常的EBP,请问这是怎么回事啊?
...全文
263
5
打赏
收藏
ESP做栈基址?
反汇编一个程序,发现里面全是用ESP做的栈基地址,找调用栈都不好找。在调用的API里面是用的正常的EBP,请问这是怎么回事啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
feng1976
2007-03-20
打赏
举报
回复
好多人不都是这样搞得吗?
看个汇编的例子就是啊
combojiang
2007-03-19
打赏
举报
回复
同意楼上
zara
2007-03-19
打赏
举报
回复
用 esp 而不是 ebp, 这个是些高级语言的做法吧. 目的应该是为了增加 ebp 作为寄存器类变量. 由于在函数/子程用会有不少的堆栈操作, 所以, 汇编程序以 esp 来作为指针访问参数或局部变换都不是很合适, 计算当前 esp 和原始值是个比较头痛的事儿. 但这个如果由编译器来做的话, 就很简单了, 它只要设置一个变量, 遇到 push/pop 操作就对其进行调整, 最后再引用参数或局部变量时进行校正就可以了
godss
2007-03-19
打赏
举报
回复
更正一下,也不是用ESP做的栈基地址,ESP依然指向栈顶,局部变量都是用ESP+一个数来寻址的,不象普通的以EBP-来找的。
另外这样做的高级语言是哪些啊?VC不是这样的。
ciahi
2007-03-18
打赏
举报
回复
不是吧~~~
都是用Ebp做栈基址的呀
从汇编看c++中默认构造函数的使用分析
ebp为一个寄存器,总是指向一个函数调用堆栈的栈底,作为
基址
,用偏移量来访问该调用栈上的变量,但这里没有任何变量要访问,因此不起作用 mov ebp,
esp
;这两句的作用是为了保存调用main之前堆栈的
基址
ebp的值,并...
ESP
(栈顶指针)EBP(栈底指针)
(1)
ESP
:栈指针寄存器(extended stack pointer),...(2)EBP:
基址
指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。指在栈的最顶端。 eax一般用来保存函数
ESP
和EBP 栈顶指针和栈底指针
(2)EBP:
基址
指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。 【本次重点内容:了解几个常见的寄存器名字,记住eax一般用来保存函数的返回值,记住
esp
是...
如何判断开辟的空间在栈上?
(1)
ESP
:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。 (2)EBP:
基址
指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈...
ebp 函数堆栈
esp
_函数参数压栈,栈帧ebp,
esp
怎样移动的?
压栈一次
esp
-4,ebp不变
esp
是栈顶指针寄存器,堆栈操作只和
esp
有关比如有一个函数a,有两个参数,一般是这样的PUSH 1 参数2压栈,
esp
-4PUSH 2 参数1压栈,
esp
-4CALL a 调用a:PUSH EBP 保存ebpMOV EBP,
ESP
改变栈帧,...
汇编语言
21,459
社区成员
41,600
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章