// chapter1.4.1.cpp : 定义控制台应用程序的入口点。//
#include "stdafx.h"#include<iostream>
int _tmain(int argc, _TCHAR* argv[]){ int sum=0,val=1; while(val <=10) { sum+=val; ++val; } std::cout<<"Sum of 1 to 10 inclusive is " << sum<<std::endl; return 0;}
debug
od
004114B0 55 push ebp004114B1 8BEC mov ebp, esp004114B3 81EC D8000000 sub esp, 0D8004114B9 53 push ebx004114BA 56 push esi004114BB 57 push edi004114BC 8DBD 28FFFFFF lea edi, dword ptr [ebp-D8]004114C2 B9 36000000 mov ecx, 36004114C7 B8 CCCCCCCC mov eax, CCCCCCCC004114CC F3:AB rep stos dword ptr es:[edi]004114CE C745 F8 0000000>mov dword ptr [ebp-8], 0 ; sum=0004114D5 C745 EC 0100000>mov dword ptr [ebp-14], 1 ; val=1004114DC 837D EC 0A cmp dword ptr [ebp-14], 0A004114E0 7F 14 jg short 004114F6 ; 大于退出004114E2 8B45 F8 mov eax, dword ptr [ebp-8]004114E5 0345 EC add eax, dword ptr [ebp-14] ; sum+=val004114E8 8945 F8 mov dword ptr [ebp-8], eax004114EB 8B45 EC mov eax, dword ptr [ebp-14]004114EE 83C0 01 add eax, 1004114F1 8945 EC mov dword ptr [ebp-14], eax004114F4 ^ EB E6 jmp short 004114DC004114F6 8BF4 mov esi, esp004114F8 A1 08A34100 mov eax, dword ptr [<&MSVCP90D.std::>004114FD 50 push eax004114FE 8BFC mov edi, esp00411500 8B4D F8 mov ecx, dword ptr [ebp-8] ; sum00411503 51 push ecx00411504 68 00784100 push 00417800 ; ASCII "Sum of 1 to 10 inclusive is "00411509 8B15 04A34100 mov edx, dword ptr [<&MSVCP90D.std::>; MSVCP90D.std::cout0041150F 52 push edx00411510 E8 49FCFFFF call 0041115E00411515 83C4 08 add esp, 800411518 8BC8 mov ecx, eax0041151A FF15 00A34100 call dword ptr [<&MSVCP90D.std::basic>; MSVCP90D.std::basic_ostream<char,std::char_traits<char> >::operator<<00411520 3BFC cmp edi, esp00411522 E8 87FCFFFF call 004111AE00411527 8BC8 mov ecx, eax00411529 FF15 FCA24100 call dword ptr [<&MSVCP90D.std::basic>; MSVCP90D.std::basic_ostream<wchar_t,std::char_traits<wchar_t> >::operator<<0041152F 3BF4 cmp esi, esp00411531 E8 78FCFFFF call 004111AE00411536 33C0 xor eax, eax ; 返回值00411538 5F pop edi00411539 5E pop esi0041153A 5B pop ebx0041153B 81C4 D8000000 add esp, 0D800411541 3BEC cmp ebp, esp00411543 E8 66FCFFFF call 004111AE00411548 8BE5 mov esp, ebp0041154A 5D pop ebp0041154B C3 retn
ida
.text:004114B0 ; =============== S U B R O U T I N E =======================================.text:004114B0.text:004114B0 ; Attributes: bp-based frame.text:004114B0.text:004114B0 _wmain proc near ; CODE XREF: j__wmainj.text:004114B0.text:004114B0 var_D8 = byte ptr -0D8h.text:004114B0 val = dword ptr -14h.text:004114B0 sum = dword ptr -8.text:004114B0.text:004114B0 push ebp.text:004114B1 mov ebp, esp.text:004114B3 sub esp, 0D8h.text:004114B9 push ebx.text:004114BA push esi.text:004114BB push edi.text:004114BC lea edi, [ebp+var_D8].text:004114C2 mov ecx, 36h.text:004114C7 mov eax, 0CCCCCCCCh.text:004114CC rep stosd.text:004114CE mov [ebp+sum], 0.text:004114D5 mov [ebp+val], 1.text:004114DC.text:004114DC addinwhile: ; CODE XREF: _wmain+44j.text:004114DC cmp [ebp+val], 0Ah.text:004114E0 jg short printresult.text:004114E2 mov eax, [ebp+sum].text:004114E5 add eax, [ebp+val].text:004114E8 mov [ebp+sum], eax.text:004114EB mov eax, [ebp+val].text:004114EE add eax, 1.text:004114F1 mov [ebp+val], eax.text:004114F4 jmp short addinwhile.text:004114F6 ; ---------------------------------------------------------------------------.text:004114F6.text:004114F6 printresult: ; CODE XREF: _wmain+30j.text:004114F6 mov esi, esp.text:004114F8 mov eax, ds:__imp_?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z ; std::endl(std::basic_ostream<char,std::char_traits<char>> &).text:004114FD push eax.text:004114FE mov edi, esp.text:00411500 mov ecx, [ebp+sum].text:00411503 push ecx.text:00411504 push offset aSumOf1To10Incl ; "Sum of 1 to 10 inclusive is ".text:00411509 mov edx, ds:__imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A ; std::basic_ostream<char,std::char_traits<char>> std::cout.text:0041150F push edx.text:00411510 call j_??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z ; std::operator<<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,char const *).text:00411515 add esp, 8.text:00411518 mov ecx, eax.text:0041151A call ds:__imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z ; std::basic_ostream<char,std::char_traits<char>>::operator<<(int).text:00411520 cmp edi, esp.text:00411522 call j___RTC_CheckEsp.text:00411527 mov ecx, eax.text:00411529 call ds:__imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z ; std::basic_ostream<char,std::char_traits<char>>::operator<<(std::basic_ostream<char,std::char_traits<char>> & (*)(std::basic_ostream<char,std::char_traits<char>> &)).text:0041152F cmp esi, esp.text:00411531 call j___RTC_CheckEsp.text:00411536 xor eax, eax.text:00411538 pop edi.text:00411539 pop esi.text:0041153A pop ebx.text:0041153B add esp, 0D8h.text:00411541 cmp ebp, esp.text:00411543 call j___RTC_CheckEsp.text:00411548 mov esp, ebp.text:0041154A pop ebp.text:0041154B retn.text:0041154B _wmain endp.text:0041154B.text:0041154B ; ---------------------------------------------------------------------------
release
od
转载于:https://www.cnblogs.com/nanshouyong326/archive/2010/06/18/1760437.html
