從Hello World中瞭解程式的運行過程

來源:互聯網
上載者:User

我個人覺得,要想真正地掌握一門語言,瞭解程式的運行過程是必要的。所以,在此我們就通過經典的Hello World程式來瞭解程式的運行機理。

#include <stdio.h>int main(void){printf("hello world");return 0;}

1.預先處理階段:預先處理(cpp)根據以字元#開頭的命令,修改原始的C程式。比如hello.c中的第一行的#include <stdio.h> 命令告訴前置處理器讀取系統標頭檔stdio.h的內容,插入到程式文本中。結果就得到裡另一個C程式,通常是以*.i作為副檔名。

2. 編譯階段:編譯器將文字檔hello.i翻譯成文字檔hello.s,它包含一個組合語言程式。組合語言程式中的每條語句都以一種標準的檔案格式確切地描述了一條低級機器語言指令。

3. 彙編階段:彙編器將hello.s翻譯成機器語言指令,把這些指令打包成一種可重定位目標程式的格式,並把結果儲存在hello.o中,hello.o是一個二進位檔案,它的位元組編碼是 機器語言指令,而不是字元。

4. 連結階段:hello.c程式中調用了printf函數,而printf函數存在於一個名為printf.o的單獨的先行編譯好的目標檔案中,而這個檔案必須以某種方式合并到我們的hello.o程式中。連接器就負責處理這種合并,結果就得到hello檔案,它是一個可執行檔,可以被載入到記憶體中由系統執行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.