我目前正在註冊編譯器課程,並已成功構建了一個JAVA中的小型編譯器,它接受文件作爲輸入並寫入NASM輸出。
我想知道,但是如果我決定分發我的編譯器,我將如何打包一個彙編程序?
我確定我不能要求最終用戶先將代碼編譯到NASM,確保他/她安裝了NASM,然後使用它來構建最終的可執行文件!
另外,因爲我想要針對幾個不同的系統,爲每個預期的目標寫一個高效的彙編程序的想法顯然是一個艱鉅和耗時的(更不用說看似不可能的)任務!
任何幫助表示讚賞。如何在編譯器中包含彙編程序
3
A
回答
3
您可以選擇一個開源彙編程序並將其與您的編譯器打包。但是,請注意許可證,彙編程序的許可證可能會要求您在某個許可證下發布您的編譯器。
當然這並不能解決你的第二個問題:如何使這個平臺(或者至少是CPU)獨立。然後通過彙編語言(或直接轉換爲機器碼)不是要走的路。
解決方案可能是使用其他人的後端。 LLVM目前有點「熱」。通過向LLVM發送「獨立於平臺的彙編語言」的方式,LLVM然後爲您輸出目標平臺的目標代碼。
0
從www.nasm.us/pub/nasm/releasebuilds/2.11.08似乎至少Windows
和Mac OS X
平臺NASM
彙編可以在zip
文件被部署爲簡單portable application。
您只需在應用程序中分發zip
文件,並在需要時將相應的特定於平臺的zip
提取到臨時目錄中,並在後臺運行該工具。
- 如何與
Java
創建臨時目錄:
一些進一步的主題,需要採取行動之前加以澄清?
- 如何解壓檔案
Java
? - 如何在不威脅用戶的情況下將可執行文件標記爲可執行文件(例如,如何設置
chmod+x
)? - 如何在
Java
中產生等待後臺進程? - 什麼是
NASM
的再發行許可政策? - 確實
NASM
有罕見的第三方依賴關係,必須發貨? - 如何編寫跨平臺的
Java
代碼以及如何做多平臺測試? - ...
相關問題
- 1. 在SASM IDE中編譯彙編程序
- 2. 彙編:編譯COM程序
- 3. 在包含彙編程序的Visual C++編譯器上編譯C++的命令行調用?
- 4. 在Windows上編譯Linux彙編程序
- 5. 編譯器編譯外部包含
- 6. 編譯器編譯也包含了嗎?
- 7. 如何防止彙編程序編譯16位應用程序?
- 8. 如何在編譯的macruby應用程序中包含gem?
- 9. 反編譯彙編程序到c
- 10. 將GNU彙編程序編譯爲windows
- 11. 使用avr-gcc編譯彙編程序
- 12. 編譯彙編代碼,其中包括含C-定義
- 13. 「彙編」與「彙編程序」
- 14. 編譯器/彙編程序如何理解處理器內核寄存器?
- 15. 程序計數器如何在powerpc彙編程序中操作
- 16. 彙編中的C#編譯器
- 17. 在DosBox中編譯彙編程序時出錯
- 18. A .net反彙編程序/反編譯器
- 19. 編譯器如何編譯編譯器?
- 20. 從彙編器到C編譯器
- 21. 如何編譯包含卸載到麥克風的彙編文件
- 22. 如何在C++中編譯編譯器?
- 23. 彙編程序
- 24. 反彙編程序如何工作,它與反編譯器有什麼不同?
- 25. 如何只包含彙編包含文件的部分
- 26. 如何使用execl編譯一個包含math.h庫的程序()
- 27. 如何編譯包含LLVM API頭文件的C++程序?
- 28. 在mac os上編譯彙編程序在nasm上
- 29. 如何編譯64位彙編代碼
- 30. 如何編譯彙編代碼?
「我相信,我不能讓最終用戶......」我不得不處理這是一個複雜得多比安裝的軟件包。特別是GNU編譯器。如果我正確理解你的問題,你可以使用類似[NSIS](http://nsis.sourceforge.net)的方式自動安裝過程。 – ajb 2015-04-04 05:58:25