[this]是什么?
Auhor:zfive5(zidong)
Email:zfive5@yahoo.com.cn
前些日子房东要涨价,干脆就搬到公司宿舍来住,从年前到现在高兴和不高兴的事情也一个个发生,现在项目开始忙开了(开始加班,人在忙的时候可以淡忘一些东西),仿佛回到了3年前,工作基本还能应付,但每天还得工作到很晚,经历这次搬家决定以后借书看,一来可以省钱,二来发现这样看书更快了,三来发现将来搬家会很方便的,不会发生邮寄八个大箱子回天津挨家人唠叨.
在vs2005下看它的一段汇编代码,发现这个很有些迷惑,不过很快解惑了
class A
{
public:
int i;
A()
004114A0 55 push ebp
004114A1 8B EC mov ebp,esp
004114A3 81 EC CC 00 00 00 sub esp,0CCh
004114A9 53 push ebx
004114AA 56 push esi
004114AB 57 push edi
004114AC 51 push ecx
004114AD 8D BD 34 FF FF FF lea edi,[ebp-0CCh]
004114B3 B9 33 00 00 00 mov ecx,33h
004114B8 B8 CC CC CC CC mov eax,0CCCCCCCCh
004114BD F3 AB rep stos dword ptr es:[edi]
004114BF 59 pop ecx
004114C0 89 4D F8 mov dword ptr [ebp-8],ecx
{
i=0;
004114C3 8B 45 F8 mov eax,dword ptr [this]
004114C6 C7 00 00 00 00 00 mov dword ptr [eax],0
}
004114CC 8B 45 F8 mov eax,dword ptr [this]
004114CF 5F pop edi
004114D0 5E pop esi
004114D1 5B pop ebx
004114D2 8B E5 mov esp,ebp
004114D4 5D pop ebp
004114D5 C3 ret
}
红字【this】是什么,当然如果对了C++了解的人肯定知道它就是cx,this只是编译器给起的名字,在另一个反编译器IDA中汇编出来的代码一切疑惑都会烟消云散了,代码如下:
.text:004114A0 A__A proc near ; CODE XREF: j_A__Aj
.text:004114A0
.text:004114A0 var_CC = dword ptr -0CCh
.text:004114A0 var_8 = dword ptr -8
.text:004114A0
.text:004114A0 push ebp
.text:004114A1 mov ebp, esp
.text:004114A3 sub esp, 0CCh
.text:004114A9 push ebx
.text:004114AA push esi
.text:004114AB push edi
.text:004114AC push ecx
.text:004114AD lea edi, [ebp+var_CC]
.text:004114B3 mov ecx, 33h
.text:004114B8 mov eax, 0CCCCCCCCh
.text:004114BD rep stosd
.text:004114BF pop ecx
.text:004114C0 mov [ebp+var_8], ecx
.text:004114C3 mov eax, [ebp+var_8]
.text:004114C6 mov dword ptr [eax], 0
.text:004114CC mov eax, [ebp+var_8]
.text:004114CF pop edi
.text:004114D0 pop esi
.text:004114D1 pop ebx
.text:004114D2 mov esp, ebp
.text:004114D4 pop ebp
.text:004114D5 retn
.text:004114D5
.text:004114D5 A__A endp
这样证实【this】就是【ebp-8】,其实如果学过汇编语言的话,直接分析两个指令89 4D F8、8B 45 F8就可以了,关于mov指令的可以去查看8086的汇编书就能得到目的和源是一个东西。
学习高层的东西太多了,发现真得变木了。。。。。。
分享到:
相关推荐
7.this.$emit 的返回值是什么?如果需要返回值该怎么办? 8.filter中的this是什么? 9. v-if 和 v-show 的区别 10.在列表组件中添加 key 属性的作用? 11.为什么不建议用 index 作为 key 呢? 12.数据响应式(双向...
1.this是什么? 函数调用的时候会创建上下文,this 是组成上下文的一部分。因此每次函数被调用都会产生新的this,既this的值就是调用当前函数的对象。 2.作为普通函数在全局作用域中被使用 在全局作用域当中,...
首先,我们为什么要学习this? 1. this使用频率很高,如果我们不懂this,那么在看别人的代码或者是源码的时候,就会很吃力。 2. 工作中,滥用this,却没明白this指向的是什么,而导致出现问题,但是自己却不知道...
三年级下册英语课件-Unit 5 Lesson 1 Is this your classroom?
Unit 3 Is this your pencil?句型透析 (新版)人教新目标版.doc
四年级英语下册 Unit 3 Is this your skirt?备课教案 人教PEP版.doc
1.关于this.$refs的使用场景 如果ref属性加在普通元素上,那么this.$refs.name则指向该DOM元素 ...2.为什么有时候通过this.$refs.name来获取会报错? 一个比较常见的场景:在一个弹窗打开的时候立刻通过this.$refs来
js的this是什么?关于这个东西,博客园里面有太多的解释了,不过,本人看了一下,感觉对this解释的有点复杂了,因此,本人在此给this一个简单易于理解的定义。 this其实是js的一个对象,至于是什么对象呢?很简单,...
前端中this的含义
河北省围场县棋盘山中学七年级英语上册《第4课时 Unit 2 Is this your pencil?(总第10课时)》学案(无答案) 人教新目标版
Who is this book for? Who should probably back away from this book? If you can answer “yes” to all of these: We’ll help you learn how to write JavaScript code that makes web pages do all kinds of ...
$this-是什么意思 我们一般是先声明一个类,然后用这个类去实例化对象! 但是,当我们在声明这个类的时候,想在类本身内部使用本类的属性或者方法。应该怎么表示呢?
this的作用是什么
这句话就是进行一个属性的申明与赋值,这里,我们肯定会问到,this是什么?为什么可以使用this.x来进行申明与赋值属性呢? 其实this代表的就是我们刚刚实例化出来的obj,就相当于我们使用obj去调用了构造函数A里面的...
牛津小学英语 1BUnit 5 What’s this?Story time课件.zip
Listen to This 就是按照这两个大纲的要求,根据中国英语教学的特点而编写的一套听力教程。 整套教程共分为三册。第一册适合大学一年级学生或英语初学者使用;第二册的对象是大学二年级学生和有中等英语水平的自学...
第 37 题:谈谈你对 this 指向的了解?.doc
C++中this指针的用法C++中this指针的用法C++中this指针的用法C++中this指针的用法C++中this指针的用法C++中this指针的用法C++中this指针的用法C++中this指针的用法C++中this指针的用法
PSP使用GPS导航自制软件MapThis v0.5.20.PSP使用GPS导航自制软件MapThis v0.5.20
C++this指针常用概念,this指针的使用,this例子,this指针如何传递给类中函数