实际上,这个问题有点宽泛。我知道javac将java文件编译成一个字节码,一个类文件。因此,类文件应该包含jvm指令和所有这些。另一方面,查看这些指令的唯一方法是使用javap -c反编译类文件。但它不是反编译,对吧?因为如果它是反编译的,它会产生java文件。所以,我的猜测是,javac将java文件编译了2次(这实际上不是真的,但为了简单起见,让我们假设它是这样的),首先编译成jvm指令,然后编译成字节码,所以javap -c会从字节码反编译成jvm指令。Jvm应该能理解字节码,因此它不能理解指令。我有点糊涂了。有人能解释一下这是怎么回事吗?
发布于 2012-07-26 17:01:13
Javap不反编译字节码,它反汇编字节码。为了解释这种差异,我们可以用另一种方式来交换术语:编译是将人类可读的代码转换为字节码,而汇编是将汇编指令转换为字节码。
发布于 2012-07-26 17:02:20
javap显示了人类可读的JVM指令。JVM指令是JVM的代码。javap所展示的是汇编语言。
如果你想以更易读的形式看到字节码,可以使用java反编译器,例如jad。jad有几个UI包装器,包括Eclipse的插件。
https://stackoverflow.com/questions/11665730
复制相似问题