程式是怎麼跑起來的? —— CPU 是什麼?C/C++程式的執行
1. 概念初步
- 程式:計算機的程式,和做飯、運動會的程式一樣,指的是“做事的先後次序”;
- 程式的組成:程式是指令(及物動詞)和資料(賓語)的組合體;
- C 語言
printf("hello\n");
,這個簡單的程式,printf
是指定,hello
是資料;
- C 語言
- 機器語言:CPU 能夠直接識別和執行的只有機器語言。
- 使用C、C++、Java 等高階語言編寫的程式最後都會轉化為機器語言;
- 正在執行的程式儲存在什麼位置?
- 硬碟和磁碟等媒介上儲存的程式被複製到記憶體(記憶體中是其副本)後才能執行;
- 記憶體地址:標記和指定命令和資料的場所;
- 地址由整數值表示;
- CPU 的作用:
- 根據程式的指令來進行資料運算,並控制整個計算機的裝置;
2. CPU 是什麼?
CPU 負責的就是解釋和執行最終轉換成機器語言的程式內容;
CPU 和 記憶體(memory)是由許多電晶體組成的電子部件,通常稱為 IC(Integrated Circuit,積體電路);
CPU 的組成(各部分之間的電訊號相互流通):
暫存器;
暫存指令,資料等處理物件;可將暫存器看做記憶體的一種;根據種類的不同,一個 CPU 內部會有 20~100 個暫存器;
控制器;
控制器負責把記憶體上的指令、資料等讀入暫存器,並根據執行的結果來控制整個計算機。
運算器:運算器負責運算從記憶體讀入暫存器的資料。
時鐘:負責發出 CPU 開始計時的時鐘訊號;
- Pentium 2GHz 就表示時鐘訊號的頻率為 2GHz
3. C++程式的執行
生成一個 C++ 程式共有三個步驟:
- ①預處理:程式碼在前處理器中執行,前處理器會處理程式碼中的元資訊(meta-information)
- 預處理指令以 # 字元開始,
#include <iostream>
就是如此,本例中,include 指令是告訴前處理器,提取 iostream 標頭檔案中的所有檔案內容並提供給當前檔案, - 當然標頭檔案最常見的用途是宣告在其他地方定義的函式;
- 預處理指令以 # 字元開始,
- ②編譯:程式碼被編譯為計算機可以識別的目標檔案;
- ③連結:獨立的目標檔案連結在一起形成一個應用程式;