你知道世界上第一台通用計算機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-
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!