卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

一個c程序是如何工作的(C語言程序怎么運行?)

c程序的工作過程?1 .使用編輯器創(chuàng)建并保存一個名為hello.c的文本文件可以說hello程序的生命周期就是從這個時候開始的,這也是因為這種形式更容易讓人理解。但是,為了在計算機上運行這個程序,每一

一個c程序是如何工作的(C語言程序怎么運行?)

c程序的工作過程?

1 .使用編輯器創(chuàng)建并保存一個名為hello.c的文本文件可以說hello程序的生命周期就是從這個時候開始的,這也是因為這種形式更容易讓人理解。但是,為了在計算機上運行這個程序,每一條C語句都必須被其他程序轉(zhuǎn)換成一系列低級的機器語言指令,然后計算機根據(jù)可執(zhí)行的目標(biāo)程序?qū)⑦@些指令打包,以二進(jìn)制磁盤文件的形式存儲。

2.預(yù)處理階段:cpp根據(jù)#開頭的命令修改原C程序,比如將# inclultstdio.hgt中的stdio.件寫入hello.c中得到另一個程序保存在hello.i中。

3.編譯階段:ccl將文本文件hello.i編譯成hello.s,其中包含匯編語言程序。

4.匯編階段:As將hello.s翻譯成機器語言指令,將這些文件打包成一種叫做可重定位對象程序的格式,并將結(jié)果保存在hello.o中,這時如果我們用文本編輯器打開,就會看到一堆。

5.鏈接階段:因為hello程序使用了pringtf函數(shù)。每個C編譯器都會提供標(biāo)準(zhǔn)庫中的函數(shù)。printf存在于printf.o中,這個文件必須合并到hC語言程序怎么運行?

運行C語言程序的編輯(輸入程序代碼,交給電腦)。編譯(目標(biāo)程序文件。obj)。就是把一種高級語言變成計算機能識別的二進(jìn)制語言。計算機只知道1和0,編譯器把熟悉的語言變成二進(jìn)制。

編譯器將源程序翻譯成目標(biāo)程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優(yōu)化;目標(biāo)代碼生成

一個C程序到完成運行要經(jīng)過哪幾個步驟?

Ld是鏈接器,鏈接成功返回0。一個C程序從代碼到二進(jìn)制文件的運行要經(jīng)過預(yù)處理、編譯、匯編、鏈接、加載和執(zhí)行。

預(yù)處理后,C文件會完成宏替換等動作,編譯會生成一個匯編文件(可以在gcc下添加參數(shù)-s生成),后綴為s。

在匯編步驟中,匯編程序?qū)褏R編文件轉(zhuǎn)換成*。o(低于*。o(linux)或*。obj(msvc)文件,這是目標(biāo)文件。

鏈接器負(fù)責(zé)鏈接多個目標(biāo)文件和庫文件,得到二進(jìn)制可執(zhí)行文件,程序會被加載到內(nèi)存中,在后續(xù)的加載階段執(zhí)行。

許多目標(biāo)文件會引用其他目標(biāo)文件中的變量或函數(shù),這些變量或函數(shù)在*中稱為符號。o.

有一個符號表。鏈接器的每個目標(biāo)文件中的symtab。;參考文獻(xiàn)。如果鏈接器在目標(biāo)文件中找到需要引用到其他位置的符號(這里它被分成PC階段)對于參考和絕對位置參考),它將找到被引用的符號,如果找到,則重新定位它。一般來說,我們使用的ide會將上述過程集成到一個簡單的步驟中,我們經(jīng)??梢?看不到其中生成的程序集文件和目標(biāo)文件。如果我們不這樣做。;如果不理解這些過程,我們可能會對ide 的錯誤報告。