首頁>技術>

你知道世界上第一臺通用計算機Eniac是怎樣用來完成不同的任務的嗎?通過插拔電纜和開閉開關完成硬佈線,往往幾個人還要忙上好一陣子。

這樣的硬佈線過程可以自動化、重複利用嗎?馮諾依曼(Von Neumann)提出了儲存程式控制的概念。

1 馮諾依曼提出的儲存程式控制概念

2 馮諾依曼機的組成

2.1 硬體組成

2.1.1 程式要執行,需要先將可執行檔案從輸入裝置(如磁碟),載入到記憶體,可執行檔案執行時,可將一些資料輸出到輸出裝置。

2.1.2 程式和資料在儲存器的儲存:

2.1.3 控制器從儲存器中取出指令,譯碼後產生控制訊號:

2.1.4 控制訊號控制運算器做運算:

2.2 計算機軟體系統

計算機軟體系統通常被分為系統軟體和應用軟體兩大類。計算機軟體包括程式、資料及相關的文件資料。各軟體雖然用途不同,但他們的共同點是都儲存在計算機儲存器中,以某種格式編碼書寫的程式或資料。

計算機系統軟體能保證計算機按照使用者的意願正常執行,為滿足使用者使用計算機的各種需求,幫助使用者管理計算機和維護資源執行使用者命令、控制系統排程等任務。應用軟體是直接面向用戶需要的,它們可以直接幫助使用者提高工作品質和效率,甚至可以幫助使用者解決某些難題。

系統軟體是指擔負控制和協調計算機及其外部裝置、支援應用軟體的開發和執行的一類計算機軟體。系統軟體一般包括作業系統、語言處理程式、資料庫系統和網路管理系統。

應用軟體是指為特定領域開發、併為特定目的服務的一類軟體。應用軟體一般分為兩類:

一類是為特定需要開發的實用型軟體,如會計核算軟體、工程預算軟體和教育輔助軟體等;

另一類是為了方便使用者使用計算機而提供的一種工具軟體,如用於文書處理的Word、用於輔助設計的AutoCAD及用於系統維護的瑞星防毒軟體等。

3 計算機的層次結構與程式語言

計算機系統可以從硬體到軟體抽象出不同的層次,每一個層次執行在各自的平臺(相鄰下一層)上:

需要注意的是,對於PC端的開發,其平臺是各PC端的作業系統,對於移動端開發,其平臺是移動端作業系統,對於web端開發,其平臺是各型別的瀏覽器。

嵌入式程式設計是直接在硬體層面的程式設計,程式載入(固化)到可擦寫ROM儲存器(掉電可讀),所謂的燒錄也是通過較高電壓硬性通過物理的方式改變儲存單元。隨著硬體技術的發展,ROM與RAM的界限也已越來越模糊了。

4 計算機指令格式

計算機的設計(主要是CPU)可從指令集出發,設計出對應的硬體邏輯層和微程式碼層,指令集的指令格式一般可以表示為:

I 指令集與硬體邏輯層具有一一對應關係,根據一套需要設計的指令集設計出CPU(硬體邏輯層),或者說,一個CPU(硬體邏輯層)系列有對應的一個指令集。

II 在指令集的基礎上可以設計出不同的作業系統。

5 編碼與程式設計

指令和處理的物件都要二進位制化。

5.1 資料的編碼

5.1.1 數的編碼:包括負整數的補碼方案,浮點數的IEEE754方案;

5.1.2 字元編碼:ASCII、BG2312、Unicode等及Unicode的儲存方案utf;

5.1.3 聲音編碼:包括音波的取樣與量化;

5.1.4 影象編碼:點陣圖的畫素取樣與量化及向量圖的數學公式表示;

5.2 指令集(指令編碼):指令集包括一套CPU可以完成的操作集合,每一條指令語句由操作碼和運算元(上述的資料編碼)組成(特殊指令語句可以沒有運算元),按指令格式編碼為1-6個位元組的二進位制數序列;

5.3 機器語言與機器語言程式:機器語言就是符合上述指令格式編碼的語句集合,按指令格式編寫二進位制序列組合便是機器語言程式;

5.4 組合語言、彙編器、彙編程式,組合語言建立與指令集的一一對應關係,按組合語言編寫彙編程式,由彙編器彙編為機器語言程式;

5.5 高階語言、編譯器或直譯器、高階語言程式:高階語言建立語法規則建立與組合語言或機器語言的對應程式。由高階語言編寫的高階語言程式由編譯器編譯或直譯器解釋為機器語言,由CPU執行。

5.5.1 編譯、解釋

不同的平臺(層次)、不同的領域,有不同的程式語言,當然也有不同的編譯器,都是多對多的關係。當然,相同的一份程式碼,如果有不同作業系統的編譯器的話,也可以編譯為用於不同平臺(作業系統)的可執行檔案。

另外,即使相同的平臺,相同的原始碼,IDE環境的工程選項中,還可以選擇不同的編譯選項,如Debug、Release版就是不同的編譯選項的組合。

5.5.2 連線

對於大型程式來說,需要包含多個源程式檔案,加上庫檔案,這些檔案需要連線到一起,形成一個整體的可執行檔案。

6 C的hello.c程式的機器語言、組合語言

C語言也稱為中級語言,除了可 直接操作記憶體外,還在於其沒有中間層,與彙編、機器語句有較清晰的對應關係。

7 hello.c程式在硬體中的執行流程

7.1 程式由硬碟載入到記憶體

7.2 cpu執行程式及輸出

-End-

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Vue 原始碼淺析:初始化 init 過程