《編譯系統透視:圖解編譯原理》


【Wed Jun 01 2016 16:32:21】

  C 程序運行的核心是函數的執行和調用,它構成了整個C 程序運行時結構的基礎框架。這一運行過程主要是在程序指令的驅動以及數據壓棧、清棧的支持下實現的。為了介紹這一過程,我們設計了一個簡單C 程序,如下所示:

 1 int fun(int a,int b);
 2 int m = 10;
 3 
 4 int main()
 5 {
 6     int i=4;
 7     int j=5;
 8     m = fun(i,j);
 9     printf("%d\n", m); //9
10     return 0;
11 }
12 
13 int fun(int a,int b)
14 {
15     int c = 0;
16     c = a + b;
17     return c;
18 }
View Code

  程序很簡單,卻凸現了函數調用和執行的最基本情況。我們把此情景展現在內存中,共有三個區域,分別是代碼區、靜態數據區和動態數據區。情景如圖1-1 所示。
  代碼區裝載了這個程序所對應的機器指令,main 函數和fun 函數的機器指令裝載位置如圖1-2 所示。
  全局變量m 的數值裝載在靜態數據區中,情景如圖1-3 所示。
  程序開始執行前,動態數據區中沒有數據,情景如圖1-4 所示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM