日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

程序是如何被計算機(jī)所執(zhí)行的?

 pphsy 2017-12-14

一、計算機(jī)程序
要明白程序是如何被計算機(jī)所執(zhí)行的,首先要明白什么是程序?先看看一下幾個問題:
這里寫圖片描述

  • 程序的概念?
    程序(program)是為實(shí)現(xiàn)特定目標(biāo)或解決特定問題而用計算機(jī)語言編寫的命令序列的集合。為實(shí)現(xiàn)預(yù)期目的而進(jìn)行操作的一系列語句和指令。一般分為系統(tǒng)程序和應(yīng)用程序兩大類。

  • 程序由什么組成?
    程序由數(shù)據(jù)和指令組成。

  • 什么是機(jī)器語言?
    機(jī)器語言是直接用二進(jìn)制代碼指令表達(dá)的計算機(jī)語言,指令是用0和1組成的一串代碼,它們有一定的位數(shù),并分成若干段,各段的編碼表示不同的含義。

  • 運(yùn)行中的程序存儲在什么位置?
    程序加載時首先到寄存器中,寄存器會將程序復(fù)制到內(nèi)存中從而進(jìn)行存儲,,當(dāng)程序運(yùn)行時,CPU會把主從的程序的數(shù)據(jù)和指令調(diào)用到寄存器特定的位置,從而執(zhí)行。

  • 什么是內(nèi)存地址?
    內(nèi)存地址指系統(tǒng) RAM 中的特定位置,通常以十六進(jìn)制的數(shù)字表示,如同計算機(jī)內(nèi)部特定位置的編號。

  • 程序的解釋和運(yùn)行的計算機(jī)部件叫什么?
    CPU的控制器是計算機(jī)的指揮中心,負(fù)責(zé)決定執(zhí)行程序的順序,給出執(zhí)行指令時機(jī)器各部件需要的操作控制命令.,程序的解釋和運(yùn)行也是由CPU的控制器來完成。

    程序=指令+數(shù)據(jù)
    
    • 1
    • 2

二、程序的執(zhí)行過程
當(dāng)我們輸入以下程序,編譯運(yùn)行,計算機(jī)從屏幕輸出hello, world!。整個過程計算機(jī)都怎么運(yùn)作的呢?

#include <stdio.h>

void main()
{
printf("hellow,world!\n");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

計算機(jī)內(nèi)部存儲的是0和1,計算機(jī)通過位信息以及上下文來解讀這些0、1信息的。
hellow,world是由0和1組成的序列,將這些程序代碼轉(zhuǎn)換成相應(yīng)的文本字符,每8位表示一個字節(jié),用來存儲一個字符。

hellow,world的ASCII碼表示

因?yàn)槲覀冚斎氲膆ellow,world是人可以閱讀和編寫的,但是機(jī)器并不能直接識別他們,我們需要把這些文字翻譯成機(jī)器可執(zhí)行的二進(jìn)制文件,這一部分的工作是由編譯系統(tǒng)完成的。編譯系統(tǒng)由預(yù)處理器、編譯器、匯編器、連接器四部分組成。以hello, world程序?yàn)槔?,各部分共同完成將源文件編譯成二進(jìn)制可執(zhí)行文件。各個部分完成的具體工作如下:
這里寫圖片描述

  • 預(yù)處理器:根據(jù)以#開頭的命令,將包含的頭文件加載進(jìn)入源程序源程序。預(yù)處理器讀取系統(tǒng)頭文件stdio.h中的內(nèi)容,代替此行內(nèi)容。源程序經(jīng)過預(yù)處理后,得到另一個c程序,此程序通常以.i為后綴保存。

  • 編譯器:將預(yù)處理后的.i文件轉(zhuǎn)換成匯編程序。編譯器將不同的高級語言(如c語言,C++語言)轉(zhuǎn)換成嚴(yán)格一致的匯編語言格式進(jìn)行輸出。匯編語言以標(biāo)準(zhǔn)的文本格式確切的描述每機(jī)器語言指令。編譯器得到的文件通常以.s為后綴保存。

  • 匯編器:將匯編語言(.s文件)翻譯成機(jī)器語言指令,并將這些指令打包成一種可定位目標(biāo)程序格式。匯編后得到的文件即為二進(jìn)制文件,通常以.o為后綴。

  • 鏈接器:hello, world程序中調(diào)用過printf函數(shù),它是一個c標(biāo)準(zhǔn)庫里的函數(shù)。Printf函數(shù)存放在一個名為printf.o的單獨(dú)預(yù)編譯的文件中。而這個文件必須以適當(dāng)?shù)姆绞讲⑷氲轿覀兊某绦蛑?,這個工作由鏈接器完成。將外部的.o文件并入后,得到一個完整的hello, world可執(zhí)行文件??蓤?zhí)行文件加載到存儲器后,由系統(tǒng)復(fù)制執(zhí)行。

    程序加載進(jìn)入CPU的過程
    這里寫圖片描述

  • Shell:命令行解釋器,當(dāng)用戶輸入一行命令后,shell先判斷它是不是一個shell內(nèi)置命令,如果不是,shell會假定用戶輸入為一個可執(zhí)行文件的名字,從而去加載并執(zhí)行該文件。因此,當(dāng)我們通過編譯系統(tǒng)將源文件編譯成可執(zhí)行二進(jìn)制文件后,在shell中輸入我們得到的可執(zhí)行二進(jìn)制文件名,shell將其從磁盤中加載到主存當(dāng)中,通過CPU進(jìn)行解釋運(yùn)行,最終通過終端設(shè)備(屏幕)將他顯示出來,程序運(yùn)行結(jié)束。

  • 主存儲器:簡稱主存,是處理器執(zhí)行程序時用于臨時存放程序及其數(shù)據(jù)。主存由一組動態(tài)隨機(jī)存儲器芯片組成。

  • 運(yùn)算器:計算機(jī)中執(zhí)行各種算術(shù)和邏輯運(yùn)算操作的部件。

  • 控制器: 計算機(jī)中執(zhí)行各種算術(shù)和邏輯運(yùn)算操作的部件。

三、CPU的組成
CPU是由四大部分所構(gòu)成的:寄存器、控制器、運(yùn)算器、時鐘。

  • 寄存器
    • CPU內(nèi)部的內(nèi)存,程序加載進(jìn)CPU內(nèi)部的寄存器中從而被用來解釋和運(yùn)行。
  • 控制器
    • 計算機(jī)的指揮中心,負(fù)責(zé)決定執(zhí)行程序的順序,給出執(zhí)行指令時機(jī)器各部件需要的操作控制命令。
  • 運(yùn)算器
    • 計算機(jī)中執(zhí)行各種算術(shù)和邏輯運(yùn)算操作的部件。
  • 時鐘
    • 它是處理操作的最基本的單位,影響著指令的取出和執(zhí)行時間。

CPU中的主要寄存器
這里寫圖片描述

累加寄存器(AC) :主要進(jìn)行加法運(yùn)算。
標(biāo)志寄存器(PSW) :記錄狀態(tài),做邏輯運(yùn)算。
程序計數(shù)器(PC) :是用于存放下一條指令所在單元的地址的地方。
基質(zhì)寄存器(BX) :儲存當(dāng)前數(shù)據(jù)內(nèi)存開始的位置。
變址寄存器 :儲存基質(zhì)寄存器的相對位置。
通用寄存器(GPRs) :支持有所的用法。
指令寄存器(IR) :CPU專用,儲存指令。
堆棧寄存器(SP) :記錄堆棧的起始位置。

  寄存器寄存器是中央處理器內(nèi)主要組成結(jié)構(gòu)成分,它是CPU當(dāng)中有限存貯容量的高速存貯部件,它在工作時能將計算機(jī)指令數(shù)據(jù)進(jìn)行暫時的存儲。

  內(nèi)存地址=基質(zhì)+變址
  • 1
  • 2
  • 3
  • 4

處理器讀取并解釋存儲在存儲器中的指令
這里寫圖片描述

處理器的操作主要是圍繞程序計數(shù)器、算術(shù)/邏輯運(yùn)算單元、主存來進(jìn)行運(yùn)作的。處理器首先從PC所指向的主存存儲單元讀取指令,解釋指令中的位,執(zhí)行該指令指示的簡單操作,然后更新PC寄存器,使其指向下一條要執(zhí)行的指令。CPU會執(zhí)行的操作有:

  • 加載:把一個字節(jié)或一個字從主存復(fù)制到寄存器,覆蓋掉寄存器中原來的值。

  • 存儲:把一個字節(jié)或一個從寄存器復(fù)制到主存,并覆蓋主存中原來的值。

  • 操作:把兩個寄存器的內(nèi)容復(fù)制到ALU,ALU對兩個字做算術(shù)運(yùn)算后存回其中的一個寄存器,該寄存器中原來的值會被覆蓋。

  • 跳轉(zhuǎn):從cpu執(zhí)行的指令抽取一個字的內(nèi)容存入PC,覆蓋掉原來的值,從而改變下一條要執(zhí)行的指令,達(dá)到跳轉(zhuǎn)的目的。

這里寫圖片描述

hellow,world程序首先被加載,從磁盤中復(fù)制到寄存器中,寄存器將hwllow,world程序復(fù)制到主存中進(jìn)行存儲。程序運(yùn)行過程中,CPU執(zhí)行hellow,world機(jī)器指令,指令的結(jié)果是將”hellow,world”字符由內(nèi)存復(fù)制到寄存器,寄存器再將結(jié)果復(fù)制到顯示設(shè)備上顯示出來。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多