Java 如何在编译器中包含汇编程序
我目前参加了一门编译器课程,并成功地用JAVA构建了一个小型编译器,它接受一个文件作为输入并编写NASM输出。Java 如何在编译器中包含汇编程序,java,assembly,compiler-construction,Java,Assembly,Compiler Construction,我目前参加了一门编译器课程,并成功地用JAVA构建了一个小型编译器,它接受一个文件作为输入并编写NASM输出。 然而,我想知道,如果我决定分发我的编译器,我将如何用它打包汇编程序 我确信我不能要求最终用户首先将代码编译到NASM,确保他/她安装了NASM,然后使用它来构建最终的可执行文件 另外,由于我想针对几个不同的系统,为每个目标编写一个高效的汇编程序显然是一项艰巨而耗时的任务(更不用说看似不可能的任务了!) 非常感谢您的帮助。您可以选择一个开源汇编程序,并将其与编译器一起打包。注意许可证。然
然而,我想知道,如果我决定分发我的编译器,我将如何用它打包汇编程序
我确信我不能要求最终用户首先将代码编译到NASM,确保他/她安装了NASM,然后使用它来构建最终的可执行文件
另外,由于我想针对几个不同的系统,为每个目标编写一个高效的汇编程序显然是一项艰巨而耗时的任务(更不用说看似不可能的任务了!)
非常感谢您的帮助。您可以选择一个开源汇编程序,并将其与编译器一起打包。注意许可证。然而,汇编程序的许可证也可能要求您在特定许可证下发布编译器 当然,这并不能解决第二个问题:如何使这个平台(或至少是CPU)独立。那么,使用汇编语言(或直接使用机器代码)就不是一条好路 解决方案可能是使用其他人的后端。LLVM目前有些“热门”。在某种程度上,这是通过向LLVM发送“独立于平台的汇编语言”来实现的,然后LLVM为您输出目标平台的目标代码。看来,至少对于
Windows
和Mac OS X
平台,NASM
汇编程序可以简单地部署在zip
文件中
您只需将zip
文件与应用程序一起分发,并在需要时将相应的特定于平台的zip
解压缩到临时目录中,然后在后台运行该工具
在采取行动之前需要澄清的其他一些主题:
- 如何使用
创建临时目录Java
- 如何使用
解压归档文件Java
- 如何将可执行文件标记为可执行文件(例如,如何设置
),而不威胁用户chmod+x
- 如何在
中生成等待后台进程李>Java
- NASM的重新分配许可政策是什么
是否有不常见的第三方依赖项,这些依赖项也必须提供NASM
- 如何编写跨平台
代码以及如何进行多平台测试Java
- 李>