c執行模型

2021-08-10 20:58:39 字數 854 閱讀 6338

**段: 

1、編譯器把c語言**編輯成二進位制的指令**

2、程式執行的時候把二進位制**載入到**段

3、**段唯讀,不可改寫,這樣為了安全

4、cpu有乙個指令指標,指向當前執行的指令

5、cpu執行完一條指令後,在移動指令指標到下乙個位置

6、指令條件跳轉

7、指令迴圈跳轉

8、函式呼叫跳轉,函式返回跳轉,引數傳遞

資料段:

1、每個程序執行程式的時候都會分配乙個資料段

2、資料段存放在這個程式中所有的全域性變數並為它分配好記憶體

3、記憶體一旦分配好,就不能增加也也不能減少

棧:1、作業系統會為每個程序分配乙個棧

2、棧的大小有限,而且不大,所以不要再棧上分配大規模的記憶體塊

3、棧底指標是往下撥動,記憶體就分配出來,往上撥動,記憶體就**

4、區域性變數與函式的引數記憶體都分配在棧上

關鍵點:

1、分配區域性變數與引數

棧底指標往下撥動變數所需的大小分配出來

2、程式執行時站的大小是有限的

不要定義大塊記憶體的區域性變數

3、函式呼叫

(1):分配引數的記憶體,從引數右邊到左邊分配

(2):將引數對應的記憶體做好資料初始化

(4):儲存棧底在呼叫函式錢的位置

(5):把指令指標撥動到呼叫函式的地方

4、函式返回

(1):**這個函式裡面的區域性變數,將棧底撥回到呼叫函式之前的地方

(3):儲存返回值,到乙個地方,eax暫存器等(每個編譯器不一樣)

CLR via C CLR執行模型

事實上,可將編譯器視為語法檢查器和 正確 分析器,它們檢查 確定你所寫的一起都有意義,並輸出對你的意圖進行描述的 編譯器的結果都是託管模組 標準的32位microsoft windows可移植執行體 pe32 檔案或者標準的64位windows可移植執行體 pe32 檔案 託管模組的各個部分 組成部...

CLR執行模型

clr common language runtime 公共語言執行時,是乙個可由多種程式語言使用的 執行時 在執行時,clr根本不關心開發人員用的是哪一種語言來變寫 它只關注語言是否是面向clr 面向執行時 的.記憶體管理 程式集載入 安全性 異常處理和執行緒同步。3 如圖 無論是用的是哪一種編譯...

CLR執行模型

然後,將若干個託管模組合併成assembly.載入clr 在 system32 下有mscoreee.dll 說明已經安裝.首次執行一方法 在執行 main 之前,clr 建立乙個內部 ds來儲存 code 所引用的 type.呼叫方法時 jit complier將il 編譯為本地指令 在 am的元...