歡迎來到培訓(xùn)無憂網(wǎng)!

全國切換

咨詢熱線 400-001-5729

位置:培訓(xùn)無憂網(wǎng) > 新聞資訊 > 電腦/IT > c語言 >  C++培訓(xùn)技巧:它是怎么編譯的

C++培訓(xùn)技巧:它是怎么編譯的

來源:elsolbar.com 發(fā)布人:星星

2021-12-28 11:53:58|已瀏覽:2157次

C++編譯

      C++的整個(gè)編譯過程包含多項(xiàng)操作,主要可分為四個(gè)階段,分別是編譯預(yù)處理、編譯優(yōu)化階段、匯編過程、鏈接過程。這四個(gè)階段按順序執(zhí)行,每一個(gè)階段分別處理上一個(gè)階段的輸出代碼,并輸入下一個(gè)階段。每個(gè)階段的作用分別為:

1、 編譯預(yù)處理
       讀取 C++ 源代碼,對(duì)其中的偽指令和特殊符號(hào)進(jìn)行處理。這個(gè)預(yù)處理實(shí)際上可看作是將源程序中的一些特殊指令或者符號(hào)進(jìn)行替換。經(jīng)過預(yù)處理的替換,就會(huì)生成一個(gè)沒有特殊指令、沒有特殊符號(hào)的輸出文件。這個(gè)文件的含義和源文件本質(zhì)上是相同的,但內(nèi)容和表達(dá)方式有所不同。
       特殊指令:稱為偽指令,包括宏定義指令、條件編譯指令、頭文件包含指令。比如上述 C++ 代碼中第一行的 #include 就是頭文件包含指令,會(huì)在編譯預(yù)處理階段被替換。
2、編譯優(yōu)化階段
      經(jīng)過預(yù)編譯后的輸出文件會(huì)經(jīng)過編譯優(yōu)化階段,將原始代碼轉(zhuǎn)化為匯編語言。這個(gè)階段是整個(gè)編譯過程的核心,也是起到 “ 翻譯 ” 作用的關(guān)鍵。整個(gè)階段的工作過程一般可分為六個(gè)步驟:詞法分析-語法分析-語義分析-中間代碼生成-代碼優(yōu)化-目標(biāo)代碼生成。
       在進(jìn)行編譯時(shí),會(huì)經(jīng)過詞法分析、語法分析和語義分析將高級(jí)語言代碼一步步分解剖析,按照定義的語法將不同的代碼語句拆解,并根據(jù)一些標(biāo)準(zhǔn)來對(duì)代碼語句進(jìn)行分析檢查,最后生成中間形式的代碼用于優(yōu)化。而優(yōu)化步驟則是對(duì)中間代碼進(jìn)行優(yōu)化改進(jìn),力圖提升生成的匯編代碼的效率。
3、匯編過程

       匯編語言可看做是一種低級(jí)語言,十分接近于機(jī)器碼的實(shí)現(xiàn)。

       匯編語言:用于硬件底層編程的低級(jí)語言,常用助記符代替機(jī)器指令,用地址符號(hào)或標(biāo)號(hào)代替指令或操作數(shù)的地址。特定的匯編語言和特定的機(jī)器語言指令集一一對(duì)應(yīng),通過匯編過程轉(zhuǎn)換成機(jī)器指令。

       由此可見,匯編過程實(shí)際上就是將匯編語言翻譯成為了機(jī)器碼,這些機(jī)器碼就是 C++ 源代碼的底層表達(dá),理論上計(jì)算機(jī)可以通過執(zhí)行這些機(jī)器碼來實(shí)現(xiàn)對(duì)源代碼的運(yùn)行。
4、鏈接過程
       但是要知道,一個(gè)普通的高級(jí)語言程序,都不單單只包含一個(gè)文件?赡苣硞(gè)源文件就會(huì)調(diào)用其它庫文件中的函數(shù)或者其它源文件中定義的符號(hào)函數(shù)等。因此多個(gè)文件在經(jīng)過編譯匯編之后,還需要通過鏈接過程將不同的目標(biāo)文件連接起來,建立起引用和調(diào)用的聯(lián)系。直至這步完成之后,程序語言代碼才能夠真正意義上的被計(jì)算機(jī)理解和運(yùn)行。

      反復(fù)思索 C++ 編譯的整個(gè)過程,大家是不是覺得這幾行簡潔的代碼仿佛經(jīng)過了千錘百煉一般,雖然最終似乎面目全非,但是卻變成了最原始最純潔的樣子。整個(gè)編譯過程的環(huán)環(huán)相扣以及精巧絕倫,同時(shí)這也正是大家對(duì)編譯階段的原理產(chǎn)生了更大的興趣的原因之一。

      本文由培訓(xùn)無憂網(wǎng)達(dá)內(nèi)教育專屬課程顧問老師整理發(fā)布,更多C語言課程信息可關(guān)注培訓(xùn)無憂網(wǎng)C語言培訓(xùn)頻道或添加老師微信:15033336050

      注:尊重原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處和鏈接 http://elsolbar.com/news-id-10652.html 違者必究!部分文章來源于網(wǎng)絡(luò)由培訓(xùn)無憂網(wǎng)編輯部人員整理發(fā)布,內(nèi)容真實(shí)性請(qǐng)自行核實(shí)或聯(lián)系我們,了解更多相關(guān)資訊請(qǐng)關(guān)注c語言頻道查看更多,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費(fèi)申請(qǐng)?jiān)囌n。關(guān)注官方微信了解更多:150 3333 6050

留下你的信息,課程顧問老師會(huì)一對(duì)一幫助你規(guī)劃更適合你的專業(yè)課程!
  • 姓名:

  • 手機(jī):

  • 地區(qū):

  • 想學(xué)什么:

  • 培訓(xùn)無憂網(wǎng)
免 費(fèi) 申 請(qǐng) 試 聽
提交申請(qǐng),《培訓(xùn)無憂網(wǎng)》課程顧問老師會(huì)一對(duì)一幫助你規(guī)劃更適合你的專業(yè)課程!