this指针,通常是通过ecx传递;gcc是通过堆栈传递的,是最后一个被压栈。
传递this指针是为了访问成员变量。除了虚函数,所有成员函数被编译之后都是全局函数。
mov eax,[ecx] ; 将第一个成员赋给eax
add eax,[ecx+4] ; 再用第一个成员函数的值加上4,可能就是第二个成员的值
new操作符:
编译器将new与delete转换成普通函数。new有以下特点:
1. 只有一个参数(要分配的字节数)
2. 返回值会赋给this指针
3. 会判断返回值是否为空
delete操作符:
与大多数函数差不多,但是最终会调用Free这样的函数。
构造函数:
在分配内存成功以后,才会被调用。一般紧跟着调用构造函数后是分配失败的跳转代码,this复位0
启动函数:
在链接的时候由CRTSRCcrt***.c文件进行链接,由它当中的代码调用main或者WinMain函数。
静态链接:crt0.c
动态链接:crtexe.c
控制台:wincmdln.c