"javap -c" - Generate Assembler Instructions

Q

How to disassembles bytecode of a Java class into assembler instructions.

✍: FYIcenter

A

If you want to disassemble bytecode of a Java class into assembler instructions, you can use the "javap" command with the "-c" option.

1. Compile HelloWorldFrame.java used in the last tutorial into a bytecode file, HelloWorldFrame.class:

> javac HelloWorldFrame.java 

2. Disassemble it using "javap" command with the "-c" option

> javap -c HelloWorldFrame.class 

Compiled from "HelloWorldFrame.java"
public class HelloWorldFrame extends javax.swing.JFrame {
  java.lang.String message;

  public HelloWorldFrame();
    Code:
       0: aload_0
       1: invokespecial #1    // Method javax/swing/JFrame."<init>":()V
       4: aload_0
       5: ldc           #7    // String Hello World!
       7: putfield      #9    // Field message:Ljava/lang/String;
      10: aload_0
      11: new           #15   // class HelloWorldFrame$1
      14: dup
      15: aload_0
      16: invokespecial #17   // Method HelloWorldFrame$1."<init>":(LHelloWorldFrame;)V
      19: invokevirtual #20   // Method setContentPane:(Ljava/awt/Container;)V
      22: aload_0
      23: bipush        100
      25: bipush        100
      27: invokevirtual #24   // Method setSize:(II)V
      30: return

  public static void main(java.lang.String[]);
    Code:
       0: new           #10   // class HelloWorldFrame
       3: dup
       4: invokespecial #28   // Method "<init>":()V
       7: astore_1
       8: aload_1
       9: iconst_1
      10: invokevirtual #29   // Method setVisible:(Z)V
      13: return
}

 

⇒ "javap -v" - Verbose Mode

⇐ "javap" - Dedault Output

⇑ JDK "javap" Command

⇑⇑ Java Bytecode Tools

2021-08-21, 177👍, 0💬