字节码被java虚拟机解释器解释后执行的机器码与C语言编译后的机器码一样吗?

如题:JAVA是基于栈的指令集架构的,所有指令都是在栈上完成的。JAVA代码被编译后,变成字节码,字节码是按照java虚拟机规范生成的。

但是程序最终执行都是依赖物理机器的吧。所有字节码虽然都是解释执行的,解释出来的都是机器码吧?跟C代码编译的依赖操作系统直接运行的机器码,应该是一致的吧?还是不一致呢?

从<<hotspot实战>>中对ineg指令的解释,JVM生成的机器码与x86机器生成的机器码是一致的。我的理解是,只不过JVM里用到的机器码都在JVM的codelet里写死,并缓存起来了。

猜你喜欢

转载自blog.csdn.net/judyjie/article/details/88836184