青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0
編譯器,是將便于我們編寫,閱讀,維護的高級計算機語言翻譯為計算機能識別,運行的低級機器語言的程序。編譯器將源程序(Source program)作為輸入,翻譯產生使用目標語言(Target language)的等價程序。源程序一般為高級語言(High-level language),如PascalC++等,而目標語言則是匯編語言或目標機器的目標代碼(Object code),有時也稱作機器代碼(Machine code)。

一個現代編譯器的主要工作流程如下:
源程序(source code)→預處理器(preprocessor)→編譯器(compiler)→匯編程序(assembler)→目標程序(object code)→連接器(鏈接器,Linker)→可執行程序(executables
 
工作原理
 
翻 譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器言)。然而,也存在從低級語言到高級語言的編譯器,這類編 譯器中用來從由高級語言生成的低級語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進 一步處理的的中間代碼的編譯器(又叫級聯)。

 
典型的編譯器輸出是由包含入口點的名字和地址以及外部調用的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需采用同樣的輸出格式,可以鏈接在一起并生成可以由用戶直接執行的可執行程序。

編譯器種類
 
編 譯器可以生成用來在與編譯器本身所在的計算機和操作系統(平臺)相同的環境下運行的目標代碼,這種編譯器又叫做“本地”編譯器。另外,編譯器也可以生成用 來在其它平臺上運行的目標代碼,這種編譯器又叫做交叉編譯器。交叉編譯器在生成新的硬件平臺時非常有用。“源碼到源碼編譯器”是指用一種高級語言作為輸 入,輸出也是高級語言的編譯器。例如: 自動并行化編譯器經常采用一種高級語言作為輸入,轉換其中的代碼,并用并行代碼注釋對它進行注釋(如OpenMP)或者用語言構造進行注釋(如FORTRANDOALL指令)。

預處理器(preprocessor
 
作用是通過代入預定義等程序段將源程序補充完整。

編譯器前端(frontend
 
前端主要負責解析(parse)輸入的源程序,由詞法分析器和語法分析器協同工作。詞法分析器負責把源程序中的‘單詞’(Token)找出來,語法分析器把這些分散的單詞按預先定義好的語法組裝成有意義的表達式,語句,函數等等。例如“a = b + c;”前端詞法分析器看到的是“a, =, b , +, c;”,語法分析器按定義的語法,先把他們組裝成表達式“b + c”,再組裝成“a = b + c”的語句。前端還負責語義(semantic checking)的檢查,例如檢測參與運算的變量是否是同一類型的,簡單的錯誤處理。最終的結果常常是一個抽象的語法樹(abstract syntax tree,或 AST),這樣后端可以在此基礎上進一步優化,處理。

編譯器后端(backend
 
編譯器后端主要負責分析,優化中間代碼(Intermediate representation)以及生成機器代碼(Code Generation)。

 
一般說來所有的編譯器分析,優化,變型都可以分成兩大類:函數內(intraprocedural)還是函數之間(interprocedural)進行。很明顯,函數間的分析,優化更準確,但需要更長的時間來完成。

 
編譯器分析(compiler analysis)的對象是前端生成并傳遞過來的中間代碼,現代的優化型編譯器(optimizing compiler)常常用好幾種層次的中間代碼來表示程序,高層的中間代碼(high level IR)接近輸入的源程序的格式,與輸入語言相關(language dependent),包含更多的全局性的信息,和源程序的結構;中層的中間代碼(middle level IR)與輸入語言無關,低層的中間代碼(Low level IR)與機器語言類似。不同的分析,優化發生在最適合的那一層中間代碼上。

 
常見的編譯分析有函數調用樹(call tree),控制流程圖(Control flow graph),以及在此基礎上的變量定義-使用,使用-定義鏈(define-use/use-define or u-d/d-u chain),變量別名分析(alias analysis),指針分析(pointer analysis),數據依賴分析(data dependence analysis)等等。

 
上述的程序分析結果是編譯器優化(compiler optimization)和程序變形(compiler transformation)的前提條件。常見的優化和變新有:函數內嵌(inlining),無用代碼刪除(Dead code elimination),標準化循環結構(loop normalization),循環體展開(loop unrolling),循環體合并,分裂(loop fusionloop fission),數組填充(array padding),等等。優化和變形的目的是減少代碼的長度,提高內存(memory),緩存(cache)的使用率,減少讀寫磁盤,訪問網絡數據的頻率。更高級的優化甚至可以把序列化的代碼(serial code)變成并行運算,多線程的代碼(parallelizedmulti-threaded code)。

 
機器代碼的生成是優化變型后的中間代碼轉換成機器指令的過程。現代編譯器主要采用生成匯編代碼(assembly code)的策略,而不直接生成二進制的目標代碼(binary object code)。即使在代碼生成階段,高級編譯器仍然要做很多分析,優化,變形的工作。例如如何分配寄存器(register allocatioin),如何選擇合適的機器指令(instruction selection),如何合并幾句代碼成一句等等。


編譯語言與解釋語言對比
 
許多人將高級程序語言分為兩類: 編譯型語言解釋型語言。然而,實際上,這些語言中的大多數既可用編譯型實現也可用解釋型實現,分類實際上反映的是那種語言常見的實現方式。(但是,某些解釋型語言,很難用編譯型實現。比如那些允許在線代碼更改的解釋型語言。)
posted on 2008-07-21 08:57 chatler 閱讀(219) 評論(0)  編輯 收藏 引用 所屬分類: Compiling Theorem

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2009年2月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国模大胆一区二区三区| 亚洲日本一区二区| 欧美在线亚洲综合一区| 欧美亚洲综合久久| 国产亚洲激情| 男女精品网站| 欧美日韩黄色一区二区| 亚洲欧美在线看| 香港久久久电影| 亚洲福利国产| 亚洲精品日日夜夜| 国产模特精品视频久久久久| 久久嫩草精品久久久精品一| 免费一级欧美片在线播放| 99精品欧美一区| 亚洲欧美美女| 亚洲大片在线| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久精品一区四区| 亚洲国产精品久久| 亚洲视频自拍偷拍| 黑丝一区二区| 99视频一区二区| 激情小说另类小说亚洲欧美| 亚洲精品一区二区三区樱花| 国产酒店精品激情| 亚洲黄页一区| 国产精品一区二区三区免费观看| 欧美成年网站| 国产欧美精品| 亚洲日韩第九十九页| 国产伪娘ts一区| 日韩一区二区精品视频| 黄色综合网站| 亚洲欧美韩国| 亚洲视频电影图片偷拍一区| 久久久视频精品| 欧美一区二区视频网站| 欧美激情aⅴ一区二区三区| 久久九九全国免费精品观看| 欧美精品一卡二卡| 免费日韩成人| 国产亚洲午夜| 亚洲男女毛片无遮挡| 99精品国产99久久久久久福利| 久久九九国产精品| 欧美一区二区播放| 欧美婷婷久久| 亚洲欧洲偷拍精品| 亚洲激情成人| 老牛嫩草一区二区三区日本| 久久久久久9| 国产精品一区亚洲| 亚洲一区二区三区高清| 制服诱惑一区二区| 欧美日韩免费一区| 亚洲乱码国产乱码精品精天堂 | 国产日产欧产精品推荐色 | 欧美影院视频| 久久精品视频亚洲| 国产欧美一区二区三区在线老狼| 一区二区日韩伦理片| 一区二区三区高清视频在线观看| 欧美国产1区2区| 欧美黑人一区二区三区| 亚洲第一在线视频| 美女福利精品视频| 亚洲国产精品va| 亚洲靠逼com| 欧美精品色网| 一本久道久久综合中文字幕| 亚洲尤物在线| 国产精品一区二区三区观看| 亚洲永久免费| 久久天堂成人| 亚洲国产成人精品女人久久久 | 国产精品视频大全| 亚洲欧美日韩另类| 久久久久久久综合色一本| 韩国av一区二区三区在线观看| 欧美一区二区三区四区在线观看| 久久综合伊人| 日韩午夜精品| 国产精品一二三视频| 欧美在线视频免费| 欧美激情精品久久久久久久变态| 日韩午夜在线观看视频| 国产精品hd| 久久久www成人免费无遮挡大片| 欧美成人午夜激情在线| av成人免费在线| 国产日韩在线视频| 欧美不卡视频一区发布| 一本综合精品| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲精品久久久久久一区二区| 欧美日韩综合久久| 久久精品盗摄| 亚洲精品欧美日韩| 久久久av毛片精品| 亚洲精品中文字幕在线| 国产精品影视天天线| 久久久久91| 亚洲小视频在线观看| 久久综合伊人77777| 亚洲一区二区三区四区视频| 一区二区欧美在线观看| 久久精品中文| 亚洲一区国产| 亚洲激情成人在线| 国产又爽又黄的激情精品视频| 欧美激情精品久久久久久免费印度| 亚洲欧美日韩一区二区| 亚洲黄色免费| 久久中文欧美| 午夜影视日本亚洲欧洲精品| 亚洲人成网站777色婷婷| 国产区在线观看成人精品| 欧美精品导航| 久久香蕉国产线看观看av| 亚洲欧美成人综合| 亚洲美女一区| 亚洲激情视频在线播放| 免费久久精品视频| 久久久7777| 欧美一级成年大片在线观看| 在线亚洲一区观看| 亚洲精品小视频| 亚洲国产精品成人一区二区| 国产亚洲精久久久久久| 国产精品日韩| 国产精品久久久久久久久久久久| 欧美激情第一页xxx| 美女亚洲精品| 欧美自拍偷拍| 欧美一级一区| 欧美一级成年大片在线观看| 亚洲一区久久| 亚洲欧美一区二区视频| 亚洲视频精品在线| 一区二区福利| 亚洲精品综合精品自拍| 亚洲人精品午夜| 亚洲理论电影网| 亚洲美女诱惑| 亚洲天堂男人| 午夜精品短视频| 欧美在现视频| 久久尤物视频| 欧美搞黄网站| 欧美午夜精品理论片a级大开眼界| 欧美日韩人人澡狠狠躁视频| 欧美日韩另类综合| 国产精品r级在线| 国产精品剧情在线亚洲| 国产伦精品一区二区三区照片91| 国产农村妇女精品一二区| 国产精品久久久久久福利一牛影视 | 久久久久一区二区三区| 久久在线播放| 欧美激情在线狂野欧美精品| 欧美色精品天天在线观看视频| 国产精品男gay被猛男狂揉视频| 国产精品一区=区| 伊人狠狠色j香婷婷综合| 亚洲老司机av| 性娇小13――14欧美| 鲁大师影院一区二区三区| 亚洲国产第一| 亚洲视频在线观看三级| 欧美在线综合视频| 欧美激情一区二区三区四区 | 久久一区中文字幕| 欧美日韩国产一区精品一区 | 欧美男人的天堂| 国产伦精品一区二区三区视频黑人| 国产一区二区三区高清播放| 91久久精品国产91性色tv| 亚洲综合不卡| 欧美国产精品久久| 亚洲婷婷在线| 欧美va天堂在线| 国产精品亚洲综合久久| 亚洲黄色在线观看| 欧美一区亚洲二区| 亚洲激情视频| 久久久久国产成人精品亚洲午夜| 欧美日韩免费在线视频| 一色屋精品视频在线观看网站| 亚洲四色影视在线观看| 男同欧美伦乱| 午夜免费在线观看精品视频| 欧美日本国产视频| 黄色日韩网站视频| 亚洲资源av| 亚洲电影免费观看高清完整版在线观看| 亚洲特色特黄| 欧美日韩中文在线观看| 亚洲精品国产视频| 美女视频黄a大片欧美|