jrop編譯原理?
編譯程序是源程序的一個轉換系統,解釋程序是源程序的一個執行系統(也就是說解釋程序最終會有一個代碼執行結果)。
編譯程序是先全部翻譯為目標程序在執行,可反復執行(有點像Java的編譯執行),解釋程序對源程序逐句的翻譯執行(Python的執行過程)。
解釋程序比編譯程序更加的通用。
通過編譯運行,源程序和數據是在不同的時間進行處理的,而解釋運行,是同時的。
1.2 編譯過程和編譯程序的結構
編譯的各個階段:詞法分析->語法分析->語義分析->中間代碼生成->代碼優化->目標代碼生成 (如果是問編譯程序結構,則在后面都加一個器字,如詞法分析器)
各個階段的任務(重要):
詞法分析:從左到右掃描輸入的源程序,檢查詞法錯誤,識別單詞,并輸出單詞的內部表示形式
語法分析:在詞法分析的基礎上將單詞組成各類語法短語,并確認整個輸入串是否具有語法上正確的程序結構
語義分析與中間代碼生成:對語義進行檢查,如沒有錯誤,則生成中間代碼(本書即四元式)
代碼優化:對產生的中間代碼進行等價交換,以產生高質量的目標代碼
目標代碼生成:把中間代碼變換成特定機器上的低級語言代碼。