javap-c对类文件做了什么?
事实上,这个问题要宽泛一点。javap-c对类文件做了什么?,java,javac,javap,Java,Javac,Javap,事实上,这个问题要宽泛一点。 我知道javac将java文件编译成字节码,一个类文件。所以,类文件应该包含jvm指令和所有这些。另一方面,查看这些指令的唯一方法是使用javap-c反编译类文件。但它不是反编译,对吗?因为如果它是反编译的,它将生成java文件。所以,我猜javac会编译java文件2次(实际上不是这样,但为了简单起见,让我们假设是这样),首先编译到jvm指令,然后是字节码,所以javap-c会从字节码反编译到jvm指令。Jvm应该理解字节码,因此它不能理解指令。我有点困惑。有人能
我知道javac将java文件编译成字节码,一个类文件。所以,类文件应该包含jvm指令和所有这些。另一方面,查看这些指令的唯一方法是使用javap-c反编译类文件。但它不是反编译,对吗?因为如果它是反编译的,它将生成java文件。所以,我猜javac会编译java文件2次(实际上不是这样,但为了简单起见,让我们假设是这样),首先编译到jvm指令,然后是字节码,所以javap-c会从字节码反编译到jvm指令。Jvm应该理解字节码,因此它不能理解指令。我有点困惑。有人能解释一下这里发生了什么吗?Javap不是反编译字节码,而是反汇编字节码。为了解释这种差异,我们可以将术语换成另一种方式:编译是将人类可读的代码转换为字节码,而汇编是将汇编指令转换为字节码。
javap
显示人类可读的JVM指令形式。JVM指令是JVM的代码。javap
显示的是汇编语言
如果您想以更可读的形式查看字节码,请使用java反编译器,例如。jad有几个UI包装器,包括Eclipse插件 为什么JVM需要汇编语言?我的意思是,JVM没有正式的汇编程序,所以从这个角度来看,没有人会用汇编语言为JVM编写程序。@gasan:JVM需要汇编语言,因为人们谈论诸如
iload
和ifeq
之类的指令,而不是0x15
和0x99
,是很有用的。在我看来,文档提供了足够的信息?它对类文件没有任何作用。它读取并将字节码转储为文本。@PeterLawrey为文本。。是源代码还是jvm的汇编语言?