基礎(chǔ)概念
- 程序是指令和數(shù)據(jù)的組合體悠就,被復(fù)制到內(nèi)存才能運行炸茧。
- 內(nèi)存地址是保存指令和數(shù)據(jù)的場所,通過地址標記。
- CPU 能識別和執(zhí)行的只有機器語言他去。
CPU 結(jié)構(gòu)
CPU 內(nèi)部由寄存器媳搪、控制器爸吮、運算器和時鐘四個部分構(gòu)成纫事,由電流信號相互連通
- 寄存器: 保存指令侠驯、數(shù)據(jù)
- 控制器: 讀取內(nèi)存輸入寄存器,控制指令流轉(zhuǎn)
- 運算器: 運算寄存器中的數(shù)據(jù)
- 時鐘:發(fā)出計時信號赂乐,代表運算速度
寄存器
程序是把寄存器作為對象來描述的运嗜,程序運行就是依賴寄存器的控制。
- 存儲的內(nèi)容既可以是指令也可以是數(shù)據(jù)
- 數(shù)據(jù)分為“用于運算的數(shù)值”和“表示內(nèi)存地址的數(shù)值”兩種奋救。數(shù)據(jù)種類不同,存儲該數(shù)值的寄存器也不同
累加寄存器 --> 運算的數(shù)值
基址寄存器和變址寄存器 --> 表示內(nèi)存地址的數(shù)值
標志寄存器 --> 運算處理后的CPU的狀態(tài)
程序計數(shù)器 --> 下一條指令所在內(nèi)存的地址
棧寄存器 --> 棧區(qū)域的起始地址
程序函數(shù)的處理
- 機器語言的 call 指令和 return 指令能夠解決這個問題盾戴。函數(shù)調(diào)用使用的是 call 指令尖啡,而不是跳轉(zhuǎn)指令畏梆。在將函數(shù)的入口地址設(shè)定到程序計數(shù)器之前铣猩,call 指令會把調(diào)用函數(shù)后要執(zhí)行的指令地址存儲在名為棧的主存內(nèi)峦椰。函數(shù)處理完畢后,再通過函數(shù)的出口來執(zhí)行 return 命令道批。return 命令的功能是把保存在棧中的地址設(shè)定到程序計數(shù)器中
CPU 處理
CPU 能執(zhí)行的主要機器語言指令
- 數(shù)據(jù)轉(zhuǎn)送指令 --> 寄存器和內(nèi)存、內(nèi)存和內(nèi)存朴读、寄存器和外圍設(shè)備之間的數(shù)據(jù)讀寫操作
- 運算指令 --> 用累加寄存器執(zhí)行算術(shù)運算屹徘、邏輯運算、比較運算和移位運算
- 跳轉(zhuǎn)指令 --> 實現(xiàn)條件分支衅金、循環(huán)噪伊、強制跳轉(zhuǎn)等
- call/return指令 --> 函數(shù)的調(diào)用/返回調(diào)用前的地址
參考:
《程序是怎樣跑起來的》一書
http://cs.hnjk.net/T24Courses/2411/main/page/c040200.html