從CPU的執行到函式呼叫做個了解

2022-01-13 17:40:34 字數 1126 閱讀 2159

我們都知道cpu是一台電腦的核心部件,所有的程式都是通過它執行的,那麼cpu是如何讓乙個程式跑起來的呢?我們今天就來一起簡單的做個了解,首先看下cpu的基本結構

假如現在我們有個兩個數相加的程式,當你點選執行這個程式時,系統會將這個程式複製到記憶體中。程式中的這些資料和指令會被儲存在乙個乙個小的「記憶體空間」,並給每個空間乙個「門牌號」,也就是記憶體中的位址。

系統將程式複製到記憶體中後,會將程式計數器設定到程式執行的開始位置(假設這個程式的開始位置是0100),然後開始執行;當cpu每執行一條指令,程式的累加器的值就自動加1,然後cpu的控制器就會參照程式計數器的數值從記憶體中讀取命令並執行,那麼我們用圖表示這個流程的話大概是下圖中的樣子

在cpu進行運算時,標誌暫存器的數值會根據運算結果自動設定。如果程式執行到跳轉指令的時候,會根據位址中的內容跳轉到對應的位址;條件分支在跳轉指令之前會進行比較運算,然後cpu根據標誌暫存器的數值進行判斷是否要跳轉

對cpu的執行流程有了個大概的了解後,我們現在可以來看看咱們平時寫的程式函式是怎麼執行的了。在介紹之前我們先了解兩個機器語言指令

call指令,把函式要執行的指令位址儲存在名為棧的主記憶體

return指令,把儲存在棧中的位址設定到程式計數器中

在上圖中,函式執行到0132的時候,並不是通過跳轉指令跳轉到add函式的入口,而是通過call指令;這個地方和我沒前面講到的條件分支跳轉指令是不一樣的,因為呼叫完函式,我們還要返回函式呼叫的地方繼續下一條指令。

到此,我們可以對程式的執行過程有個大概的了解。

程序 程式從編譯到執行 cpu對記憶體的操作

有問題請一定支援,歡迎討論 今天對幾個概念進行了統一,程序,程式從編譯到執行,指令執行,cpu對記憶體相關操作 大概流程 更多細節 待補充 首先明確幾個概念 程序 程式動態執行的過程 多層次儲存器結構 指令 cpu 程式從編譯到執行主要經過三個階段 編譯 鏈結裝入 不同文章書籍有不同劃分,大致就這幾...

shell函式的呼叫執行

要想呼叫執行自己編寫的shell檔案中的函式,有如下方法 比如,自己編寫了乙個test.sh檔案如下,test.sh bin sh echo line echo line 要想在shell裡呼叫echo line 和echo line 方法,首先需要註冊test.sh到當前shell 命令 test...

從程式的執行看硬碟 記憶體 CPU的關係

首先先看乙個程式執行大概的過程。我們所看到的 是人可以閱讀的高階語言 但是計算機無法識別。當乙個程式被載入並執行執行的時候,檔案就會被編譯成計算機可讀取的二進位制檔案。這時記憶體會去讀取硬碟上的資料和指令並儲存在記憶體中。由於cpu無法直接讀取硬碟上的資料,大部分cpu的時間用於等待磁碟去讀取資料。...