【cs基礎】CPU是怎樣執行代碼的

基礎概念

  • 程序是指令和數據的組合體,被複制到內存才能運行。
  • 內存地址是保存指令和數據的場所,通過地址標記
  • CPU 能識別和執行的只有機器語言。

CPU 結構

CPU 內部由寄存器、控制器、運算器和時鐘四個部分構成,由電流信號相互連通
- 寄存器: 保存指令、數據
- 控制器: 讀取內存輸入寄存器,控制指令流轉
- 運算器: 運算寄存器中的數據
- 時鐘:發出計時信號,代表運算速度

寄存器

程序是把寄存器作爲對象來描述的,程序運行就是依賴寄存器的控制。
- 存儲的內容既可以是指令也可以是數據
- 數據分爲“用於運算的數值”和“表示內存地址的數值”兩種。數據種類不同,存儲該數值的寄存器也不同

累加寄存器 –> 運算的數值
基址寄存器和變址寄存器 –> 表示內存地址的數值
標誌寄存器 –> 運算處理後的CPU的狀態
程序計數器 –> 下一條指令所在內存的地址
棧寄存器 –> 棧區域的起始地址

程序函數的處理

  • 機器語言的 call 指令和 return 指令能夠解決這個問題。函數調用使用的是 call 指令,而不是跳轉指令。在將函數的入口地址設定到程序計數器之前,call 指令會把調用函數後要執行的指令地址存儲在名爲棧的主存內。函數處理完畢後,再通過函數的出口來執行 return 命令。return 命令的功能是把保存在棧中的地址設定到程序計數器中

CPU 處理

CPU 能執行的主要機器語言指令

  • 數據轉送指令 –> 寄存器和內存、內存和內存、寄存器和外圍設備之間的數據讀寫操作
  • 運算指令 –> 用累加寄存器執行算術運算、邏輯運算、比較運算和移位運算
  • 跳轉指令 –> 實現條件分支、循環、強制跳轉等
  • call/return指令 –> 函數的調用/返回調用前的地址

參考:
《程序是怎樣跑起來的》一書
http://cs.hnjk.net/T24Courses/2411/main/page/c040200.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章