第一章 計算機系統漫遊
hello.c就是只由ascii字元構成的檔案稱為文字檔案,所有其他檔案都稱為二進位制檔案。
系統中所有的資訊都是由一串位表示的,區分不同資料物件的唯一方法是讀這些資料物件時的上下文。
hello.c通過gcc編譯器翻譯成乙個可執行目標檔案hello分四個階段:
1、預處理階段。預處理器(cpp) hello.i,被修改的源程式(文字)
2、編譯階段。編譯器(ccl) hello.s,匯程式設計序(文字)
3、彙編階段。彙編器(as) hello.o(二進位制),位元組編碼為機器語言指令
4、鏈結階段。鏈結器(ld)把包含庫函式的目標檔案和*.o合併成hello(二進位制),是可執行目標檔案。
1、程式**和資料
2、堆3、共享庫。空間中間部分存放像c標準庫和數學庫這樣共享庫的**和資料的區域
4、棧。使用者虛擬位址空間頂部為使用者棧
5、核心虛擬儲存器。位址空間頂部的區域為核心保留的。
檔案是位元組序列。i/o裝置、網路都可以視為檔案。
第一部分 程式結構和執行
第2章 資訊的表示和處理
用iso c99來編譯程式prog.c: unix> gcc -std=c99 prog.c
深入理解計算機系統 2
程式抽象流程 在c語言中 1 c預處理器 cpp 擴充套件源 插入所有用 include 命名指定的檔案,並擴充套件所有用 define 宣告指定的巨集。2 編譯器 ccl 產生兩個源 的彙編 名字命名分別為p1.s 3 彙編器 as 將彙編 轉化為二進位制目標 為p1.o 目標 是機器 的一種形式...
深入理解計算機系統 2
第一部分 程式結構和執行 我們對計算機系統的探索是從學習計算機本身開始的 它是由處理器和儲存器子系統組成 在核心部分 我們需要方法來表示基本資料型別 比如整數和實數運算的近似值 然後我們考慮機器級指令如何操作這樣的資料 以及編譯器如何將c程式翻譯成這樣的指令 接下來研究幾種實現處理器的方法 幫助我們...
深入理解計算機系統(2) 計算機系統漫遊
這一節的內容有些枯燥,很多內容都是文字描述。但是對於後續的學習是有幫助的,一些概念提前有個簡單的了解多少會有些幫助。這一節的學習內容都是一些概念和知識的簡要介紹,沒有過多地深入,旨在為後續學習做個鋪墊。上文最後部分提到,計算機內部執行程式時,用到了很多複製的操作,此處為鏈結。從程式設計師的角度來說,...