中間代碼生成
在把一個源程序翻譯成目標代碼的過程中,一個編譯器可能構造出一個或多個中間表示。這些中間表示可以有多種形式。語法樹是一種中間表示形式,它們通常在語法分析和語義分析中使用。
在源程序的語法分析和語義分析完成之后,很多編譯器生成一個明確的低級的或類機器語言的中間表示。我們可以把這個表示看作是某個抽象機器的程序。該中間表示應該具有兩個重要的性質:它應該易於生成,且能夠被輕松地翻譯為目標機器上的語言。
代碼優化
機器無關的代碼優化步驟試圖改進中間代碼,以便生成更好的目標代碼。“更好”通常意味着更快,但是也可能會有其他目標,如更短的或能耗更低的目標代碼
代碼生成
代碼生成器以源程序的中間表示形式作為輸入,並把它映射到目標語言。如果目標語言是機器代碼,那么就必須為程序使用的每個變量選擇寄存器或內存位置。然后,中間指令被翻譯成為能夠完成相同任務的機器指令序列。代碼生成的一個至關重要的方面是合理分配寄存器以存放變量的值。
(這里我覺得還存疑因為書本上下下段還說了一句話,上面對代碼生成的討論忽略了對源程序中的標識行進行存儲分配的重要問題。)
不過總之,運行時刻的存儲組織方法依賴於被編譯的語言。編譯器在中間代碼生成或代碼生成階段做出有關存儲分配的決定。