[英]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.