CSAPP 計算機系統漫遊

2021-08-13 06:14:45 字數 731 閱讀 7955

資訊=位+上下文

#include 

int main()

在linux中可以通過hexdump -c hello.c的ascii碼表示:

由於書中顯示的是十進位制,故轉換成十進位制與書中一致,例如\n 十六進製制0a 對應的10進製 10

高階語言–>機器語言

為了能讓hello.c執行,每條c語言(高階語言)需轉換為低階語言指令。然後這些指令按照一種稱為可執行目標程式的格式打包好,並以二進位制磁碟檔案的形式存放起來。目標程式也稱為可執行目標檔案。

例如:

gcc -o hello hello.c

預處理階段

由於程式第一行包含了stdio.h標頭檔案,在預處理階段會把stdio.h的內容直接插入程式文字中,從hello.c—>hello.i.

編譯階段

編譯器將文字檔案hello.i翻譯成文字檔案hello.s,它包含組合語言.

彙編階段

彙編器將hello.s翻譯成機器語言指令,把這些指令打包成一種叫做可重定位目標程式(relocatable object program)的格式。生成檔案hello.o,hello.o是乙個而僅僅只檔案。

鏈結階段

hello程式呼叫了printf()函式,printf函式存在於乙個名為printf.o的單獨的預編譯好了的目標檔案中,而這個檔案必須以某種方式合併到我們的hello.o程式中。最後生成可執行檔案hello.

CSAPP 1 計算機系統的漫遊

首先,儲存與計算機上的資訊都是位,計算機通過上下文判斷儲存資訊的型別 文字檔案 二進位制檔案 1.c程式格式的流轉 0 hello.c 通過預處理器 cpp 增加標頭檔案後得到hello.i 0 hello.i通過編譯器編譯 ccl 得到hello.s 匯程式設計序 0 hello.s通過彙編器 a...

計算機系統漫遊

經過昨天的游泳,雖然早上起來有些疲憊,但還是看了 深入了解計算機系統 的書的第一章,在今天的學習中,我對快取的概念有了重新的認識 暫存器是l1快取的快取,l1快取是l2快取的快取,l2快取是主存的快取,主存是本地磁碟的快取,本地磁碟是網路上遠端伺服器硬碟的快取。雖然以前對快取的概念很清楚,但從沒想的...

計算機系統漫遊

個人部落格,想要搭建個人部落格的可以進來看看 hello.c includeint mian 這個源程式實際上由0和1組成的序列,每8位為一組,稱為位元組 每個位元組表示程式中的某個文字字元,現在用ascii碼來表示文字字元,就是用乙個唯一的單位元組大小整數值來表示1個字元 有ascii字元組成的字...