社区
汇编语言
帖子详情
请问这句话什么意思?“mov ecx, DWORD PTR _this$[ebp]”
wtller
2008-02-21 02:49:28
谢谢!
...全文
986
11
打赏
收藏
请问这句话什么意思?“mov ecx, DWORD PTR _this$[ebp]”
谢谢!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
moonbit2077
2009-05-19
打赏
举报
回复
[Quote=引用 4 楼 wtller 的回复:]
请问,“ebp+XXX”,这个XXX是什么?_this$?好像太大了吧?
现在我已经知道大概意思了,是在操作ebp,只是俺想不通_this$+ebp偏移也太大了吧。
[/Quote]
在栈里,地址不大(高)才怪撒。
meiZiNick
2008-05-01
打赏
举报
回复
好像没那么简单,呵呵.
BMCRNET
2008-02-25
打赏
举报
回复
学习了!!!!!!!!!!
alan001
2008-02-23
打赏
举报
回复
this 就是运行中 类在内存中的指针
pig4210
2008-02-23
打赏
举报
回复
同意。
_this$其实是反汇编器给出的一个名称罢了,命名了一个局部变量。其实它可以叫arg0,arg1,叫XXX都一样。
反汇编器认为这个变量被当作一个this使用,那它就这么命名喽。当然,你人为地修改它的名称也可以。
就VC程序默认情况来说,this指针靠ecx传递进成员函数,因为ecx在函数体中可能需要使用而发生变化,所以一般在函数初始时就把ecx赋给一个局部变量(这个局部变量不是我们写程序时定义的,而是编译器定义的),那么这个局部变量在这个函数作用范围内就被当作this来用。
因为局部变量一般都用ebp来做基址。所以[ebp+XXX]便指向了某局部变量。
mov ecx, DWORD PTR _this$[ebp] 与mov ecx, DWORD PTR [ebp+_this$]等价,
如果你觉得_this$混淆了你的视觉,那你改成mov ecx, DWORD PTR [ebp+argX]好了。
另外,楼主用的什么反汇编器?我的IDA从来也不会识别出this指针来啊。。。从来都是我自己N命名。
cnzdgs
2008-02-22
打赏
举报
回复
“ebp+XXX”的意思是ebp加上一个数,这个数是编译器根据程序中函数的参数传递规则和函数的参数个数及次序来确定的。
例如void __cdecl TestClass::TestFunction(void),这个函数没有其它参数,只有一个this指针,那么这个xxx就应该是8。(ebp+0是原ebp,ebp+4是函数返回地址,ebp+8是第1参数)
rularys
2008-02-22
打赏
举报
回复
这个是反汇编出来的么?读一下反汇编器的帮助啊
wtller
2008-02-22
打赏
举报
回复
请问,“ebp+XXX”,这个XXX是什么?_this$?好像太大了吧?
现在我已经知道大概意思了,是在操作ebp,只是俺想不通_this$+ebp偏移也太大了吧。
cnzdgs
2008-02-21
打赏
举报
回复
_this$[ebp]和_this$这两种写法都可以,意思一样,编译出来都是[ebp+XXX]。ebp专门用来访问栈中的数据,访问参数用ebp+偏移量,访问局部变量用ebp-偏移量。
wtller
2008-02-21
打赏
举报
回复
谢谢LS!
我主要就是_this&[ebp]想不通。
如果_this&代表一个32bit的线性空间的逻辑地址,ebp是frame point,也是一个32bit的线性空间的逻辑地址。
那么_this&[ebp]是什么意思?用ebp来做index,来偏移_this$.....这也偏得太大了吧!!
cnzdgs
2008-02-21
打赏
举报
回复
函数中定义了_this$参数,这条指令的意思是把这个参数读到ecx里面。
这是一个类的成员函数,this是类的实例指针,指令的意思是将类的实例指针装入ecx。后面会使用[ecx+XXX]的形式访问类成员。
ebp
函数堆栈esp_函数参数压栈,栈帧
ebp
,esp怎样移动的?
压栈一次esp-4,
ebp
不变esp是栈顶指针寄存器,堆栈操作只和esp有关比如有一个函数a,有两个参数,一般是这样的PUSH 1 参数2压栈,esp-4PUSH 2 参数1压栈,esp-4CALL a 调用a:PUSH
EBP
保存
ebp
MOV
EBP
,ESP 改变栈帧,以后访问参数通过
ebp
,访问局部变量通过espSUB ESP,8 分配局部变量空间...ADD ESP,8POP
EBP
恢复...
汇编(五)堆栈平衡和寻址方式-ESP
EBP
文章目录前言环境函数构架模型编写代码:堆栈传参ESP寻址堆栈平衡
EBP
寻址 前言 本文汇总五个重点,为了学起来更加方便我将他们按照递进关系重新排列。分别是: 函数、传参、ESP寻址、堆栈平衡、
EBP
寻址。 看完本文就能感受到我这么安排的用意。 环境 为了更加深入理解,先假设你接到了一项任务:用汇编语言实现一个两数相加求结果的功能,并且要多次使用。 函数 因为要多次使用该功能,所以我们要选择函数来解决。和c语言差不多,汇编的函数也是在一个“模块”中调用另一个“模块”。这只是笼统的介绍,下面演示一下实际操作:
X86汇编快速入门
本文翻译自:http://www.cs.virginia.edu/~evans/cs216/guides/x86.html 本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令、逻辑计算指令、算数运算指令),以及函数的调用规则。个人认为:在理解了本文后,基本可以无障碍地阅读绝大部分标准X86汇编程序。当然...
rep stos d
word
ptr
es:[edi]
本文链接:https://blog.csdn.net/ypist/article/details/8467163今天读代码时,忽然跳出如下一条指令==>>汇编代码: rep stos d
word
ptr
es:[edi] 在网上查了相关资料显示:/************************************************************/lea...
汇编语言
21,500
社区成员
41,619
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章