数据加载中……

基本概念:传说的this指针

写一个小例子反汇编找找:

 

class A
{
    public:
        int bb;
        int aa;
        void fun(int _aa){aa = _aa;};
};

 


    A a;
    a.bb = 4;                       //说明: a的地址就是bb的地址,也是this的值。(注意:地址和值的说法)
    a.fun(9);

mov     dword ptr ss:[ebp-8], 4
push    9                                ; 参数1
lea       ecx, dword ptr ss:[ebp-8]        ;隐藏的参数2     this指针 a的地址 bb的地址
call      00401040                     ; fun的地址

 

fun的汇编:
mov     dword ptr ss:[ebp-4], ecx
mov     eax, dword ptr ss:[ebp-4]  ;传说的this指针终于出现了。呵呵
mov     ecx, dword ptr ss:[ebp+8]  ;参数1    9
mov     dword ptr ds:[eax+4], ecx  ;eax+4  aa 的地址

 

太晚了。明天还要上班。今天就研究到这里。睡觉了。

posted on 2007-08-09 01:27 冬天的林 阅读(551) 评论(2)  编辑 收藏 引用 所属分类: C++基础

评论

# re: 基本概念:传说的this指针  回复  更多评论   

mov eax, dword ptr ss:[ebp-4] 是什么意思?
2007-08-09 04:41 |

# re: 基本概念:传说的this指针  回复  更多评论   

mov dword ptr ss:[ebp-4], ecx
mov eax, dword ptr ss:[ebp-4]

现在eax的值就是a的地址。this的值。

mov ecx, dword ptr ss:[ebp+8]
mov dword ptr ds:[eax+4], ecx

eax+4 aa的地址
2007-08-09 09:30 | 冬天的林

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理