亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

軟件編譯中步驟探詢

系統 1877 0

我們在程序編譯時會經歷  預編譯---編譯---匯編---鏈接  這四個階段。

在高級語言中這些步驟不易察覺,下面是幾個階段要處理的內容:

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

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

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

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

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

?5.添加行號和文件名標識名,以便編譯器產生調試用的行號信息及用于編譯時產生的編譯錯誤和警告時能顯示它的行號。

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

經過預編譯后的文件不包含任何宏定義,因為所有的宏已展開,并且包含的文件也被包含到產生的文件中。

?

編譯 :編譯的過程就是把預編譯后的文件進行一些詞法分析、語義分析、及優化后產生的匯編文件。這個過程就是我們所說的整個程序構建的核心部分,也是最復雜的部分之一。現在GCC把預編譯和編譯合成一個步驟。

?

匯編 :此過程是把匯編代碼轉變成機器碼,因為每一個匯編語句幾乎對應一條機器指令。所以匯編器的匯編過程相對于編譯器來說比較簡單,沒有復雜的語法,也沒有語義,也沒有優化,只是根據匯編碼和機器指令的對照表一一翻譯就可以了。

?

鏈接 :此過程讓人非常費解,為什么匯編器不一次性產生可執行的輸出文件呢而產生許多目標文件?鏈接的過程到底包含了什么內容?為什么要鏈接?

???? 編譯器就是將高級語言編譯成機器語言的一個工具。編譯的過程一般是:掃描--語法分析--語義分析--源代碼優化--代碼生成--目標碼優化。 我們在產生大的文件時,會產生多個模塊的文件,這些文件通過接口相互引用。 如:我們A模塊要調用B模塊的一個動態數組或dll中的函數,在編譯器A并不知道B中數組或函數的地址,如果這時就匯編中一個執行文件會讀取內存出錯。而只有在運行時即運行庫中才能產生B中數組或函數的地址,這時A才能調用,所以這一步是在鏈接時完成的。

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

軟件編譯中步驟探詢


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品69久久久久久99 | 欧美成人一区二区三区不卡视频 | 曰批免费视频播放在线看片二 | 亚洲成人视屏 | 日本免费爱爱视频 | 无遮挡一级毛片性视频不卡 | 亚洲不卡在线 | 国产精品一区在线观看你懂的 | 国产女主播喷出白浆视频 | 久久久久香蕉视频 | 欧美日韩高清一区二区三区 | 国产国拍亚洲精品午夜不卡17 | 日本xxxxxbbbbb精品 | 成年人精品视频 | 欧美成人小视频 | 成人午夜爱爱爱爱爱 | 国产福利不卡视频在免费 | 成人国产视频在线观看 | 久久九九热 | 免费看一级黄色录像 | 福利资源在线 | 免费看片aⅴ免费大片 | 亚洲欧美一区二区三区国产精品 | 久久国产精品2020盗摄 | 国产第一区二区三区在线观看 | 四虎精品免费久久 | 国产精品青青青高清在线密亚 | 亚洲人成在线精品不卡网 | 日本人一级毛片视频 | 看免费5xxaaa | 久久国产精品ww | 日韩a一级欧美一级在线播放 | 国产午夜精品一二区理论影院 | 日韩欧美在线一级一中文字暮 | 欧美在线视频7777kkkk | 26uuu最新| 久久99久久99 | 色综合色狠狠天天综合色 | 天天干天天干天天操 | 亚洲欧美成人综合久久久 | 亚洲精品久久久久中文字幕一区 |