# 第一章 CPU簡介
CPU就是執行所有程序的工作單元。
## 詞匯表:
**Instruction**:CPU的原指令,例如:將數據在數據區與寄存器之間進行轉移操作,對數據進行操作,算術操作。原則上每種CPU會有自己獨特的一套指令構架(Instruction Set Architecture(ISA))。
**Machine code**: CPU的指令碼(機器碼),每條指令都會被譯成指令碼。
**Assembly Language**: 匯編語言,助記碼和其他一些例如宏那樣的特性組成的便于程序員編寫的語言。
**CPU register**:CPU寄存器,每個CPU都有一些通用寄存器(General Purpose Registers(GPR))。X86有8個,x86-64(amd64)有16個,ARM有16個,最簡單去理解寄存器的方法就是,把寄存器想成一個不需要類型的臨時變量。想象你在用高級編程語言,并且只有8個32bit的變量。只用這些可以完成非常多的事情。
那么機器碼跟程序語言有什么區別那?對于人類來講,使用例如C/C++, Java, Python這樣編程語言會比較簡單,但是CPU更喜歡低級抽象的東西。但愿有一天CPU也能直接來執行高級語言的語句,但那肯定會非常的復雜。相反人類使用匯編語言會感覺不很方便,因為它非常的低級。而且很難用它寫非常長的代碼并不出現錯誤。有一種將高級語言轉換到匯編語言的程序,它被叫做編譯器。
- 第一章 CPU簡介
- 第二章 Hello,world!
- 第三章? 函數開始和結束
- 第四章 棧
- Chapter 5 printf() 與參數處理
- Chapter 6 scanf()
- CHAPER7 訪問傳遞參數
- Chapter 8 一個或者多個字的返回值
- Chapter 9 指針
- Chapter 10 條件跳轉
- 第11章 選擇結構switch()/case/default
- 第12章 循環結構
- 第13章 strlen()
- Chapter 14 Division by 9
- chapter 15 用FPU工作
- Chapter 16 數組
- Chapter 17 位域
- 第18章 結構體
- 19章 聯合體
- 第二十章 函數指針
- 第21章 在32位環境中的64位值
- 第二十二章 SIMD
- 23章 64位化
- 24章 使用x64下的SIMD來處理浮點數
- 25章 溫度轉換
- 26章 C99的限制
- 27章 內聯函數
- 第28章 得到不正確反匯編結果
- 第29章 花指令
- 第30章 16位Windows
- 第31章 類
- 三十二 ostream