簡體   English   中英

如何在編譯器中包含匯編程序

[英]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可以看出,至少對於WindowsMac OS X平台, NASM匯編程序可以作為簡單的便攜式應用程序部署在zip文件中。

您只需將zip文件與您的應用程序一起分發,並在需要時將適當的特定於平台的zip到臨時目錄中,然后在后台運行該工具。


在采取行動之前需要澄清一些其他主題:

  • 如何用Java創建臨時目錄?
  • 如何用Java解壓縮檔案?
  • 如何在不威脅用戶的情況下將可執行文件標記為可執行文件(例如如何設置chmod+x )?
  • 如何在Java生成等待后台進程?
  • 什么是NASM的再分配許可政策?
  • NASM是否有不常見的第三方依賴項,必須同時發貨?
  • 如何編寫跨平台的Java代碼以及如何進行多平台測試?
  • ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM