這一些列文章的主要目的:理解程序如何執(zhí)行爷贫,打好基礎(chǔ)认然,很多東西是我們原來在學(xué)校中學(xué)過的內(nèi)容补憾,知道的就當(dāng)復(fù)習(xí)加深影響,不知道的就當(dāng)新的知識卷员,總之盈匾,我們的目的達(dá)到就行。
cpu的主要組成是四部分:控制器毕骡,運算器削饵,寄存器,時鐘
對于程序員來說未巫,我們只要了解寄存器即可窿撬,我們可以把cpu直接理解成各種寄存器的集合,程序的執(zhí)行過程就是高級語言轉(zhuǎn)換成機(jī)器語言叙凡,然后再通過cpu內(nèi)部的寄存器來進(jìn)行處理劈伴。
這里說明幾種主要寄存器和功能:
- 累加寄存器:存儲運算數(shù)據(jù)及運算后數(shù)據(jù)
- 標(biāo)志寄存器:存儲運算處理后的cpu的狀態(tài)
- 程序計數(shù)器:存儲下一條指令的所在內(nèi)存的地址
- 指令寄存器:存儲指令,cpu內(nèi)部使用
- 棧寄存器:存儲棧區(qū)域的起始地址
說完寄存器主要功能握爷,我們來繼續(xù)說函數(shù)的調(diào)用機(jī)制:
簡單來說跛璧,程序計數(shù)器從起始位置開始一條一條的執(zhí)行命令,當(dāng)遇到函數(shù)調(diào)用時新啼,使用call指令跳到函數(shù)入口地址赡模,然后在繼續(xù)執(zhí)行,當(dāng)執(zhí)行完畢之后师抄,再通過return指令調(diào)用棧寄存器中保存的下一條指令的地址來執(zhí)行結(jié)束函數(shù)之后的下一條地址漓柑。
其實cpu的處理很簡單,就是這幾個步驟叨吮,當(dāng)高級語言轉(zhuǎn)換成機(jī)器語言后辆布,就沒有多少復(fù)雜的功能,這里再來說一下機(jī)器語言指令的幾個主要類型和功能:
- 數(shù)據(jù)傳輸指令:寄存器和內(nèi)存茶鉴,和外圍設(shè)備锋玲,內(nèi)存和內(nèi)存之間的讀寫操作
- 運算指令:用累加寄存器執(zhí)行算術(shù)運算
- 跳轉(zhuǎn)指令:實現(xiàn)條件分支,循環(huán)等
- call和return指令:函數(shù)的調(diào)用涵叮、返回調(diào)用前的地址
好了惭蹂,第一章就這么多內(nèi)容,理解一下感覺就是梳理了程序執(zhí)行的流程割粮。