java反汇编代码可以在没有操作系统的情况下运行吗



我使用javap将一个java类文件分解为Assembly。那么,我可以在没有Os的情况下运行javap命令生成的汇编代码吗?或者有类似于il2cpu.net的java吗?

不,你不能。

  1. javap命令输出的是反汇编的字节码,而不是机器指令。

  2. 不能运行反汇编的代码。分解后的代码只是文本。。需要组装成。。。某物在执行之前。。。通过某种方式。

  3. 字节码不能由常规硬件执行1。在常规硬件(如Intel、M1、SPARC等(上,它们需要由常规JVM进行解释/JIT编译,或者使用AOT编译器编译为本机代码。

  4. 所有主流JVM都运行在操作系统之上。即使是像JNode这样的异类(它确实在裸露的x86硬件上启动和运行(也具有嵌入其中的操作系统的大部分功能。

  5. 如果你把字节码编译成本机代码可执行文件,你仍然需要一个操作系统来运行可执行文件。


1-理论上可以实现将字节码作为其本机指令集执行的硬件,但这种硬件在市场上还没有。Sun曾有一个构建本地Java平台的项目,但它在很久以前就被取消了。还有其他人,但没有什么能吸引人。看见https://en.wikipedia.org/wiki/Java_processor寻找一些线索

否:(

  • javap不生成代码。它可以打印字节码和字段+方法,但它不是一个反编译器
  • 您可以在JVM*(在操作系统上运行(中运行字节码,但不需要javap
  • 您还可以将类/jar转换为本机映像,并在没有JVM的情况下运行,但您仍然需要一个操作系统。请参阅此处

*(严格来说,也有硬件能够直接运行字节码:https://en.wikipedia.org/wiki/Java_processor

相关内容

  • 没有找到相关文章

最新更新