繁体   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