欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

軟件編譯中步驟探詢

系統 1654 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條評論
主站蜘蛛池模板: 在线色网 | 久久无码AV亚洲精品色午夜 | 中文天堂av | 亚洲日韩中文字幕天堂不卡 | 免费啪视频在线观看免费的 | 欧美成年视频 | 91免费视频网站 | 久久综合九色综合97欧美 | 日a在线| 国产成人免费精品 | 精品视频一区二区三区 | 欧美一区二区三区四区不卡 | 草久久久 | 91久久精品一区二区三区 | 欧美日本高清视频 | 欧美一级欧美一级高清 | 任我爽在线视频 | 男女午夜 | 欧美在线高清 | 欧美久 | 国产a久久精品一区二区三区 | 亚洲一区国产二区 | 国产成人久久 | 日韩在线第二页 | 久久亚洲日本不卡一区二区 | 日穴视频在线观看 | 久久综合狠狠综合狠狠 | 日本黄色视屏 | 毛片免费软件 | 成人久久久 | 2022国产成人精彩在线视频 | 亚洲国产精品久久久 | 精品久久亚洲 | 91情侣在线偷精品国产 | a久久久久一级毛片护士免费 | 亚洲三级国产 | 香蕉18xxoo欧美夜视频 | 欧美成人免费毛片 | 天天操综合网 | 色综合久久天天综合绕观看 | 欧美日韩精选 |