1. 程式人生 > 程式設計 >爛尾工程: Java實現的組合語言編譯器

爛尾工程: Java實現的組合語言編譯器

在半年前的中文程式設計的嘗試歷程小記中簡單介紹了這一專案. 由於短期內估計不會繼續進行,而且這個專案好像是至今個人在中文命名實踐中的程式碼量最大的一個專案,謹在此作一小結. 最新的原始碼庫在program-in-chinese/assembler-in-chinese-experiment.

大致設計草圖

以'mov rax 0x1122334455667788'指令示例如下:

當前進度

  • 僅支援兩個運算元的部分指令,第二個運算元僅支援立即數
  • 第一個運算元可以是暫存器,或者簡單的記憶體定址,如[0]
  • 支援強制型別,如add ax,strict word 5
  • 生成空可執行檔案(PE),尚未填入生成的二進位制碼

原始碼結構

下面是所有檔案,希望是一目瞭然? "分析器類"從單行彙編指令字串分析生成"程式碼行類","彙編器類"從"程式碼行類"生成二進位制碼. 其他主要是業務資料描述("模型"包)和功用(utils).

假如要重新繼續這一專案,下面是一些想法:

  • 考慮使用Antlr4,用類似antlr/grammars-v4的語法檔案輔助生成分析器,省去手動編寫分析器
  • 最好有彙編和x64指令背景的開發者

2018-01-03