Domanda

In realtà, la domanda è un po 'più ampia. So che Javac compila il file Java in un bytecode, un file di classe.Quindi, il file di classe dovrebbe contenere istruzioni JVM e tutto ciò.D'altra parte, l'unico modo per vedere quelle istruzioni è quello di decompilare il file di classe con javap -c.Ma non è decompione, giusto?Perché se si stava decompitando, produrrebbe un file Java.Quindi, la mia ipotesi qui è che Javac compila il file Java come 2 volte (che non è effettivamente vero, ma supponiamo che per semplicità), prima all'istruzione JVM, quindi a Bytecode, quindi Javap -C decompili da istruzioni di bytecode alle istruzioni JVM.JVM dovrebbe capire bytecode, quindi non può capire le istruzioni.Sono un po 'confuso qui.Qualcuno potrebbe spiegare cosa sta succedendo qui?

È stato utile?

Soluzione

javap non decompile il bytecode, it disassembli it.Per spiegare la differenza, possiamo cambiare i termini dall'altra parte: la compilazione sta traducendo il codice leggibile umano in bytecode mentre il montaggio sta traducendo le istruzioni di assemblaggio su Bytecode.

Altri suggerimenti

javap Visualizza la forma leggibile dall'uomo di istruzioni JVM.Le istruzioni JVM sono codici per JVM.Ciò che mostra javap è il linguaggio Assembler.

Se vuoi vedere il codice BYTE in forma più leggibile utilizzare Java Decompiler, ad es. jad .Ci sono diversi wapper interfacciature per JAD incluso il plug-in per Eclipse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top