我目前正在参加编译器课程并在JAVA中成功构建了一个小编译器,它接受一个文件作为输入并写入NASM输出。
我想知道如果我决定分发我的编译器如何用它打包汇编程序?
我确信我不能要求最终用户首先将代码编译到NASM,确保他/她安装了NASM,然后使用它来构建最终的可执行文件!
此外,由于我想针对几个不同的系统,为每个预定目标编写高效汇编程序的想法显然是一项艰巨而耗时(更不用说看似不可能)的任务!
任何帮助表示赞赏。
答案 0 :(得分:3)
您可以使用编译器选择开源汇编程序和包。但是,请注意许可证,汇编程序的许可证可能还要求您在特定许可证下发布编译器。
当然,这并不能解决您的第二个问题:如何使这个平台(或至少是CPU)独立。然后通过汇编语言(或直接到机器代码)不是要走的路。
解决方案可能是使用其他人的后端。 LLVM目前有点“热”。在某种程度上,这通过向LLVM发送“平台无关汇编语言”来工作,然后LLVM为您输出目标平台的目标代码。
答案 1 :(得分: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
代码以及如何进行多平台测试?