_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
|