黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

軟件編譯中步驟探詢

系統(tǒng) 2082 0

我們?cè)诔绦蚓幾g時(shí)會(huì)經(jīng)歷  預(yù)編譯---編譯---匯編---鏈接  這四個(gè)階段。

在高級(jí)語言中這些步驟不易察覺,下面是幾個(gè)階段要處理的內(nèi)容:

預(yù)編譯 :此過程主要處理源代碼中以#開頭的預(yù)編譯指令,如 #if ,#include,#define等

?1.將所有的#define刪除,并且展開所有的宏定義。

?2.處理所有條件預(yù)編譯指令,比如:#if ,#endif,#ifdef等

?3.處理#include預(yù)編譯指令,將被包含的文件插入到此指令的位置。注意:這個(gè)過程是遞歸調(diào)用的,也就是說這個(gè)文件 也可能包含其它文件。

?4.刪除所有的注釋,如://,/**/等

?5.添加行號(hào)和文件名標(biāo)識(shí)名,以便編譯器產(chǎn)生調(diào)試用的行號(hào)信息及用于編譯時(shí)產(chǎn)生的編譯錯(cuò)誤和警告時(shí)能顯示它的行號(hào)。

?6.保留所有#pragma編譯器指令,因編譯器要使用它們。

經(jīng)過預(yù)編譯后的文件不包含任何宏定義,因?yàn)樗械暮暌颜归_,并且包含的文件也被包含到產(chǎn)生的文件中。

?

編譯 :編譯的過程就是把預(yù)編譯后的文件進(jìn)行一些詞法分析、語義分析、及優(yōu)化后產(chǎn)生的匯編文件。這個(gè)過程就是我們所說的整個(gè)程序構(gòu)建的核心部分,也是最復(fù)雜的部分之一。現(xiàn)在GCC把預(yù)編譯和編譯合成一個(gè)步驟。

?

匯編 :此過程是把匯編代碼轉(zhuǎn)變成機(jī)器碼,因?yàn)槊恳粋€(gè)匯編語句幾乎對(duì)應(yīng)一條機(jī)器指令。所以匯編器的匯編過程相對(duì)于編譯器來說比較簡單,沒有復(fù)雜的語法,也沒有語義,也沒有優(yōu)化,只是根據(jù)匯編碼和機(jī)器指令的對(duì)照表一一翻譯就可以了。

?

鏈接 :此過程讓人非常費(fèi)解,為什么匯編器不一次性產(chǎn)生可執(zhí)行的輸出文件呢而產(chǎn)生許多目標(biāo)文件?鏈接的過程到底包含了什么內(nèi)容?為什么要鏈接?

???? 編譯器就是將高級(jí)語言編譯成機(jī)器語言的一個(gè)工具。編譯的過程一般是:掃描--語法分析--語義分析--源代碼優(yōu)化--代碼生成--目標(biāo)碼優(yōu)化。 我們?cè)诋a(chǎn)生大的文件時(shí),會(huì)產(chǎn)生多個(gè)模塊的文件,這些文件通過接口相互引用。 如:我們A模塊要調(diào)用B模塊的一個(gè)動(dòng)態(tài)數(shù)組或dll中的函數(shù),在編譯器A并不知道B中數(shù)組或函數(shù)的地址,如果這時(shí)就匯編中一個(gè)執(zhí)行文件會(huì)讀取內(nèi)存出錯(cuò)。而只有在運(yùn)行時(shí)即運(yùn)行庫中才能產(chǎn)生B中數(shù)組或函數(shù)的地址,這時(shí)A才能調(diào)用,所以這一步是在鏈接時(shí)完成的。

???? 鏈接過程也把各模塊“拼接”成一個(gè)可執(zhí)行文件,所以鏈接過程變的十分重要和突出。

軟件編譯中步驟探詢


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論