真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#如何編譯程序

這篇文章主要為大家展示了“C#如何編譯程序”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C#如何編譯程序”這篇文章吧。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),順慶企業(yè)網(wǎng)站建設(shè),順慶品牌網(wǎng)站建設(shè),網(wǎng)站定制,順慶網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,順慶網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

C#編譯程序

在談及C#編譯程序之前,我們了解一點(diǎn):計(jì)算機(jī)不能直接理解高級語言,只能直接理解機(jī)器語言,所以必須要把高級語言翻譯成機(jī)器語言,計(jì)算機(jī)才能執(zhí)行高級語言編寫的程序。翻譯的方式有兩種,一個(gè)是編譯,一個(gè)是解釋。

兩種方式只是翻譯的時(shí)間不同。編譯型語言寫的程序執(zhí)行之前,需要一個(gè)專門的編譯過程,把程序編譯成為機(jī)器語言的文件,比如exe(com)文件,以后要運(yùn)行的話就不用重新翻譯了,直接使用編譯的結(jié)果就行了(exe文件)。

C#編譯階段如下:

C#編譯程序把一個(gè)C#源程序翻譯成目標(biāo)程序的工作過程分為五個(gè)階段:1、詞法分析;2、語法分析;3、中間代碼生成;4、代碼優(yōu)化;5、目標(biāo)代碼生成。主要是進(jìn)行詞法分析和語法分析,又稱為源程序分析,分析過程中發(fā)現(xiàn)有語法錯誤,給出提示信息。

1、詞法分析

詞法分析的任務(wù)是對由字符組成的單詞進(jìn)行處理,從左至右逐個(gè)字符地對源程序進(jìn)行掃描,產(chǎn)生一個(gè)個(gè)的單詞符號,把作為字符串的源程序改造成為單詞符號串的中間程序。執(zhí)行詞法分析的程序稱為詞法分析程序或掃描器。

源程序中的單詞符號經(jīng)掃描器分析,一般產(chǎn)生二元式:單詞種別;單詞自身的值。單詞種別通常用整數(shù)編碼,如果一個(gè)種別只含一個(gè)單詞符號,那么對這個(gè)單詞符號,種別編碼就完全代表它自身的值了。若一個(gè)種別含有許多個(gè)單詞符號,那么,對于它的每個(gè)單詞符號,除了給出種別編碼以外,還應(yīng)給出自身的值。

詞法分析器一般來說有兩種方法構(gòu)造:手工構(gòu)造和自動生成。手工構(gòu)造可使用狀態(tài)圖進(jìn)行工作,自動生成使用確定的有限自動機(jī)來實(shí)現(xiàn)。

2、語法分析

編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規(guī)則的語法單位,如表達(dá)式、賦值、循環(huán)等,***看是否構(gòu)成一個(gè)符合要求的程序,按該語言使用的語法規(guī)則分析檢查每條語句是否有正確的邏輯結(jié)構(gòu),程序是最終的一個(gè)語法單位。編譯程序的語法規(guī)則可用上下文無關(guān)文法來刻畫。

語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發(fā),向下推導(dǎo),推出句子。而自下而上分析法采用的是移進(jìn)歸約法,基本思想是:用一個(gè)寄存符號的先進(jìn)后出棧,把輸入符號一個(gè)一個(gè)地移進(jìn)棧里,當(dāng)棧頂形成某個(gè)產(chǎn)生式的一個(gè)候選式時(shí),即把棧頂?shù)倪@一部分歸約成該產(chǎn)生式的左鄰符號。

3、中間代碼生成

中間代碼是源程序的一種內(nèi)部表示,或稱中間語言。中間代碼的作用是可使編譯程序的結(jié)構(gòu)在邏輯上更為簡單明確,特別是可使目標(biāo)代碼的優(yōu)化比較容易實(shí)現(xiàn)。中間代碼即為中間語言程序,中間語言的復(fù)雜性介于源程序語言和機(jī)器語言之間。中間語言有多種形式,常見的有逆波蘭記號、四元式、三元式和樹。

4、代碼優(yōu)化

代碼優(yōu)化是指對程序進(jìn)行多種等價(jià)變換,使得從變換后的程序出發(fā),能生成更有效的目標(biāo)代碼。所謂等價(jià),是指不改變程序的運(yùn)行結(jié)果。所謂有效,主要指目標(biāo)代碼運(yùn)行時(shí)間較短,以及占用的存儲空間較小。這種變換稱為優(yōu)化。

有兩類優(yōu)化:一類是對語法分析后的中間代碼進(jìn)行優(yōu)化,它不依賴于具體的計(jì)算機(jī);另一類是在生成目標(biāo)代碼時(shí)進(jìn)行的,它在很大程度上依賴于具體的計(jì)算機(jī)。對于前一類優(yōu)化,根據(jù)它所涉及的程序范圍可分為局部優(yōu)化、循環(huán)優(yōu)化和全局優(yōu)化三個(gè)不同的級別。

5、目標(biāo)代碼生成

目標(biāo)代碼生成是編譯的***一個(gè)階段。目標(biāo)代碼生成器把語法分析后或優(yōu)化后的中間代碼變換成目標(biāo)代碼。

目標(biāo)代碼生成階段應(yīng)考慮直接影響到目標(biāo)代碼速度的三個(gè)問題:一是如何生成較短的目標(biāo)代碼;二是如何充分利用計(jì)算機(jī)中的寄存器,減少目標(biāo)代碼訪問存儲單元的次數(shù);三是如何充分利用計(jì)算機(jī)指令系統(tǒng)的特點(diǎn),以提高目標(biāo)代碼的質(zhì)量。

6、表格管理程序

編譯過程中源程序的各種信息被保留在種種不同的表格,編譯各階段的工作都涉及到構(gòu)造、查找、或更新有關(guān)的表格。

7、出錯處理程序

如果編譯過程中發(fā)現(xiàn)源程序有錯誤,編譯程序應(yīng)報(bào)告錯誤的性質(zhì)和錯誤的發(fā)生的地點(diǎn),并且將錯誤所造成的影響限制在盡可能小的范圍內(nèi),使得源程序的其余部分能繼續(xù)被編譯下去。

這也是一般的編譯語言的編譯過程,但要注意的是C#有一個(gè)特殊的地方,那就是C#可以先編譯成TL文件,將代碼編譯成中間代碼(IL)既不是源程序也不是cpu指令,程序運(yùn)行時(shí)JIT將IL翻譯成本地cpu指令再執(zhí)行,由于編譯的是中間語言,因此速度比一般的解釋性語言要快。

JAVA也有這個(gè)特性,java程序也需要編譯,但是沒有直接編譯稱為機(jī)器語言,而是編譯稱為字節(jié)碼,然后用解釋方式執(zhí)行字節(jié)碼。

以上是“C#如何編譯程序”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


當(dāng)前標(biāo)題:C#如何編譯程序
轉(zhuǎn)載源于:http://weahome.cn/article/gccgeh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部