我之前很好奇就是你所寫的**到底是如何在計算機中執行的,到底是怎樣開始,從**開始,在**執行,到**結束,之間到底是怎麼的乙個過程,帶著這些問題,逐漸看這方面的書籍,最近買的《深入理解計算機系統》這本書,剛開始看,把一些東西記錄一下。這本書中主要是以c語言為基礎進行討論的。下面說一下在計算機中,hello world /n 是如何執行輸出的。
1、初始
初始時,shell 命令執行它的指令,等待我們輸入乙個命令。當我們在鍵盤上輸入字串「./hello」後,shell 程式將字元逐一讀入暫存器,再把他們放到記憶體中。
2、執行hello檔案
當我們在鍵盤上敲回車鍵時候,sell 程式就知道我們已經結束了命令的輸入。然後shell 執行一系列指令來載入可執行的hello 檔案,這些指令將hello目標檔案中的**和資料從磁碟賦值到主存。資料報括最終被輸出的字串 「hello world /n 」
3、顯示結果
一旦目標檔案hello中的**和資料被載入到主存中,處理器就開始執行 hello 程式的 main 程式中的機器語言指令。這些指令將 「hello world /n」 字串的位元組從主存賦值到暫存器檔案。在從暫存器檔案中複製到顯示裝置。最終顯示在螢幕上。
負數在計算機中的表示
今天,老大讓我調查乙個浮點數轉換為整數的問題。自己就查了些資料,順便複習一下原碼 反碼和補碼。原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組...
負數在計算機中的儲存
問乙個基本的問題。負數在計算機中如何表示?舉例來說,8在計算機中表示為二進位制的1000,那麼 8怎麼表示呢?很容易想到,可以將乙個二進位制位 bit 專門規定為符號位,它等於0時就表示正數,等於1時就表示負數。比如,在8位機中,規定每個位元組的最高位為符號位。那麼,8就是00001000,而 8則...
負數在計算機中的表示
原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組的5的反碼為 0000 0101 5的原碼為1111 1010。補碼 正數的補碼就是其原碼 負...