Question

En fait, la question est un peu plus large.Je sais que javac compile le fichier Java en un bytecode, un fichier de classe.Ainsi, le fichier de classe doit contenir des instructions jvm et tout ça.D'un autre côté, la seule façon de voir ces instructions est de décompiler le fichier de classe avec javap -c.Mais ce n’est pas une décompilation, n’est-ce pas ?Parce que si c'était décompilé, cela produirait un fichier java.Donc, je suppose que javac compile le fichier Java comme 2 fois (ce qui n'est pas vraiment vrai, mais supposons cela pour plus de simplicité), d'abord en instruction jvm, puis en bytecode, donc javap -c décompile du bytecode en instructions jvm.JVM est censé comprendre le bytecode, il ne peut donc pas comprendre les instructions.Je suis un peu confus ici.Quelqu'un pourrait-il expliquer ce qui se passe ici ?

Était-ce utile?

La solution

Javap ne décompile le bytecode, il démonte it.Pour expliquer la différence, nous pouvons changer les termes de l'autre côté: la compilation est la traduction du code lisible humain à Bytecode, tandis que l'assemblage est la traduction des instructions d'assemblage en bytecode.

Autres conseils

javap affiche une forme lisible par l'homme des instructions JVM.Les instructions JVM sont des codes pour JVM.Quoi javap shows est un langage assembleur.

Si vous souhaitez voir le code d'octet sous une forme plus lisible, utilisez le décompilateur Java, par ex. jad.Il existe plusieurs wrappers d'interface utilisateur pour jad, notamment un plug-in pour Eclipse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top