"": 200,
"": "",
"": "簡單講,編譯器就是將“高級語言”翻譯為“機器語言(低級語言)”的程序。一個現代編譯器的主要工作流程:源代碼(source)→預處理器(preprocessor)→編譯器(compiler)→彙編程序(assembler)→目標代碼(object)→鏈接器(Linker)→可執行程序(executables)
高級計
編譯器算機語言便於人編寫,閱讀,維護。低階機器語言是計算機能直
接解讀、運行的。編譯器將源程序(Sourceprogram)作為輸入,翻譯產生使用目標語言(Targetlanguage)的等價程序。源代碼一般為高級語言(High-levellanguage),如Pascal、C、C++、C#、Java等,而目標語言則是彙編語言或目標機器的目標代碼(Object),有時也稱作機器代碼(Machine)。
工作原理
ᴏᴏᴘ.ᴛᴡ 呈現最新的小說章節
編譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低階語言或機器語言)的翻譯過程。然而,也存在從低階語言到高級語言的編譯器,這類編譯器中用來從由高級語言生成的低階語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進一步處理的的中間代碼的編譯器(又叫級聯)。
典型的編譯器輸出是由包含入口點的名字和地址,以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需采用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的可執行程序。
編譯器種類
編譯器
編譯
編譯器器可以生成用來在與編譯器本身所在的計算機和操作係統(平台)
相同的環境下運行的目標代碼,這種編譯器又叫做“本地”編譯器。另外,編譯器也可以生成用來在其它平台上運行的目標代碼,這種編譯器又叫做交叉編譯器。交叉編譯器在生成新的硬件平台時非常有用。“源碼到源碼編譯器”是指用一種高級語言作為輸入,輸出也是高級語言的編譯器。例如:自動並行化編譯器經常采用一種高級語言作為輸入,轉換其中的代碼,並用並行代碼注釋對它進行注釋(如OpenMP)或者用語言構造進行注釋(如FORTRAN的DOALL指令)。
預處理器(preprocessor)
作用是通過代入預定義等程序段將源程序補充完整。
編譯器前端(frontend)
。理處,化優步一進上礎基此在以可端後樣這,)TSA或,eertxatnystcartsba(樹法語的象抽個一是常常果結的終最。理處誤錯的單簡,的型類一同是否是量變的算運與參測檢如例,查檢的)gnikcehccitnames(義語責負還端前。句語的”c+b=a“成裝組再,”c+b“式達表成裝組們他把先,法語的義定按器析分意語,”;c,+,b,=,a“是的到看器析分法語端前”;c+b=a“如例。等等數函,句語,式達表的義意有成裝組法語的好義定先預按詞單的散分些這把器析分意語,來出找)nekoT(’詞單‘的中碼代源把責負器析分法語。作工同協器析分意語和器析分法語由,碼代源的入輸)esrap(析解責負要主端前
)dnekcab(端後器譯編
。)noitareneG(碼代器機成生及以)noitatneserperetaidemretnI(碼代間中化優,析分責負要主端後器譯編
。成完來間時的長更要需但,確準更化優,析分的間數函,顯明很。行進)larudecorpretni(間之數函是還)larudecorpartni(內數函:類大兩成分以可都型變,化優,析分器譯編的有所來說般一
)sisylanarelipmoc(析分器譯編
。上碼代間中層一那的合適最在生發化優,析分的同不。似類言語器機與)RIlevelwoL(碼代間中的層低,關無言語入輸與)RIlevelelddim(碼代間中的層中;構結的碼代源和,息信的性局全的多更含包,)tnednepedegaugnal(關相言語入輸與,式格的碼代源的入輸近接)RIlevelhgih(碼代間中的層高,序程示表來碼代間中的次層種幾好用常常)relipmocgnizimitpo(器譯編型化優的代現,碼代間中的來過遞傳並成生端前是象對的析分器譯編
。等等)sisylanaecnednepedatad(析分賴依據數,)sisylanaretniop(析分針指,)sisylanasaila(析分名別量變,)niahcu-d/\d-uroenifed-esu/\esu-enifed(鏈義定-用使,用使-義定量變的上礎基此在及以,)hpargwolflortnoC(圖程流製控,)eertllac(樹用調數函有析分譯編的見常
,盤磁寫讀少減,率用使的)ehcac(存緩,)yromem(存內高提,度長的碼代少減是標目的形變和化優。等等,)gniddapyarra(充填組數,)noissifpool,noisufpool(裂分,並合體環循,)gnillornupool(開展體環循,)noitazilamronpool(構結環循化準標,)noitanimiledaeD(除刪碼代用無,)gninilni(嵌內數函:有新變和化優的見常。件條提前的)noitamrofsnartrelipmoc(形變序程和)noitazimitporelipmoc(化優器譯編是果結析分序程的述上