計算機組成原理學習(二)

前言
本次計算機組成原理學習主要分為兩塊

我們的世界是多元多義的,而計算機的世界永遠是枯燥的,除了0就是1,為了能夠勾畫出我們能夠理解的東西,我們定義了單位字節,但是這些又不能被大多數人認知,因為我們不能寫一篇文章,然后滿篇都是0和1吧,所以后來CPU的架構師們設計了很多機器指令,這些指令剛開始是一些十六進制的機器碼,而這些指令的集合就是CPU指令集,隨著科技的發展,這樣的設計已經不能滿足需求,為了讓更多的人能夠參與進來,頂層設計師們設計了一種最接近CPU指令集的低級語言,我們稱它為匯編語言,匯編的誕生,讓計算機有了質的發展。
??匯編語言已經能夠讓很多人編寫自己的軟件,但是這樣還不夠,因為不同的CPU生產廠家指令集不一致,出現了一個問題就是一次編寫不能重復使用,不同的CPU需要一定的修改程序的額外工作,后來就提出了高級語言,CPU廠家根據ISA(工業標準規范架構)統一協定實現并支持匯編語言集合(其中有少些匯編語言功能會有所不同),這種匯編集合就是匯編指令集。

一、CPU指令集(機器語言)和匯編語言

  • CPU指令集
    由十六進制數字組成的一組指令。每條指令需要查大量的表格來確定每個數字表示什么意思。每個廠家的指令集都有不同。

  • 匯編語言
    將一組一組的十六進制數字用助記符(Mnemonic)表示,這些助記符就是匯編語言,寫好的匯編程序可以通過匯編器(Assembler)去查表把助記符替換成數字,也就把匯編語言翻譯成了機器語言。

匯編過程

注意:
1、匯編語言和機器語言的指令是一一對應的,匯編語言有三條指令,機器語言也有三條指令,匯編器就是做一個簡單的替換工作
2、

二、32/64位CPU、操作系統、應用程序

  • 32/64位CPU
    指的是CPU的處理數據的能力(每個CPU時鐘周期內,CPU能夠處理的數據量(二進制數的位數長度))。

注意:
該能力影響CPU的運算速度和內存尋址能力。位數更大的機器的運算速度和內存尋址能力更快和更大,比如,64位機有比32位機更快的運算速度,64位機支持比32機更大的內存。

  • 32/64位操作系統
    指的是操作系統能夠操作的最大內存地址空間。32位只能支持并且操作最大4GB的內存,而64位支持128G內存。

  • 32/64位應用程序
    指的是該軟件能夠操作的最大內存地址空間。32位應用程序只能操作最大4GB的內存,而64位支持128G內存。

  • 三者位數上關系
    從理論上來講,三者的位數要保持一致的。實際上情況,
    1、64位CPU能夠運行32位操作系統,32位系統不能運行64位CPU上。

CPU的位數與操作系統的位數間的關系 不同位數的CPU的指令集的指令長度是不同的。所以,理論上32位CPU上只能跑32位操作系統、64位CPU上只能跑64位操作系統。 但是為了實現”升級到64位硬件的同時保證之前購買的32位軟件仍然能夠運行”,所以主要廠商對CPU進行處理,使64位CPU能夠運行32位操作系統。

2、64位操作系統能夠運行32位軟件,32軟件不能運行在64位系統上。

三、程序運行原理

首先我們通過上面的學習,高級語言需要通過翻譯成機器語言才能執行,而翻譯的方式分為兩種,一種是編譯型,另一種是解釋型,因此我們基本上將高級語言分為兩大類,一種是編譯型語言,例如C,C++,Java,另一種是解釋型語言,例如Python、Ruby、MATLAB 、JavaScript。

  • 編譯型
    源程序全部編譯成二進制代碼的可運行程序,以后運行該程序無需再經過編譯過程。
  • 解釋型
    源程序解釋一句,然后執行一句,直至結束,以后每次運行都需要解釋引擎,解釋一句,執行一句。

注意:
關于Java語言到底是編譯型還是解釋型,這里不做討論。

讓我們拿一個簡單的C程序如何在操作系統中運行作為例子,再細入的學習下整個運行全過程。首先C語言程序需要經過編譯后才能運行。編譯過程如下:預處理、編譯、匯編和鏈接。

  • 預處理
    預處理是編譯過程的第一遍做替換工作,將頭文件,條件編譯指令和宏中的引用用真實的實現代碼替換,同時完成其他工作。
  • 編譯
    編譯是第二遍,它將C語言程序轉換為匯編語言程序。
  • 匯編
    匯編將匯編程序轉換成機器語言程序,也就是機器指令序列。
  • 鏈接
    是編譯的最后階段。這需要一個或多個目標文件或庫作為輸入,并結合他們產生一種單一的(通常是可執行文件)文件。在這樣做時,它解析引用外部符號,分配給最后地址的程序/函數和變量,并修改代碼和數據,以反映新的地址(一個稱為重定位的處理)
C語言編譯全過程

注意:
1、鏈接的作用
??編譯的最后一個階段是鏈接,鏈接的作用是將程序代碼與操作系統中自帶的動態鏈接庫和系統API進行關聯。只有關聯后程序才能運行。

如果你們想更細入的了解程序運行過程,那就要去深讀《編譯原理》。因本人知識有限,如果有錯誤,請指出,隨時溝通交流,感謝。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容