chapter3.4

// chapter3.3.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <vector>
using std::vector;


int _tmain(int argc, _TCHAR* argv[])
{
 vector<int> ivec(10);

 for(vector<int>::iterator iter = ivec.begin();iter!=ivec.end();++iter)
 {
  *iter = 0;
 }
 
 return 0;
}

 

debug

od

 

ida

.text:00412260
.text:00412260     ; =============== S U B R O U T I N E =======================================
.text:00412260
.text:00412260     ; Attributes: bp-based frame
.text:00412260
.text:00412260     _wmain          proc near               ; CODE XREF: j__wmainj
.text:00412260
.text:00412260     temend2         = dword ptr -130h
.text:00412260     temend1         = dword ptr -12Ch
.text:00412260     compareresult   = byte ptr -121h
.text:00412260     temend          = byte ptr -118h
.text:00412260     var_104         = dword ptr -104h
.text:00412260     tembegin        = byte ptr -38h
.text:00412260     ivec            = byte ptr -24h
.text:00412260     nextseh         = dword ptr -0Ch
.text:00412260     exceptinlevel   = dword ptr -4
.text:00412260
.text:00412260 000                 push    ebp
.text:00412261 004                 mov     ebp, esp
.text:00412263 004                 push    0FFFFFFFFh
.text:00412265 008                 push    offset sub_419FFB
.text:0041226A 00C                 mov     eax, large fs:0
.text:00412270 00C                 push    eax
.text:00412271 010                 sub     esp, 124h
.text:00412277 134                 push    ebx
.text:00412278 138                 push    esi
.text:00412279 13C                 push    edi
.text:0041227A 140                 lea     edi, [ebp+temend2]
.text:00412280 140                 mov     ecx, 49h
.text:00412285 140                 mov     eax, 0CCCCCCCCh
.text:0041228A 140                 rep stosd
.text:0041228C 140                 mov     eax, __security_cookie
.text:00412291 140                 xor     eax, ebp
.text:00412293 140                 push    eax
.text:00412294 144                 lea     eax, [ebp+nextseh]
.text:00412297 144                 mov     large fs:0, eax
.text:0041229D 144                 push    0Ah
.text:0041229F 148                 lea     ecx, [ebp+ivec]
.text:004122A2 148                 call    j_??A?$vector@HV?$allocator@H@std@@@std@@QAEAAHI@Z ; std::vector<int,std::allocator<int>>::operator[](uint)
.text:004122A7 144                 mov     [ebp+exceptinlevel], 0
.text:004122AE 144                 lea     eax, [ebp+tembegin]
.text:004122B1 144                 push    eax
.text:004122B2 148                 lea     ecx, [ebp+ivec]
.text:004122B5 148                 call    j_?begin@?$vector@HV?$allocator@H@std@@@std@@QAE?AV?$_Vector_iterator@HV?$allocator@H@std@@@2@XZ ; std::vector<int,std::allocator<int>>::begin(void)
.text:004122BA 144                 mov     byte ptr [ebp+exceptinlevel], 1
.text:004122BE 144                 jmp     short loc_4122C8
.text:004122C0     ; ---------------------------------------------------------------------------
.text:004122C0
.text:004122C0     loc_4122C0:                             ; CODE XREF: _wmain+CAj
.text:004122C0 144                 lea     ecx, [ebp+tembegin]
.text:004122C3 144                 call    j_??0?$_Vector_const_iterator@HV?$allocator@H@std@@@std@@QAE@ABV01@@Z ; std::_Vector_const_iterator<int,std::allocator<int>>::_Vector_const_iterator<int,std::allocator<int>>(_Vector_const_iterator<int,std::allocator<int>>::_Vector_const_iterator<int,std::allocator<int>> const &)
.text:004122C8
.text:004122C8     loc_4122C8:                             ; CODE XREF: _wmain+5Ej
.text:004122C8 144                 lea     eax, [ebp+temend]
.text:004122CE 144                 push    eax
.text:004122CF 148                 lea     ecx, [ebp+ivec]
.text:004122D2 148                 call    j_?end@?$vector@HV?$allocator@H@std@@@std@@QAE?AV?$_Vector_iterator@HV?$allocator@H@std@@@2@XZ ; std::vector<int,std::allocator<int>>::end(void)
.text:004122D7 144                 mov     [ebp+temend1], eax
.text:004122DD 144                 mov     ecx, [ebp+temend1]
.text:004122E3 144                 mov     [ebp+temend2], ecx
.text:004122E9 144                 mov     byte ptr [ebp+exceptinlevel], 2
.text:004122ED 144                 mov     edx, [ebp+temend2]
.text:004122F3 144                 push    edx
.text:004122F4 148                 lea     ecx, [ebp+tembegin]
.text:004122F7 148                 call    j_??9?$_Vector_const_iterator@HV?$allocator@H@std@@@std@@QBE_NABV01@@Z ; std::_Vector_const_iterator<int,std::allocator<int>>::operator!=(std::_Vector_const_iterator<int,std::allocator<int>> const &)
.text:004122FC 144                 mov     [ebp+compareresult], al
.text:00412302 144                 mov     byte ptr [ebp+exceptinlevel], 1
.text:00412306 144                 lea     ecx, [ebp+temend]
.text:0041230C 144                 call    j_??1?$_Vector_iterator@HV?$allocator@H@std@@@std@@QAE@XZ ; std::_Vector_iterator<int,std::allocator<int>>::~_Vector_iterator<int,std::allocator<int>>(void)
.text:00412311 144                 movzx   eax, [ebp+compareresult]
.text:00412318 144                 test    eax, eax
.text:0041231A 144                 jz      short release
.text:0041231C 144                 lea     ecx, [ebp+tembegin]
.text:0041231F 144                 call    j_??D?$_Vector_iterator@HV?$allocator@H@std@@@std@@QBEAAHXZ ; std::_Vector_iterator<int,std::allocator<int>>::operator*(void)
.text:00412324 144                 mov     dword ptr [eax], 0
.text:0041232A 144                 jmp     short loc_4122C0
.text:0041232C     ; ---------------------------------------------------------------------------
.text:0041232C
.text:0041232C     release:                                ; CODE XREF: _wmain+BAj
.text:0041232C 144                 mov     byte ptr [ebp+exceptinlevel], 0
.text:00412330 144                 lea     ecx, [ebp+tembegin]
.text:00412333 144                 call    j_??1?$_Vector_iterator@HV?$allocator@H@std@@@std@@QAE@XZ ; std::_Vector_iterator<int,std::allocator<int>>::~_Vector_iterator<int,std::allocator<int>>(void)
.text:00412338 144                 mov     [ebp+var_104], 0
.text:00412342 144                 mov     [ebp+exceptinlevel], 0FFFFFFFFh
.text:00412349 144                 lea     ecx, [ebp+ivec]
.text:0041234C 144                 call    j_??1?$vector@HV?$allocator@H@std@@@std@@QAE@XZ ; std::vector<int,std::allocator<int>>::~vector<int,std::allocator<int>>(void)
.text:00412351 144                 mov     eax, [ebp+var_104]
.text:00412357 144                 push    edx
.text:00412358 148                 mov     ecx, ebp
.text:0041235A 148                 push    eax
.text:0041235B 14C                 lea     edx, dword_412388
.text:00412361 14C                 call    j_@_RTC_CheckStackVars@8 ; _RTC_CheckStackVars(x,x)
.text:00412366 14C                 pop     eax
.text:00412367 148                 pop     edx
.text:00412368 144                 mov     ecx, [ebp+nextseh]
.text:0041236B 144                 mov     large fs:0, ecx
.text:00412372 144                 pop     ecx
.text:00412373 140                 pop     edi
.text:00412374 13C                 pop     esi
.text:00412375 138                 pop     ebx
.text:00412376 134                 add     esp, 130h
.text:0041237C 004                 cmp     ebp, esp
.text:0041237E 004                 call    j___RTC_CheckEsp
.text:00412383 004                 mov     esp, ebp
.text:00412385 004                 pop     ebp
.text:00412386 000                 retn
.text:00412386     _wmain          endp
.text:00412386
.text:00412386     ; ---------------------------------------------------------------------------
.text:00412387                     align 4

posted @ 2010-06-21 11:32  南守拥  阅读(260)  评论(0编辑  收藏  举报