内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

計算機(jī)系統(tǒng)源程序編譯的方法是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹“計算機(jī)系統(tǒng)源程序編譯的方法是什么”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強(qiáng),希望這篇“計算機(jī)系統(tǒng)源程序編譯的方法是什么”文章能幫助大家解決問題。

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、巴彥淖爾網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為巴彥淖爾等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
計算機(jī)中的信息

對于程序員來說,HelloWorld 程序再熟悉不過了,下面是 C 語言寫的 HelloWorld 程序。

#include<stdio.h>

int main()
{
    printf("hello, world\n");
    return 0;
}

這段程序很簡單,僅僅是在屏幕上輸出hello world,對于程序員很容易閱讀,但是從計算機(jī)的角度來看,也是這么簡單嗎?

我們都知道,計算機(jī)的世界只有 0 和 1組成的位(比特),這對于人類來說太不友好了,因此計算機(jī)科學(xué)家們設(shè)計了 ASCⅡ 碼來表示現(xiàn)實世界的符號。每 8 個位構(gòu)成一個組(稱為一個字節(jié)),用一個組來表示一個符號,上面的 C 程序用 ASCⅡ 表示就是下面的樣式。

因此對于計算機(jī)來說,所有的數(shù)據(jù)都是由一串比特表示的,要區(qū)分這些數(shù)據(jù)對象的唯一方法就是讀到它們時的上下文

信息 = 位 + 上下文
源程序編譯

雖然我們把 C 語言程序編寫完成了,但是它并不能運行,因為它目前還僅僅是由 ASCⅡ 字符構(gòu)成的文本文件,計算機(jī)并不能運行文本文件。

想要得到 HelloWorld 的可執(zhí)行文件,需要經(jīng)過預(yù)處理、編譯、匯編、鏈接四個階段。

預(yù)處理階段,預(yù)處理器會根據(jù)以字符#開頭的命令去修改源程序,預(yù)處理器去讀取系統(tǒng)頭文件stdio.h中的內(nèi)容,并將其直接插入程序文本中,結(jié)果就得到了另一個 C 程序—— hello.i。

編譯階段,編譯器會把 hello.i 程序翻譯成匯編語言程序 hello.s,匯編語言本質(zhì)上就是機(jī)器語言,此時的程序仍然是文本文件。

匯編階段,匯編器會將 hello.s 翻譯成機(jī)器語言指令,保存在 hello.o 文件中,此時得到的就是二進(jìn)制文件了。

程序中使用了 printf 函數(shù),這是由編譯器提供的標(biāo)準(zhǔn) C 庫中的函數(shù),它存儲在 printf.o 文件中,鏈接器會將這個文件合并到 hello.o 中,結(jié)果就得到一個可執(zhí)行的 hello 文件,存儲于磁盤中。

系統(tǒng)組成及程序運行

在運行可執(zhí)行文件 hello 文件之前,應(yīng)該先了解一下系統(tǒng)的硬件組成,一個典型系統(tǒng)的硬件組織如下圖所示。

為了運行 hello 程序,我們需要在 shell 中輸入指令./hello,指令通過鍵盤經(jīng) I/O 總線 --> I/O 橋 --> 總線接口 --> 寄存器 --> I/O 橋存于主存中,當(dāng)敲擊回車鍵時,等于告訴 shell 程序,命令的屬于已經(jīng)結(jié)束, shell 將會執(zhí)行一系列指令來加載 hello 文件。

利用直接存?。―MA)技術(shù),hello 文件不需要通過寄存器就能到達(dá)主存,當(dāng)目標(biāo)文件 hello 到達(dá)主存中,處理器就開始執(zhí)行 hello 程序的機(jī)器指令。其指令即將 "hello, world\n" 字符串的字節(jié)從主存復(fù)制到寄存器,再從寄存器復(fù)制到顯示設(shè)備中,最終顯示在屏幕上面。

我們發(fā)現(xiàn)這個簡單的 HelloWorld 程序會讓系統(tǒng)花費大量的時間把信息從一個地方挪到另一個地方,而我們都清楚,寄存器、主存、磁盤之間的訪問速度是相互差了好幾個數(shù)量級的,而這種復(fù)制的開銷會嚴(yán)重減慢程序的運行,為了加快這些復(fù)制操作的速度,系統(tǒng)設(shè)計者就引入了高速緩存。

抽象的重要性

計算機(jī)科學(xué)中最為重要的概念之一就是抽象,指令集提供了對硬件處理器的抽象,操作系統(tǒng)同樣通過進(jìn)程、虛擬內(nèi)存、文件(磁盤、鍵盤、網(wǎng)絡(luò)都可以看成文件)這幾個抽象概念為應(yīng)用程序提供簡單一致的機(jī)制來控制低級硬件設(shè)備,同時防止硬件被失控的應(yīng)用程序濫用。

進(jìn)程是對正在運行的程序的抽象,在一個系統(tǒng)上可以同時運行多個進(jìn)程,但是每個進(jìn)程看起來都好像在獨占的使用硬件,CPU 看上去是在并發(fā)的執(zhí)行多個進(jìn)程,這就需要操作系統(tǒng)進(jìn)行上下文切換。

在我們還沒有輸入./hello之前,只有 shell 進(jìn)程在運行,當(dāng)我們讓其運行 hello 程序時,shell 會通過系統(tǒng)調(diào)用來執(zhí)行我們的請求。操作系統(tǒng)首先保存 shell 進(jìn)程的上下文(PC、寄存器等信息),然后創(chuàng)建一個新的 hello 進(jìn)程,并將控制權(quán)轉(zhuǎn)交給 hello 進(jìn)程。

關(guān)于“計算機(jī)系統(tǒng)源程序編譯的方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

文章名稱:計算機(jī)系統(tǒng)源程序編譯的方法是什么-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://www.rwnh.cn/article10/doedgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站策劃、App設(shè)計網(wǎng)站收錄、微信小程序商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
信阳市| 行唐县| 南安市| 都匀市| 小金县| 耿马| 斗六市| 比如县| 曲麻莱县| 西城区| 青铜峡市| 万安县| 巫山县| 德庆县| 库车县| 翁牛特旗| 安化县| 汨罗市| 迁安市| 新平| 洛川县| 富裕县| 左云县| 屏边| 宁乡县| 边坝县| 瓮安县| 巴彦县| 竹溪县| 张掖市| 凌海市| 疏附县| 建水县| 盱眙县| 吉木萨尔县| 北碚区| 石景山区| 肥乡县| 体育| 陇西县| 泗水县|