《程序是怎樣跑起來的》第十章讀后感
本章的主題是“通過匯編語言了解程序的實(shí)際構(gòu)成”,本章內(nèi)容比較多,我在這里列出我能理解的東西。
在文章的開頭,作者以本地代碼為切入點(diǎn),來研究程序運(yùn)行的本質(zhì),這里列出了幾個(gè)基本概念如下:
在本地代碼中附帶上表示其功能的英語單詞縮寫,這種縮寫叫助記符,使用助記符的編程語言就叫匯編語言,用匯編語言編寫的源代碼最終也要轉(zhuǎn)換為本地代碼才能運(yùn)行,負(fù)責(zé)轉(zhuǎn)換的程序叫匯編器,這一處理行為叫匯編,反過來,本地代碼也可以轉(zhuǎn)換為匯編語言的源代碼,其程序叫反匯編程序其逆變換行為叫反匯編,匯編語言的源代碼和本地代碼是一一對應(yīng)的。
匯編語言的源代碼,是由轉(zhuǎn)換成本地代碼的指令和針對匯編器的偽指令構(gòu)成的,偽指令負(fù)責(zé)把程序構(gòu)造和匯編方法指示給匯編器。由偽指令圍起來的部分叫段定義,作者在本章中用一個(gè)長的代碼清單將這些全部羅列出來。匯編語言指令的語法結(jié)構(gòu)是操作碼+操作數(shù),這里的操作碼也就是上文提到的轉(zhuǎn)換成本地代碼的指令。CPU種類決定了能使用何種形式的操作碼,以下是32位 x86系列CPU用的操作碼。

本地代碼加載到內(nèi)存運(yùn)行之后,CPU讀出這些指令和數(shù)據(jù),再將其儲存在寄存器中處理。

書中還簡單介紹了圖一中的mov指令,在程序運(yùn)行時(shí),會在內(nèi)存上分配一個(gè)棧,是存儲臨時(shí)數(shù)據(jù)的區(qū)域,存儲叫入棧,讀出叫出棧,其是通過使用push指令和pop指令進(jìn)行入棧和出棧的,如下圖。

以上是我在第十章掌握的知識。
浙公網(wǎng)安備 33010602011771號