濡傛灉鍦ㄨ繑鍥炲間負int鐨勫嚱鏁伴噷錛屾紡鎺塺eturn錛屼細鍙戠敓浠涔堟儏鍐碉紵
緙栬瘧宸ュ叿錛欳ode::Blocks 10.05,浠g爜濡備笅鎵紺?/p>
#include <cstdio>
int f()
{
}
int main ()
{
printf("%d ",f());
printf("%d ",f());
printf("%d ",f());
return 0;
}
緙栬瘧鏃訛紝鎻愮ず
In function 'int f()':|
warning: no return statement in function returning non-void|
浣嗘槸鑳界紪璇?br>
Debug鐗堟湰涓嬬粨鏋滃涓嬶細
1 2 2
Release鐗堟湰涓嬬粨鏋?br>0 0 0
涓嬮潰鍒嗘瀽涓涓嬩負浠涔堜負鍙戠敓榪欑鎯呭喌錛?br>
浠巆ode:: blocks閲岄潰鐪嬪埌鐨?鍑芥暟f鐨勬眹緙栦唬鐮?br>
00401318 push %ebp
00401319 mov %esp,%ebp //姝g‘鐨勪技涔庢槸 mov %ebp %esp
0040131B leave
0040131C ret
濡傛灉鍑芥暟f()濡備笅瀹氫箟
int f()
{
return 100;
}
鍒欐眹緙栦唬鐮佹槸
00401318 push %ebp
00401319 mov %esp,%ebp
0040131B mov $0x64,%eax
00401320 leave
00401321 ret
鎺ヤ笅鏉ユ垜浠湅涓涓嬫暣涓猰ain鍑芥暟鐨勬眹緙栦唬鐮?br>
00401322 push %ebp
00401323 mov %esp,%ebp
00401325 and $0xfffffff0,%esp
00401328 sub $0x10,%esp
0040132B call 0x401770 <__main>
00401330 call 0x401318 <f()>
00401335 mov %eax,0x4(%esp)
00401339 movl $0x403024,(%esp)
00401340 call 0x4019ac <printf>
00401345 call 0x401318 <f()>
0040134A mov %eax,0x4(%esp)//灝嗚繑鍥炲間紶閫掔粰%esp+0x04
0040134E movl $0x403024,(%esp)
00401355 call 0x4019ac <printf>
0040135A call 0x401318 <f()>
0040135F mov %eax,0x4(%esp)
00401363 movl $0x403024,(%esp)
0040136A call 0x4019ac <printf>
0040136F mov $0x0,%eax
00401374 leave
00401375 ret
浠庝腑鎴戜滑鍙互鐪嬪嚭錛屽嚱鏁癴錛堬級鏄皢榪斿洖鍊奸氳繃EAX瀵勫瓨鍣ㄤ腑錛屼紶閫掔粰璋冪敤瀹冪殑浠g爜銆?br>濡傝繃鎴戜滑婕忔帀浜唕eturn intVal璇彞錛屽湪Debug妯″紡涓嬪彲鑳戒細瀵艱嚧錛岃皟鐢╢()鐨勪唬鐮佸緱鍒扮殑鏄笂嬈$殑鍏朵粬鍑芥暟琚皟鐢ㄧ殑榪斿洖鍊箋?br>鍦ㄨ繘鍏ain涔嬪悗EAX閫氬父浼氳鍒濆鍖栦負0x01.鎵浠ョ涓涓猣() 榪斿洖鍊間負1.
printf 鎵撳嵃浜?#8220;1 ”涓や釜瀛楃涔嬪悗錛岃繑鍥炲間負2錛屾墍浠ョ浜屼釜f()榪斿洖鍊間負2銆?br>printf 鎵撳嵃浜?#8220;2 ”涓や釜瀛楃涔嬪悗錛岃繑鍥炲間負2錛屾墍浠ョ涓変釜f()榪斿洖鍊間負2銆?br>
鍦≧elease鐗堟湰涓嬶紝鍑芥暟f()琚紭鍖栵紝printf鐩存帴鎵撳嵃鏁板瓧0銆?br>
401320: push %ebp
401321: mov %esp,%ebp
401323: and $0xfffffff0,%esp
401326: sub $0x10,%esp
401329: call 0x401760
40132e: movl $0x0,0x4(%esp)
401335:
401336: movl $0x403024,(%esp)
40133d: call 0x40199c
401342: movl $0x0,0x4(%esp)
401349:
40134a: movl $0x403024,(%esp)
401351: call 0x40199c
401356: movl $0x0,0x4(%esp)
40135d:
40135e: movl $0x403024,(%esp)
401365: call 0x40199c
40136a: xor %eax,%eax
40136c: leave
40136d: ret

]]>