1.2.4 计算机的工作过程(从源程序到可执行文件、指令执行过程的描述)
生活随笔
收集整理的這篇文章主要介紹了
1.2.4 计算机的工作过程(从源程序到可执行文件、指令执行过程的描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1.計算機工作過程分為三步驟
- 2.從源程序到可執行文件
- (1)預處理階段
- (2)編譯階段
- (3)匯編階段
- (4)鏈接階段
- 3.指令執行過程的描述
- 舉個例子
- (1)取指令:PC->MAR->M->MDR->IR
- (2)分析指令:OP(IR)->CU
- (3)執行指令:Ad(IR)->MAR->M->MDR->ACC
1.計算機工作過程分為三步驟
2.從源程序到可執行文件
- 這里以UNIX系統中的GCC編譯器程序為例,將C語言源程序轉換為可執行文件(以二進制磁盤文件形式存儲)
(1)預處理階段
- 預處理器(cpp)對源程序中以#開頭的命令進行處理,例如將#include命令后面的.h文件內容插入程序文件。輸出結果是一個以.i為擴展名的源文件hello.i。
(2)編譯階段
- 編譯器(ccl)對預處理后的源程序進行編譯,生成一個匯編語言程序hello.s。匯編語言源程序中的每一條語句都以一種文本格式描述了一條低級指令。
(3)匯編階段
- 匯編器(as)將hello.s 翻譯成機器語言指令,把這些指令打包成一個稱為可重定位目標文件的hello.o,一種二進制文件,用文本編輯器打開會亂碼。
(4)鏈接階段
- 鏈接器(ld)將多個可重定位目標文件和標準庫函數合并為一個可執行目標文件, 或簡稱可執行文件。本圖例子中,鏈接器將hello.o和庫函數printf所在的可重定位目標模塊printf.o合并,生成可執行文件hello。最終生成的可執行文件被保存在磁盤上。
3.指令執行過程的描述
- 簡單描述:程序中第一條指令位于PC中,根據PC取出第一條指令,經過譯碼,執行步驟等,控制計算機各功能部件的協同運行,完成這條指令的功能,并計算下一條指令的地址。用新得到的指令地址繼續讀出第二條指令并執行,知道程序結束為止。
- 圖中從控制器送出的虛線是控制信號↓↓↓↓↓↓
- 可以控制如何修改PC以得到下一條指令的地址
- 可以控制ALU執行什么運算
- 可以控制主存進行讀/寫操作
舉個例子
????????例題:以取數指令(即將指令地址碼指示的存儲單元中的操作數取出后送至運算器的累加器(ACC)中)為例進行說明。其信息流程如下:
累加器ACC:二進制8位寄存器,存放操作數或運算結果。
M : 主存儲器
(1)取指令:PC->MAR->M->MDR->IR
????????根據PC取指令到IR。將PC的內容送MAR,MAR中的內容直接送地址線,同時控制器將讀/寫信號送讀/寫信號線,主存根據地址線上的地址和讀信號,從指定存儲單元讀出指令,送到數據線上,MDR從數據線接受指令信息,并傳送到IR中。
(2)分析指令:OP(IR)->CU
????????指令譯碼器解釋操作碼OP(IR)并送出控制信號。指令寄存器(IR)將操作碼OP(IR)送至指令譯碼器(ID)進行解釋翻譯,將翻譯的信息送至操作控制器(OC),OC生成相應的控制信號,送到不同的執行部件。
(3)執行指令:Ad(IR)->MAR->M->MDR->ACC
????????取數操作。將IR中的指令地址碼送MAR,MAR將內容送至地址線,同時控制器將讀/寫信號送讀/寫線,從主存指定單元讀出操作數,并通過數據線送至MDR,再傳送到ACC中。
- 每取完一條指令,(PC)+1->PC,取下一條指令的地址。
總結
以上是生活随笔為你收集整理的1.2.4 计算机的工作过程(从源程序到可执行文件、指令执行过程的描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.2.1 计算机系统的组成(硬件+软件
- 下一篇: 1.2.5 计算机系统的多级层次结构(硬