国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > ASM > 正文

實(shí)驗(yàn)1-匯編一個(gè)簡(jiǎn)單的C程序

2019-11-08 02:09:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

實(shí)驗(yàn)代碼

int g(int x){return x + 3;}int f(int x){return g(x);}int main(void){return f(2) + 1;}

匯編指令:gcc -S main.c

匯編結(jié)果

g: pushl %ebp movl %esp, %ebp movl 8(%ebp),%eax addl $3, %eax popl %ebp retf: pushl %ebp movl %esp, %ebp pushl 8(%ebp) call g addl $4, %esp leave retmain: pushl %ebp movl %esp, %ebp pushl $2 call f addl $4, %esp addl $1, %eax leave ret

分析:

程序從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é)束


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 吉木萨尔县| 永平县| 仪陇县| 舒城县| 连平县| 吉木萨尔县| 海宁市| 商都县| 思茅市| 西林县| 桂东县| 平定县| 杭锦后旗| 友谊县| 元江| 聂拉木县| 洛川县| 苍山县| 孝感市| 温泉县| 漳平市| 聂荣县| 承德县| 土默特左旗| 松桃| 深州市| 舒城县| 乌拉特前旗| 隆安县| 青川县| 蒙阴县| 莱芜市| 江口县| 马尔康县| 新田县| 花莲县| 南涧| 体育| 西城区| 商河县| 平舆县|