程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 反匯編一個簡單的C程序

反匯編一個簡單的C程序

編輯:關於C
反匯編一個簡單的C程序


看了下網易雲課堂的《Linux內核分析》,第一節要求有一個簡單C程序得到匯編代碼,然後分析。只要明確每個匯編指令代表的含義,就可以容易的走下去,關鍵是要體會裡面的思想。

int g(int x){
    return x+3;
}


int f(int x){
    return g(x);
}


int main(){
    return f(8)+1;
}


\
加載程序會從main開始執行,過程如圖(1)-(20),執行到“call f”時候 EIP=下一條指令地址=23(把保存在EIP中的下一條指令的地址壓棧;設置EIP為被調函數的入口地址,相當於pushl EIP, movel f,EIP )此時的狀態如圖(5)

接下來執行代碼塊f,執行到第15條指令到達 leave(相當於movl %ebp,%esp,popl %ebp)。最後main的ret會把CPU讓給其他的程序。

\

\

 

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved