- 1 程序的運行流程
- 2 CPU的組成
- 3 寄存器的主要種類和功能
- “程序計數器”--決定程序流程的
- 4 條件分支和循環機制
- 5 函數的調用機制
- 6 通過地址和索引實現數組
- 7 CPU 的處理其實很簡單
1 程序的運行流程

2 CPU的組成

3 寄存器的主要種類和功能

程序員眼中的 CPU(CPU 是寄存 的集合體)

“程序計數器”–決定程序流程的
程序計數器決定着程序的流程。
用戶發出啟動程序的指示 后,Windows 等操作系統 A 會把硬盤中保存的程序復制到內存中。示例 中的程序實現的是將 123 和 456 兩個數值相加,並將結果輸出到顯示器上。

4 條件分支和循環機制
順序執行
是指按照地址內容的順序執行指令。條件分支
是指根據條件執行任意地址 的指令。循環
是指重復執行同一地址的指令。
4.1 順序執行
順序執行的情況比較簡 單,每執行一個指令程序計數器的值就自動加 1。但若程序中存在條件 分支和循環,機器語言的指令就可以將程序計數器的值設定為任意地 址(不是 +1)。
4.2 選擇分支

標志寄存器
無論當前累加寄存器的運算結果是負數、零還是正數, 標志寄存器都會將其保存(也負責存放溢出 A 和奇偶校驗 B 的結果 )。CPU 在進行運算時,標志寄存器的數值會根據運算結果自動設定。

_PS:CPU 執行比較的機制很有意思,因此請大家務必牢記。例如,假 設要比較累加寄存器中存儲的 XXX 值和通用寄存器中存儲的 YYY 值,執行比較的指令后,CPU 的運算裝置就會在內部(暗中)進行 XXX-YYY 的減法運算。而無論減法運算的結果是正數、零還是負數, 都會保存到標志寄存器中。結果為正表示 XXX 比 YYY 大,零表示 XXX 和 YYY 相等,負表示 XXX 比 YYY 小。程序中的比較指令,就 是在 CPU 內部做減法運算。怎么樣,是不是挺有意思的?_
5 函數的調用機制
和條件分支、循環的機制有所不同,因為單純的跳轉指 令無法實現函數的調用。函數的調用需要在完成函數內部的處理后,處理流程再返回到函數調用點(函數調用指令的下一個地址)。
如圖是給變量 a 和 b 分別代入 123 和 456 后,將其賦值給參數 (parameter)來調用 MyFunc 函數的 C 語言程序。


6 通過地址和索引實現數組
基址寄存器和變址寄存器 。通過這兩個寄存器,我們可以對主內存上特定的內存區域進行划分,從而實現類似於數組的操作。
查看 10000000 地址~1000FFFF 地址時,如圖所示, 可 以 將 10000000 存入基址寄存器,並使變址寄存器的值在00000000~0000FFFF 變化。CPU 則會把基址寄存器+變址寄存器的值解釋為實際查看的內存地址。變址寄存器的值就相當於高級編程語言 程序中數組的索引功能。

7 CPU 的處理其實很簡單
機器語言指令的主要類型和功能