前言
本文為《學會 C 語言》一書的學習筆記。
認識程式
- 程式(Programs)或稱為電腦程式(Computer Programs)可以描述電腦如何完成指定工作。
- 程式是使用指定程式語言(Program Language)所撰寫的特殊符號,再進一步編寫成程式碼,程式碼可以告訴電腦解決指定問題的步驟。
- 電腦程式的內容主要分為兩大部分:資料(Data)與處理資料的操作(Operations)。
- 為了讓電腦能夠看懂程式,程式需要依據程式語言的規則、結構和語法,以指定文字或符號來撰寫程式。
電腦真正的名稱應該是「計算機」。
程式是如何執行
- 程式語言建立的程式碼最後都會編譯成電腦看得懂的機器語言,這些指令是 CPU 支援的「指令集」(Instruction Set)。
- 不同的 CPU 支援不同的指令集。
- CPU 只懂一種語言,也就是它能執行的機器語言。
- CPU 使用匯流排(Bus)連接周邊裝置。
- 在電腦的主記憶體會儲存機器語言的程式碼和資料。
- CPU 會從記憶體取出一個個的機器語言指令,然後依序地執行它。
程式邏輯的基礎
使用程式語言的主要目的是撰寫程式碼來建立程式,需要使用電腦的程式邏輯(Program Logic)來撰寫程式碼。電腦才是真正的「目標執行者」(Target Executer),負責執行寫好的程式。
中央處理器
- 電腦的 CPU 提供實際的運算功能,個人電腦都是使用晶片
IC
(Integrated Circuit),主要功能是使用ALU
(Arithmetic Logic Unit)的邏輯電路進行運算,來執行機器語言的指令。 - CPU 擁有很多暫存器(Registers),暫存器是位在 CPU 中的記憶體,可以暫時儲存資料或機器語言的指令。
- CPU 還擁有一些控制「取出和執行」(
Fetch & Execute
)用途的暫存器。
暫存器 | 說明 |
---|---|
IR (Instruction Register) |
指令暫存器,儲存目前執行的機器語言指令 |
IC (Instruction Counter) |
指令計數暫存器,儲存下一個執行指令的記憶體位址 |
MDR (Memory Data Register) |
記憶體資料暫存器,儲存目前從記憶體取得的資料 |
MAR (Memory Address Register) |
記憶體位址暫存器,儲存從記憶體取得資料的記憶體位址 |
CPU 執行速度是依據 Clock
產生的時脈,以 MHz
為單位的速度來執行儲存在 IR
的機器語言指令。在執行後,以 IC
暫存器儲存的位址,透過 MDR
和 MAR
暫存器從匯流排取得記憶體的下一個指令,然後執行指令,只需重複此過程即可執行完整的程式。
記憶體
當電腦執行程式時,作業系統將儲存在硬碟或軟碟的執行檔案載入電腦主記憶體(Main Memory),這就是 CPU 執行的機器語言指令,CPU 從記憶體依序載入指令並執行。
事實上,程式碼本身和使用的資料都是儲存在 RAM
(Random Access Memory),每一個儲存單位有數字編號,稱為「位址」(Address)。
電腦 CPU 存取記憶體資料的步驟如下:
- 送出讀寫的記憶體位址:當 CPU 讀取程式碼或資料時,需要取得記憶體位址,例如位址
4
。 - 讀寫記憶體儲存的資料:CPU 從指定位址讀取記憶體內容,例如位址
4
的內容是01010101
。
每一個
0
或1
是一個「位元」(Bit
),八個位元稱為「位元組」(Byte
)。
每次 CPU 從記憶體讀取的資料量,視 CPU 與記憶體間的匯流排而定,所謂 32 位元或 64 位元的 CPU,就是指每次可以讀取 4 個位元組或 8 個位元組資料來進行運算。CPU 每次可讀取的資料越多,效率也就越高。
輸入/輸出裝置
電腦的輸入/輸出裝置(Input/Output Devices)是程式的窗口,讓使用者輸入資料和顯示程式的執行結果。
對於電腦來說,當鍵盤被按下大寫字母 A
時,傳入的是一個位元組的數字(01000001
)。個人電腦主要是使用 ASCII
(American Standard Code for Information Interchange)碼作為電腦編碼系統。
中文字比較多,需要使用兩個位元組的數值來代表常用的中文字,繁體中文的內碼是 Big5
,簡體中文有 GB
和 HZ
。
目前 Windows 作業系統支援「統一字碼」(Unicode),是由 Unicode Consortium 組織所制定的一個包括全世界文字的內碼集,即 ISO 10646
內碼集。常用的兩種編碼方式有:UTF-8
為 8
位元編碼;UTF-16
為 16
位元編碼。
次儲存裝置
次儲存裝置是一種能夠長時間和提供高容量儲存資料的裝置,如硬碟機和光碟機等。
儲存在電腦的主記憶體在關閉電源後,資料就消失了,所以需要將資料儲存在次儲存裝置,直到需要編譯和執行程式時,再將檔案內容載入主記憶體來執行。
參考資料
- 陳會安(2016)。學會 C 語言。台北市:旗標。