匯編指令:gcc -S main.c
程序從main函數(shù)開(kāi)始 首先 pushl %ebp movl %esp, %ebp 相當(dāng)于enter指令,保存ebp的值,然后將ebp的值設(shè)為esp,相當(dāng)于保存原函數(shù)的堆棧,然后建立當(dāng)前函數(shù)的堆棧,而且它還有這樣的功能,見(jiàn)下面的博客 http://blog.csdn.net/zhangxinrun/article/details/5888425
把立即數(shù)2壓棧,然后調(diào)用函數(shù)f 同樣enter一下 pushl 8(%ebp),將當(dāng)前ebp所指向的堆棧位置向上數(shù)兩個(gè)的位置,也就是放2的那個(gè)位置,壓棧。 做一個(gè)變址尋址,即將2放入累加器eax中 累加器再加3,累加器為5. 然后pop %ebp,相當(dāng)于leave,由于g函數(shù)中沒(méi)有額外壓棧,所以沒(méi)做mov指令 返回f函數(shù), esp向上移動(dòng)一個(gè)堆棧位置然后leave, 返回main 同樣esp向上移動(dòng)一個(gè)堆棧位置然后leave,與此同時(shí)eax加1,得到最終值6 程序結(jié)束
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注