计算机栈原理
1.開篇
本篇文章著重寫的是系統中棧的工作原理,以及函數調用過程中棧幀的產生與釋放的過程,有可能名字過大,如果不合適我可以換一個名字,希望大家能夠指正,小丁虛心求教!如果有哪里寫的不清楚的或者錯誤的地方請及時更正,小丁再次謝過了。文章里面有錯別字,也可能會有好友說寄存器的32、16位的區別其實我感覺這里主要講的還是些原理性的東西,后續會將文章圖片錯別字進行調整.(圖片里面的posh改為push)
2.內存的不同用途
根據不同的操作系統,一個進程可能被分配到不同的內存區域去執行。但是不管什么樣的操作系統、什么樣的計算機架構,進程使用的內存都可以按照功能大致分為以下4個部分:
(1)代碼區:這個區域存儲著被裝入執行的二進制機器代碼,處理器會到這個區域取指并執行。
(2)數據區:用于存儲全局變量等。
(3)堆區:進程可以在堆區動態地請求一定大小的內存,并在用完之后歸還給堆區。動態分配和回收是堆區的特點。
(4)棧區:用于動態地存儲函數之間的關系,以保證被調用函數在返回時恢復到母函數中繼續執行。
在Windows平臺下,高級語言寫出的程序經過編譯鏈接,最終會變成PE文件。當PE文件被裝載運行后,就成了所謂的進程。
PE文件代碼段中包含的二進制級別的機器代碼會被裝入內存的代碼區(.text),處理器將到內存的這個區域一條一條地取出指令和操作數,并送入運算邏輯單元進行運算;如果代碼中請求開辟動態內存,則會
總結
- 上一篇: idea main和System快捷键
- 下一篇: 8皇后以及N皇后算法探究,回溯算法的JA