色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

C語言是根據什么原理和機制生產匯編的?

錢斌斌2年前16瀏覽0評論

用C/C++語言這類高級編程語言所編寫的程序源碼是利用一種叫做“編譯原理”的技術,經過一些列的處理步驟,最終轉變為匯編指令,再最后翻譯機器指令。我們知道計算機只能處理和識別二進制指令,而我們所編寫的程序包含各種較復雜的結構,例如if語句、循環語句、繼承、多態、虛函數等。其實,在很早的時候,計算機科學家們就已經在研究如何把接近人類語言的高級語言所編寫的程序轉換成機器指令了。這些研究成果都歸屬于“編譯原理”領域,并且“編譯原理”是計算機專業學生的必修課。

那么根據編譯原理,C語言是怎么轉換成匯編語言,總共分以下幾個步驟:

1.預處理->2.詞法分析->3.語法分析->4.語義分析->5.優化->6.鏈接

注意,我上面列出的過程是目前實際中真正采用的步驟,編譯原理課程中可能沒有把完整步驟列出來,只列舉了核心的幾個步驟。

上面每個步驟在編譯原理課程中都有一個專門的章節來講述。這里大概說一下每個步驟的作用吧。

1.預處理:負責執行C語言中的#include,#if,#else等預處理指令。注意,這里是去執行這些預處理指令。這些預處理指令的作用是根據你的系統環境配湊出最終版的源代碼。

2.詞法分析:把你定義的函數名、變量名、預留的關鍵字等抽象化,用一個符號來代替,方便編譯程序處理。例如上圖中的main,return,printf等單詞,都被看作一個符號,轉換成M,R,P。在這個過程中,會檢查你的變量名、函數名名稱是否正確。

3.語法分析:經過詞法分析處理之后,程序代碼已經變成一堆符號了,例如ISTF...MIRP(放心,人已經不認識了,但是計算機能認識)。這時的符號是打散的,語法分析負責把這些符號按照一定的結構組織起來,形成一個抽象語法樹(這個結構跟你寫的程序代碼的結構是對應起來的)。

4.語義分析:當構造出這樣一個樹的結構之后,編譯就就會檢查語法是否正確,并且去掃描這棵樹。根據這棵樹的結構,生成中間指令了。這個中間指令已經非常接近匯編。中間指令跟匯編還是有區別的,因為不同廠家的CPU指令有所不同,所以還要根據不同廠家的CPU指令集,把這個中間指令轉換成匯編。

5.優化:因為程序員有時代碼寫的不太好,會導致一些多余的操作,或者效率低的指令。優化過程可以找出這些毛病,自動替換成更好的指令。

6.鏈接:以上過程只編譯了一個模塊,一個大型程序往往包好多個模塊。最后的鏈接過程負責把所有模塊組裝起來,構造出最后可以執行的程序。

以上就是C語言轉換成匯編指令的大致過程了。因為時間倉促,可能有些疏漏,歡迎在評論中補充或者糾正錯誤。如果覺得講得不錯,可以點個贊。