_TEXT SEGMENT ??0my_class@@QAE@XZ PROC
push ebp ; 保存旧的ebp
mov ebp, esp ; ebp保存当前栈的位置
sub esp, ccH ; 给栈分配ccH个字节
push ebx ; 保存常用寄存器
push esi
push edi
push ecx
lea edi, DWORD PTR [ebp-ccH] ; 从分配的位置开始
mov ecx, 33H ; 写33H个ccccccccH
mov eax, ccccccccH ; 也就是33H*4H=ccH,正好是分配的大小
rep stosd ; 从而把整个栈上当前分配的空间用ccH填满
pop ecx
mov DWORD PTR [ebp-8], ecx ; 按照约定,一般用ECX保存this指针
; 把this存入到ebp-8,并不是很必要,因为这是Debug版本
; 10 : {
; 11 : m_member = 1;
mov eax, DWORD PTR [ebp-8] ; eax中存放this
mov DWORD PTR [eax], 1 ; this的头四个byte是m_member的内容
; 12 : }
mov eax, DWORD PTR [ebp-8] ; 多余的一句话,可以优化掉
pop edi
pop esi
pop ebx
mov esp, ebp ; 恢复esp,因此就算是中间栈运算出错,最后也不会导致灾难性的结果,只要ebp还是正确的
pop ebp
ret 0
??0my_class@@QAE@XZ ENDP
|