4. 執行hello程式
最近重啟了寫部落格,都說念念不忘必有迴響。自從上一遍部落格,到現在已經過去了快兩年的時間。在這期間一直在想著什麼時候寫個部落格呀,什麼時候再摸著鍵盤一點點的碼字啊,心裡一直在想,直到現在,終於有了行動。
看著乙個乙個的字,隨著鍵盤的敲擊,一串串躍然於螢幕之上,心裡有說不出來的平靜與喜悅。平靜的是,好像世間只有自己,任憑思想在激盪;喜悅的是,世間竟然有這麼奇妙的東西,可以靠著幾下簡單的敲擊,就能把腦中所想記錄下來。
這篇部落格主要是總結下,最近在看的《深入理解計算機系統》的第一章。
第一章的主要內容就像標題所說的那樣,是計算機系統的漫遊。漫遊漫遊,顧名思義,漫漫的遊覽。有慢之意,也有遊之意。主要是帶領大家慢慢的看看計算機是什麼,都有什麼,大概是怎麼執行,熟悉一下這個奇妙的東西。
首先我們來看乙個象徵了計算機生命起源的程式,hello.c
#include
intmain()
這就是乙個源程式,它其實是程式設計師寫的乙個文字,最終在計算機儲存的都是一串串0和1的序列。
每種字元都有它的編碼,比如『a』對應的數字是97,轉換成2進製就是01100001,計算機就是儲存了這麼多的0和1。
我們看到的這個int main實際就是計算機把好多的0和1,然釋成我們可以理解的文字,顯示在螢幕上的。
hello.c的表示方法說明了乙個基本思想:系統中所有的資訊——包括磁碟檔案、記憶體中的程式、記憶體中存放的和使用者資料以及網路上傳送的資料,都是一串位元(0和1)表示的。區分不同資料物件的唯一方法是我們讀取到這些資料物件的上下文。
比如乙個同樣的位元組序列(一串位元)可能表示乙個整數、浮點數、字串或者機器指令。
總結起來就是,資訊就是位+上下文
對於剛才的hello.c計算機是不能直接執行的,到現在為止,計算機對這個檔案的理解只是乙個文字檔案,就是用來給人讀的。
我們要想這個文字檔案執行,需要把它轉換成另一種檔案格式。
(ps:把程式設計師和人類分為兩個範疇似乎有點不太友好哈)
在這個過程中,位(01串)發生了變化,上下文也發生了變化,資訊也就不同了,這也印證了上文所說資訊就是位+上下文
剛才我們大致了看了下原始檔是怎麼儲存,和如何由文字檔案變成可執行檔案的。
不過這些都有點虛,我們還想看看這些東西是如何落到實處的,也就是怎麼和現實世界聯絡起來的。
也就是承載這些運算的載體——硬體,是怎麼樣的。
深入理解計算機系統1
hello.c include int main 源程式 原始檔 實際上就是乙個由0和1組成的位 又成位元bit 序列,8個位被組組成一組,稱為位元組。每個位元組表示程式中的某些文字字元 大部分的現代計算機系統都使用ascii標準來表示文字字元 hello.c 預處理器 cpp hello.i 修改...
深入理解計算機系統 筆記1 計算機系統漫遊
從今天開始學習深入計算機系統這本教材,以前還是寫了一些 的,但是由於不是計算機出身的,所以關於這方面的知識掌握的比較少,現在趁著有時間好好的學習下。1.文字檔案到ascii編碼的轉換。2.各個裝置之間的複製就是系統開銷。3.對處理器來說,讀取乙個位元組資料住儲存器要比磁碟快1000萬倍,從暫存器中讀...
1 深入理解計算機系統 計算機系統漫遊
1.資訊就是 位 上下文 由 ascii字元 乙個唯一的單位元組大小的整數值來表示每個字元 構成的檔案叫文字檔案,其他所有的檔案叫二進位制檔案 2.程式被其他程式翻譯成不同格式 gcc o hello hello.c 每條 c 語句必須被其他程式轉化為一些列的低階機器語言指令。然後這些指令按照一種稱...