可以将C/C++软件编译成字节码以便以后执行吗?(独立于架构的unix软件.)

jkj*_*jkj 7 unix virtualization jvm cil llvm

我想将现有软件编译成演示文稿,以后可以在不同的体系结构(和操作系统)上运行.

为此,我需要一个(字节)代码,可以在另一个arch/OS上轻松运行/模拟(LLVM IR?一些RISC组件?)

一些随意的想法:

  • 编译成JVM字节码并用java运行.限制太多了?C编译器可用吗?
  • MS CIL.C-Compilers可用吗?
  • LLVM?可以稍后运行中间表示吗?
  • 编译成RISC arch,如MMIX.系统调用怎么样?

然后是系统调用映射的东西,但是例如BSD具有系统调用转换层.

是否有任何已经有效的系统可以将C/C++编译成以后可以在另一个架构上使用解释器运行的东西?


编辑

我可以将现有的unix软件编译成不那么低级的二进制文件,这可以比运行完整的x86模拟器更容易"模拟"吗?更像是JVM而不是XEN HVM.

Don*_*kby 6

维基百科的JVM页面上列出了几个C到JVM编译器.我从未尝试过任何一种,但它们听起来像是一项有趣的练习.

由于JVM与Java语言密切相关,因此JVM执行Java规范要求的严格运行时检查.这要求C对字节码编译器提供自己的"松散机器抽象",例如生成使用Java数组表示主存储器的编译代码(因此指针可以编译为整数),并将C库链接到集中式Java类模拟系统调用.下面列出的大多数或所有编译器都使用类似的方法.