《程序的編譯,鏈接,運行》讀書筆記

《程序的編譯,鏈接,運行》讀書筆記


這本書主要介紹的是一個程序員編寫的源代碼如何變成一堆01010101010.。。。。。。。的計算機指令的。想詳細瞭解請查看相關的知識。


1.對於人來說:

程序員編寫程序時是類型(int ,double,float,char ,void*,struct,class)變量名,操作符,控制流語句。

對於編譯器來說類型是用來解析數據塊的,變量名是虛擬內存地址,變量的值是存儲在變量名對應的虛擬地址上的01010101.。。。。編譯器通過變量的類型來處理和解析變量名對應的數據00101001001.。。。。。的。

計算機中存儲的都是010101001100110010.。。。。。。。。。。。的數據,它要對這些數據解析給人們可讀,它就要根據對應文件的相關信息進行解析,從而達到人類可讀,否則計算機就給你0010110100110。。。。。你一個看不懂。


2.人類看世界:

人們看世界的時候,會通過膚色來判斷這個人是老外,通過是否會動來區分動物和植物,通過兔子的尾巴短,猴子的尾巴長等等來解析這些世界上看到的東西,描述出來實現交流。世界上的任何東西都有各自的特性,這些特性,而這些特性就是各個物質的自我描述信息,而人類通過這些字描述信息來通過人們公認的標準來解析成爲了百科全書。


3.計算機看計算機中的文:

計算機中的文件的存儲都是0101010100110000.。。。。。。。。。的文件,每個文件都有自己的描述信息,這些描述信息就是計算機科學建立的標準,例如圖片有各種類型,它們的描述信息怎麼存儲在文件的什麼部位,它包含了圖片的那些描述信息才能讓計算機解析出圖片並渲染到顯示器上讓人們可讀。視頻,音樂的文件存儲也要遵從計算機科學設定的標準,都要有自描述信息上下文,這樣,計算機對應的文件的應用程序通過這些字描述上下文才能很好的解析對應的不同類型的文件。例如計算機應用程序通過圖片的自描述信息上下文知道了圖片的寬高,是否壓縮,它的像素點信息是怎麼存儲的,通過這些信息計算機就能把一張完整的圖片呈現給人們,畢竟計算機是爲我們服務的。


4.其實程序文件並不神奇:

應用程序可執行文件和別的計算機文件都是一樣的,計算機對它的存儲也是010101010010101.。。。。。。。。的形式。它也有自我描述的上下文,源代碼被編譯器編譯之後得到的是應用程序的自描述上下文加上居於虛擬內存地址的CPU指令。當你點擊應用程序運行應用程序時,計算機就會去讀取應用程序的自描述上下文的信息,看改應用程序是否是可運行的,是否是完整的,是否是支持改平臺的應用程序,是否是該CPU框架的執行指令,該應用程序的入口地址在什麼地方,當計算機通過上下文得到改程序符合運行條件,於是它就新建這個應用程序的運行環境-應用程序進程,應用程序進程建立完成之後就會去讀取應用程序的入口函數地址作爲起點運行改程序,知道應用程序運行結束,或者進程被系統關閉。


5.小結

編譯器通過類型解析數據塊,對於人來說變量名是可讀的字符串,對於編譯器來說是虛擬內存地址,每個計算機文件都有字描述上下文,這些自描述上下文都是計算機科學定義的標準或者是行業內部標準,不同文件都有不同應用程序處理,對應的應用程序通過這些自描述信息對數據進行解析,使解析出來的東西能夠被人們所認知,實現計算機服務人類的目的。





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