2015-04-04 55 views
3

我目前正在註冊編譯器課程,並已成功構建了一個JAVA中的小型編譯器,它接受文件作爲輸入並寫入NASM輸出。

我想知道,但是如果我決定分發我的編譯器,我將如何打包一個彙編程序?

我確定我不能要求最終用戶先將代碼編譯到NASM,確保他/她安裝了NASM,然後使用它來構建最終的可執行文件!

另外,因爲我想要針對幾個不同的系統,爲每個預期的目標寫一個高效的彙編程序的想法顯然是一個艱鉅和耗時的(更不用說看似不可能的)任務!

任何幫助表示讚賞。如何在編譯器中包含彙編程序

+1

「我相信,我不能讓最終用戶......」我不得不處理這是一個複雜得多比安裝的軟件包。特別是GNU編譯器。如果我正確理解你的問題,你可以使用類似[NSIS](http://nsis.sourceforge.net)的方式自動安裝過程。 – ajb 2015-04-04 05:58:25

回答

3

您可以選擇一個開源彙編程序並將其與您的編譯器打包。但是,請注意許可證,彙編程序的許可證可能會要求您在某個許可證下發布您的編譯器。

當然這並不能解決你的第二個問題:如何使這個平臺(或者至少是CPU)獨立。然後通過彙編語言(或直接轉換爲機器碼)不是要走的路。

解決方案可能是使用其他人的後端。 LLVM目前有點「熱」。通過向LLVM發送「獨立於平臺的彙編語言」的方式,LLVM然後爲您輸出目標平臺的目標代碼。

0

www.nasm.us/pub/nasm/releasebuilds/2.11.08似乎至少WindowsMac OS X平臺NASM彙編可以在zip文件被部署爲簡單portable application

您只需在應用程序中分發zip文件,並在需要時將相應的特定於平臺的zip提取到臨時目錄中,並在後臺運行該工具。

  • 如何與Java創建臨時目錄:


    一些進一步的主題,需要採取行動之前加以澄清?

  • 如何解壓檔案Java
  • 如何在不威脅用戶的情況下將可執行文件標記爲可執行文件(例如,如何設置chmod+x)?
  • 如何在Java中產生等待後臺進程?
  • 什麼是NASM的再發行許可政策?
  • 確實NASM有罕見的第三方依賴關係,必須發貨?
  • 如何編寫跨平臺的Java代碼以及如何做多平臺測試?
  • ...