国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 四会市| 关岭| 错那县| 平凉市| 达拉特旗| 进贤县| 嘉鱼县| 资源县| 岱山县| 凤翔县| 宿松县| 石门县| 获嘉县| 汤原县| 万载县| 林周县| 丁青县| 雷山县| 嵩明县| 蓬莱市| 黔西| 马鞍山市| 邮箱| 鹰潭市| 科尔| 隆尧县| 鹤山市| 邛崃市| 泊头市| 荆门市| 沾益县| 临朐县| 清徐县| 隆子县| 阳春市| 南投县| 晋州市| 高邮市| 屯昌县| 肇源县| 嫩江县|