用Java和汇编语言构建一个运行在;裸金属“;
好了,各位, 假设我想制作一个只使用汇编和java的系统,我的问题是,只要我包含所有jvm文件夹、类、JAR等。。java应该仍然有效地运行吗?用Java和汇编语言构建一个运行在;裸金属“;,java,assembly,Java,Assembly,好了,各位, 假设我想制作一个只使用汇编和java的系统,我的问题是,只要我包含所有jvm文件夹、类、JAR等。。java应该仍然有效地运行吗? 我知道有些东西是专门在平台上编译的,但这就是为什么我要问,是否可以使用汇编来复制java包含在纯汇编/java系统中的所有.exe或其他可执行文件?如果我正确理解您的问题,您的意思是这样的。当然,可以在硬件上实现JVM raw,但不知道为什么要这样做。如果你这样做了,为什么你不在大部分工作中使用C而不是汇编。理论上可以用另一种语言实现jvm。我能想到的
我知道有些东西是专门在平台上编译的,但这就是为什么我要问,是否可以使用汇编来复制java包含在纯汇编/java系统中的所有.exe或其他可执行文件?如果我正确理解您的问题,您的意思是这样的。当然,可以在硬件上实现JVM raw,但不知道为什么要这样做。如果你这样做了,为什么你不在大部分工作中使用C而不是汇编。理论上可以用另一种语言实现jvm。我能想到的最好的例子是Python/Jpython,其中有该语言的原始C实现和纯Java实现 反对这一点的主要论据是——这是一大堆工作,没有多少好处 官方的Sun jvm和支持的jni库主要是用C编写的,您至少需要为大多数C POSIX API提供本机汇编程序实现 另外,C最初的设计目标是“一种可移植的汇编语言”,并且在很大程度上它仍然满足这些目标。C生成高效的机器代码,大多数C编译器将让代码机器指令与C代码内联
C的另一个好处是可以使用大量的交叉编译器,您不需要在目标体系结构上运行开发环境,您可以在您喜欢的paltform/IDE上进行开发和单元测试,当您准备好后,您可以将可执行文件导出到目标平台 如果你问是否有可能用Java和汇编语言构建一个在“裸机”上运行的系统,答案是肯定的。目前有几个例子:
- 主要针对嵌入式系统领域。(孙认为SunOS现在是一个“遗留”的产品线。)
- 目标更广泛,包括嵌入式系统、桌面系统、服务器和云计算
jikesrvm和Sun的Maxine提供了一个JVM实现,其本机代码很少(约为1kloc)。然而,这两个虚拟机都需要一个操作系统,只是研究实现。创建形成机器代码的八位字节流的过程在Java中显然是可以实现的。看看JNode。他们已经在这方面工作多年了
你想做什么?你的最终目标是什么?这可能有助于找到你想要的答案这就是我要问的,我知道这将是一个多人的工作,这只是一个想法。我问这个问题的唯一原因是因为我不确定如何使用汇编使jvm的可执行文件工作。。我想在这里回答的唯一一个问题是,如果可能的话,谢谢你,你回答得很完美。。没有告诉我最好使用c或类似的语言,为了便于移植,大多数非Java的部分可能都是c语言的。@starblue:对于Sun的JRE,我确信这是部分原因。另一方面,他们不想编写/维护成千上万行汇编程序。对于JNode,实际上没有C语言-纳米内核是在x86/x86_64汇编程序中编码的。(我个人认为这不是最好的主意,但这是另一个故事。至少JNoT不再有汇编程序中编码的字节码解释器!)Sun java是用C++编写的。