我目前正在通過Andrew Appel的Java編譯器實現方式,並且我正在構建低級別中間表示法。爲x86處理器生成彙編
最初,我決定瞄準JVM並忽略所有低級機器的東西,但爲了學習我不瞭解的東西,我已經改變了心意。這改變了我的IR,因爲以JVM爲目標允許我(或多或少)在進行方法調用或構建對象時揮手。
Appel的書沒有詳細介紹任何特定的機器架構,所以我想知道我在哪裏可以找到我需要知道的更遠的地方。
我目前知道,我需要知道的事情是:
的指令集來使用。我有兩臺筆記本電腦可以開發;都有Core 2 Duo處理器。我目前的理解是,x86處理器大多使用相同的指令集,但它們並不完全相同。
操作系統是否影響編譯的代碼生成步驟,或者它是否完全依賴於處理器。例如,我知道生成代碼在32位與64位平臺上運行的不同之處。
如何組織棧幀等。何時使用寄存器與將參數放入堆棧,調用者保存與被調用者保存,所有這些。我一直認爲這將與指令集一起描述,但到目前爲止我還沒有在任何地方看到這個特定的信息。也許我在這裏誤解了一些東西?
以資源代替答案的鏈接非常受歡迎。
投票結束太寬泛。 – 2015-10-01 12:20:18