[英]How to include an assembler in a compiler
我目前正在參加編譯器課程,並已在JAVA中成功構建了一個小編譯器,它接受一個文件作為輸入並寫入NASM輸出。
我想知道如果我決定分發我的編譯器如何用它打包匯編程序?
我確信我不能要求最終用戶首先將代碼編譯到NASM,確保他/她安裝了NASM,然后使用它來構建最終的可執行文件!
此外,由於我想針對幾個不同的系統,為每個預定目標編寫高效匯編程序的想法顯然是一項艱巨而耗時(更不用說看似不可能)的任務!
任何幫助表示贊賞。
您可以使用編譯器選擇一個開源匯編程序和包。 但是,請注意許可證,匯編程序的許可證可能還要求您在特定許可證下發布編譯器。
當然,這並不能解決您的第二個問題:如何使這個平台(或至少CPU)獨立。 然后通過匯編語言(或直接到機器代碼)不是要走的路。
解決方案可能是使用其他人的后端。 LLVM目前有點“熱”。 在某種程度上,這通過向LLVM發送“平台無關匯編語言”來工作,然后LLVM為您輸出目標平台的目標代碼。
從www.nasm.us/pub/nasm/releasebuilds/2.11.08可以看出,至少對於Windows
和Mac OS X
平台, NASM
匯編程序可以作為簡單的便攜式應用程序部署在zip
文件中。
您只需將zip
文件與您的應用程序一起分發,並在需要時將適當的特定於平台的zip
到臨時目錄中,然后在后台運行該工具。
在采取行動之前需要澄清一些其他主題:
Java
創建臨時目錄? Java
解壓縮檔案? chmod+x
)? Java
生成等待后台進程? NASM
的再分配許可政策? NASM
是否有不常見的第三方依賴項,必須同時發貨? Java
代碼以及如何進行多平台測試?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.