- 程序是怎樣跑起來的(第3版)
- (日)矢澤久雄
- 539字
- 2023-06-20 18:13:10
1.3 決定程序流程的程序計數器
只有一行的程序幾乎完成不了什么任務,機器語言程序也是如此。對CPU有了大致印象之后,下面來看一下程序是如何按照指定的順序(程序流程)來運行的。
圖1-4展示了程序啟動時內存中的內容。在Windows等操作系統中,當用戶發起啟動某個程序的指示后,操作系統會將存儲在硬盤中的程序復制到內存中。示例中的程序將123和456兩個數值相加,并將結果輸出到屏幕上。我們之前講過,內存中會用地址來表示存放指令和數據的位置。如果將各個地址中存儲的內容用機器語言表示的話,大家會看不懂,因此我們用文字來表示各個地址中存放的內容。實際上,一條指令或一個數據一般會存放在多個地址中,但為了方便起見,在圖1-4中,我們假設一條指令或一個數據只對應一個地址。

圖1-4 存放在內存中的程序實例(顯示加法運算結果)
地址0100是程序運行的起始位置。Windows等操作系統在將程序從硬盤復制到內存后,就會將程序計數器這個寄存器的值設置為0100。然后,程序開始運行。CPU每執行一條指令,程序計數器的值就會自動加1。例如,CPU執行地址0100中的指令之后,程序計數器的值就變成了0101(如果執行的指令占用多個內存地址,那么程序計數器的值也會根據指令的長度增加相應的值)。CPU的控制器會根據程序計數器的值從內存中讀取指令并執行。也就是說,程序計數器決定了程序的流程。
推薦閱讀
- PHP動態網站程序設計
- Spring 5企業級開發實戰
- Python高級編程
- 數據結構習題精解(C語言實現+微課視頻)
- Hands-On Microservices with Kotlin
- Learning Salesforce Einstein
- Advanced Oracle PL/SQL Developer's Guide(Second Edition)
- 零基礎學單片機C語言程序設計
- Python圖形化編程(微課版)
- RealSenseTM互動開發實戰
- Hands-On Nuxt.js Web Development
- Building Serverless Architectures
- Java程序設計基礎(第6版)
- PyQt編程快速上手
- Machine Learning for OpenCV