亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++--編譯器工作原理

2019-11-06 08:21:59
字體:
來源:轉載
供稿:網友

編譯器:我們常用的編譯器一般有Visual Studio(Windows),Xcode(OS),GCC(Unix)等。

它們的主要功能就是把我們寫的高級代碼轉換成可執行的二進制程序。這個轉換過程主要通過預處理器,編譯器和鏈接器完成,同時它們也是可以分別設置屬性,用來控制代碼的生成方式。1,預處理器設置:如一些平臺相關的宏設置,通過控制這些宏定義,來編寫跨平臺代碼。(而且現代的預處理器,還可以直接通過命令行來定義預處理宏這與代碼中編寫#define指令等效) 2,編譯器設置:主要包括是否產生調試信息,是否展開內聯函數等一系列優化代碼的操作。3,鏈接器設置:主要是設置鏈接那些可執行文件,以及指定程序庫搜索路徑,還有一些鏈接優化方式等。

以VS為例談談編譯的具體過程:從你敲代碼,到真正運行起來,一般有預編譯,編譯,鏈接,加載,這幾步。首先是預編譯階段,主要是對c,cpp或asm等源文件進行整理,主要包括將頭文件拷貝到源文件中(#include),將代碼中的宏定義替換和條件編譯等。然后就是編譯階段,主要將整理好的源文件編譯成一個個obj文件(unix是.o文件),這時已經是二進制機器碼了,只是還沒有決定代碼內存地址。再鏈接階段,把這些obj鏈接得到exe可執行文件,這時機器碼在內存中的相對基址已經確認了。最后由操作系統加載exe,把這些可執行的二進制代碼全部加載進內存,絕對基址才最終確認,即內存地址確認。從而得到進程,即我們程序的運行。

動態鏈接庫(dll)與靜態鏈接庫(lib):(1)首先你能調用一個函數,前提就是它在內存里存在。一般的函數,編譯鏈接之后,在exe里面。操作系統加載exe的時候,分配內存,然后把函數代碼放在這塊內存,所以你就能直接調用函數了。(2)dll的話,不一樣。這是把一些代碼跟程序主體分開,編譯鏈接為dll。加載exe的時候,dll可能尚未加載,這時,你想調用的函數不在內存里。你可以手動用LoadLibrary這個函數手動加載dll,然后這個函數就在內存里了,可以取得它的地址,然后就可以調用。但一般編譯器會幫我們在使用時自動加載dll,其底層實現無非也是這么操作的(類似系統底層對main函數的調用)。因此,dll的加載其實就類似函數的調用,它能節省內存。(3)lib的話,正好相反,即把lib庫拷貝一份到exe里面,這樣與一般的編譯過程差不多了,可以脫離庫使用,類似內聯。(4)之所以使用庫,主要就是方便以后復用,節省編譯時間,因為這些庫都是已經編譯好的二進制文件。

注釋:對于c++項目理論上也是可以像腳本一樣做動態更新的,因為dll與exe主體本來就是分開的,我們可以只更新dll來實現動態更新。但是很不方便,因為exe這個主體已經不能再修改,如果dll中改了某些數據的結構,那么exe中原來的調用就不行了,除非只改了邏輯,所以要用這種就得嚴格控制統一的接口,而且以后也不能擴展。

c++自己定義好了一套準則,所有編譯器都要遵循這個規則,至于編譯器底層具體怎么去運行實現它們這個不確定,但最終的結果要遵循這個定好的標準?,F在的編譯器大都也沒能全部實現c++的所有標準。所以對于一些未定義的行為,不同的編輯器就可能會有不同的表現。所以很多問題不能只死認VS,不同環境實現可能不同。

**應用程序在內存中一般分為幾塊區域: 全局數據區:存放全局數據,靜態數據等 代碼區:代碼存放區域 棧區:局部變量 堆區:動態內存**

常用輔助工具 一,檢測哪些代碼比較耗性能的剖析工具:1,Intel的VTune軟件,執行效率高但不夠詳細。2,IBM的Rational Quantify軟件,執行效率低但夠詳細。3,微軟混合了前兩種的優點,開發了名為LOP的剖析器。當然還有很多,就不一一列舉了。通過這些工具我們就可以針對性的優化代碼了。

二,檢測內存泄露工具:IBM的Purify Plus工具套裝中的Rational Purify。Purify須在程序運行前安插監控代碼,為所有指針解引用及內存分配與釋放代碼中加入掛鉤(鉤子函數)。在Purify下運行代碼,能現場報告代碼中的及時潛在問題。程序結束后,也能產生詳盡的內存泄露報告。(另一個流行工具:Compuware公司的Bounds Checker,和Purify類似)

鉤子函數:(1)百科上說,它是Windows消息處理機制的一部分,通過設置“鉤子”,應用程序可以在系統級對所有消息、事件進行過濾(即截取系統消息),訪問在正常情況下無法訪問的消息。鉤子的本質是一段用以處理系統消息的程序,通過系統調用,把它掛入系統。通俗點講就是類似一個回調函數,為某些事件設置了鉤子,只要對應事件觸發就會截取這個事件響應??偟膩碇v,鉤子就是用來截取Windows消息,再用鉤子函數回調出去。一些外掛,木馬等就是利用它實現的。(2)舉例說明:鉤子就是,本來A調用B結果你寫一個新的函數C,強行替換掉B,A以為自己調用了B,其實調用的是C,當然C也可以再回過去調用B。比如你輸入密碼,本來這消息直接通知到控件,但是現在有人掛了鉤子,密碼就通知到他,然后他再轉發給控件。肉眼看上去一切正常,但是你的密碼已經被竊聽了。再如,通過這方法,也可以盜取游戲的圖片、模型等資源,寫一個函數,替換掉glTexImage2D。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美影院成年免费版| 国模精品一区二区三区色天香| 久久夜色撩人精品| 91极品视频在线| 国产精品免费久久久久影院| 久久久国产成人精品| 91免费看片在线| 亚洲成人黄色网址| 国产精品高精视频免费| 成人黄色免费网站在线观看| 久久久久久国产免费| 色偷偷av亚洲男人的天堂| 精品久久久久久中文字幕一区奶水| 国产欧美日韩91| 热久久免费视频精品| 日韩av在线网址| 欧美丰满少妇xxxxx做受| 自拍偷拍亚洲一区| 国产性猛交xxxx免费看久久| 98精品国产高清在线xxxx天堂| 欧美性感美女h网站在线观看免费| 亚洲成av人影院在线观看| 国产日韩中文字幕在线| 国产欧美一区二区三区在线| 国产成人精品网站| 国产成人精品一区二区三区| 国产精品欧美风情| 国产精品福利在线| 色小说视频一区| 欧美日韩国产精品一区二区三区四区| 国产精品精品久久久| 日韩中文字幕在线播放| 欧美激情视频一区| 欧美成人精品影院| 欧美巨猛xxxx猛交黑人97人| 亚洲综合中文字幕在线| 欧美日韩国产成人在线观看| 欧美一区三区三区高中清蜜桃| 日韩中文在线视频| xvideos成人免费中文版| 色一区av在线| 日韩中文在线中文网三级| 亚洲黄页视频免费观看| 尤物tv国产一区| 91免费精品国偷自产在线| 国产精品va在线播放| 日韩成人在线视频观看| 亚洲尤物视频网| 久久天堂av综合合色| 久久久久久久网站| 国产精品久久久久久av下载红粉| 欧美黑人巨大精品一区二区| 91在线观看免费高清完整版在线观看| 欧美老女人性视频| 日韩美女写真福利在线观看| 亚洲一区二区自拍| 国产精品久久久久久久av电影| 国产视频亚洲视频| 欧美理论在线观看| 日韩视频中文字幕| 日本中文字幕不卡免费| 欧美激情一区二区三区成人| 日本中文字幕成人| 久久久国产精彩视频美女艺术照福利| 亚洲国产精品久久久久秋霞不卡| 欧美成人免费大片| 精品国产一区二区三区久久久| 久久久久久有精品国产| 亚洲图片制服诱惑| 亚洲热线99精品视频| 亚洲a成v人在线观看| 久久天天躁狠狠躁夜夜av| 日本午夜精品理论片a级appf发布| 欧美日韩国产成人高清视频| 久久久久女教师免费一区| 夜夜嗨av色一区二区不卡| 精品美女永久免费视频| 91网站在线看| 国产一区二区日韩精品欧美精品| 久久国产视频网站| 成人福利免费观看| 亚洲视频一区二区| 国产精品久久久一区| 国模吧一区二区| 欧美日韩在线看| 国产成人鲁鲁免费视频a| 国产一区二区三区网站| 亚洲国产日韩欧美在线动漫| 亚洲精品一区二区在线| 欧美日韩一区二区三区在线免费观看| 日韩av电影院| 久久99精品国产99久久6尤物| 国产色综合天天综合网| 国产成人高清激情视频在线观看| xvideos成人免费中文版| 日韩精品极品视频免费观看| 久久久久久亚洲精品| 亚洲第一福利网站| 久久精品久久久久| 亚洲福利视频网站| 欧美激情视频免费观看| 亚洲精品欧美一区二区三区| 欧美精品福利视频| 精品久久久91| 日韩大片免费观看视频播放| 视频在线一区二区| 自拍亚洲一区欧美另类| 国产免费一区二区三区在线能观看| 欧美日韩一区免费| 亚洲丁香久久久| 91久久久久久| 欧美裸体xxxx| 成人免费淫片aa视频免费| 一区二区在线视频| 亚洲三级 欧美三级| 中文字幕av日韩| 日韩免费av一区二区| 亚洲男人的天堂在线| 亚洲欧洲高清在线| 亚洲国产精品va在线观看黑人| 孩xxxx性bbbb欧美| 国产美女精品视频| www.欧美精品一二三区| 亚洲网站在线播放| 2021国产精品视频| 日韩av免费在线看| 69久久夜色精品国产69| 在线成人一区二区| 亚洲精品动漫100p| 久久久久久久久久国产| 久热精品在线视频| 欧美亚洲在线视频| 一区二区成人精品| 美女视频黄免费的亚洲男人天堂| 一区二区三区视频观看| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲日本欧美日韩高观看| 国产亚洲欧美另类中文| 亚洲乱码国产乱码精品精天堂| 欧美性理论片在线观看片免费| 成人国产精品免费视频| 欧美激情2020午夜免费观看| 欧美精品激情在线| 国产精品国产三级国产专播精品人| 国产精品美女久久久久久免费| 欧美中文在线视频| 97在线免费视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲综合最新在线| 亚洲欧洲日韩国产| 中文字幕久热精品在线视频| 91久久国产婷婷一区二区| 日韩av在线免费| 欧美限制级电影在线观看| 久久精品久久久久| 国产一区二区丝袜| 成人深夜直播免费观看| 尤物yw午夜国产精品视频| xxxxx成人.com| 中文字幕少妇一区二区三区| 日韩福利视频在线观看| 亚洲sss综合天堂久久| 亚洲午夜激情免费视频| 中文字幕亚洲在线|