程序是怎样跑起来的:第一章-对程序员来说CPU是什么
文章目錄
- 一:CPU的內部結構解析
- (1)CPU的作用
- (2)CPU的構成
- (3)簡單了解內存
- (4)程序運行的簡單描述
- 二:CPU是寄存器的集合體
- (1)CPU是寄存器的集合體
- (2)寄存器的分類
- (3)程序員眼中的CPU
CPU是英文Central Processing Unit(中央處理器)的縮寫,也就是計算機的大腦,其內部由數以萬計的晶體管構成。這些都是大家耳熟能詳的,除此之外,程序員還需要理解CPU如何運行,特別是要弄清楚負責保存指令和數據的寄存器的機制。了解了寄存器,也就自然而然理解了程序運行機制。
一:CPU的內部結構解析
(1)CPU的作用
下面這一張圖是程序運行的流程,假設你用C語言編寫了一段程序
其中CPU所負責的就是解釋和運行最終轉換為機器語言的程序內容
CPU和內存是由許多晶體管組成的電子部件,通常稱為IC(Integrated Circuit集成電路)
(2)CPU的構成
CPU的四個構成部分如下
他們各自功能如下
(3)簡單了解內存
我們說的內存通常指的是計算機的主存儲器,也稱為主存。它通過控制芯片等與CPU相連,主要負責存儲指令和數據,主存由可讀寫的元素構成,每個字節(1個字節等于8個二進制位)都帶有一個地址編號,CPU可以通過改地址讀取內存中的指令和數據,當然也可以寫入數據。內存具有斷電易失性
(4)程序運行的簡單描述
啟動程序后,根據時鐘信號,控制器從內存中讀取指令和數據,通過對這些指令加以解釋和運行,運算器對數據進行運算,控制器根據運算結果控制計算機
二:CPU是寄存器的集合體
首先明確一點,CPU的四個部分中,我們只需重點關注寄存器即可
為什么寄存器這么重要呢,因為程序是把寄存器作為對象來描述的
(1)CPU是寄存器的集合體
首先請看下面用匯編語言編寫的一段程序
匯編語言采用助記符來編寫程序,助記符通常為一些具有某種指令功能的英語單詞的縮寫,比如數據的存儲(move)和相加(addition)。匯編語言和機器語言基本是對應的,這也是我們用匯編來說明CPU運行的原因,通常我們將匯編語言編寫的程序轉化為機器語言的過程稱為匯編,而相反過程則稱之為反匯編
從上述代碼中可以看出,機器語言級別的程序是通過寄存器處理的,也就是其直接操控寄存器,這也是為什么說“CPU是寄存器的集合體的原因”
eax和ebp都是寄存器的名稱,正如內存的存儲場所使用地址編號區分,寄存器的種類則是通過名字區分
上面的描述可能對于新手來說有點晦澀難懂,但不要擔心,你不需要了解的很深入。只需要明白,使用高級語言編寫的程序會在編譯后轉化為機器語言,然后再通過CPU內部的寄存器來處理
(2)寄存器的分類
不同類型的CPU,其內部寄存器的數量,種類以及寄存器的存儲的數值范圍都是不同的。根據功能,寄存器大致可以劃分為八類
- 上述代碼中的eax和ebp分別就是累加寄存器和基址寄存器
(3)程序員眼中的CPU
程序員眼中的CPU是寄存器的集合體
程序計數器,累加寄存器,標志寄存器,指令寄存器和棧寄存器都只有一個;基址寄存器,變址寄存器和通用寄存器都不止一個
總結
以上是生活随笔為你收集整理的程序是怎样跑起来的:第一章-对程序员来说CPU是什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对于ssh和hadoop联系讲解和ssh
- 下一篇: angularJS 表单验证