JVM-05(if指令)

2019-06-24  本文已影响0人  平头哥2

jvm 条件控制指定

Java代码如下:

public class HelloWorld{
    
    public void testIf(boolean a) {
        if(a) {
            System.out.println(a);
        }
    }
        
    public void testIf(byte a, byte b) {
        if (b > a) {
            System.out.println(a);
        } else if (a == b) {
            System.out.println("==");
        } else {
            System.out.println("<");
        }
    }
    
    public void testIf(char a, char b) {
        if (b > a) {
            System.out.println(a);
        } else if (a == b) {
            System.out.println("==");
        } else {
            System.out.println("<");
        }
    }
    
    public void testIf(short a, short b) {
        if (b > a) {
            System.out.println(a);
        } else if (a == b) {
            System.out.println("==");
        } else {
            System.out.println("<");
        }
    }

    public void testIf(int a, int b) {
        if (b > a) {
            System.out.println(a);
        } else if (a == b) {
            System.out.println("==");
        } else {
            System.out.println("<");
        }

    }
    
    public void testIf(long a, long b) {
        if (b > a) {
            System.out.println(a);
        } else if (a == b) {
            System.out.println("==");
        } else {
            System.out.println("<");
        }

    }

    public void testIf(float a, float b) {
        if (b > a) {
            System.out.println(a);
        } else if (a == b) {
            System.out.println("==");
        } else {
            System.out.println("<");
        }

    }
    
    public void testIf(double a, double b) {
        if (b > a) {
            System.out.println(a);
        } else if (a == b) {
            System.out.println("==");
        } else {
            System.out.println("<");
        }

    }   
}

对应的字节码指令:

$ javap -v HelloWorld.class
Classfile /D:/ideaproject/jvm/HelloWorld.class
  Last modified 2019-6-24; size 1754 bytes
  MD5 checksum 207965483a7389693ac481745671a47e
  Compiled from "HelloWorld.java"
public class HelloWorld
  minor version: 0
  major version: 52
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
   #1 = Methodref          #13.#43        // java/lang/Object."<init>":()V
   #2 = Fieldref           #44.#45        // java/lang/System.out:Ljava/io/PrintStream;
   #3 = Methodref          #46.#47        // java/io/PrintStream.println:(Z)V
   #4 = Methodref          #46.#48        // java/io/PrintStream.println:(I)V
   #5 = String             #49            // ==
   #6 = Methodref          #46.#50        // java/io/PrintStream.println:(Ljava/lang/String;)V
   #7 = String             #51            // <
   #8 = Methodref          #46.#52        // java/io/PrintStream.println:(C)V
   #9 = Methodref          #46.#53        // java/io/PrintStream.println:(J)V
  #10 = Methodref          #46.#54        // java/io/PrintStream.println:(F)V
  #11 = Methodref          #46.#55        // java/io/PrintStream.println:(D)V
  #12 = Class              #56            // HelloWorld
  #13 = Class              #57            // java/lang/Object
  #14 = Utf8               <init>
  #15 = Utf8               ()V
  #16 = Utf8               Code
  #17 = Utf8               LineNumberTable
  #18 = Utf8               LocalVariableTable
  #19 = Utf8               this
  #20 = Utf8               LHelloWorld;
  #21 = Utf8               testIf
  #22 = Utf8               (Z)V
  #23 = Utf8               a
  #24 = Utf8               Z
  #25 = Utf8               StackMapTable
  #26 = Utf8               (BB)V
  #27 = Utf8               B
  #28 = Utf8               b
  #29 = Utf8               (CC)V
  #30 = Utf8               C
  #31 = Utf8               (SS)V
  #32 = Utf8               S
  #33 = Utf8               (II)V
  #34 = Utf8               I
  #35 = Utf8               (JJ)V
  #36 = Utf8               J
  #37 = Utf8               (FF)V
  #38 = Utf8               F
  #39 = Utf8               (DD)V
  #40 = Utf8               D
  #41 = Utf8               SourceFile
  #42 = Utf8               HelloWorld.java
  #43 = NameAndType        #14:#15        // "<init>":()V
  #44 = Class              #58            // java/lang/System
  #45 = NameAndType        #59:#60        // out:Ljava/io/PrintStream;
  #46 = Class              #61            // java/io/PrintStream
  #47 = NameAndType        #62:#22        // println:(Z)V
  #48 = NameAndType        #62:#63        // println:(I)V
  #49 = Utf8               ==
  #50 = NameAndType        #62:#64        // println:(Ljava/lang/String;)V
  #51 = Utf8               <
  #52 = NameAndType        #62:#65        // println:(C)V
  #53 = NameAndType        #62:#66        // println:(J)V
  #54 = NameAndType        #62:#67        // println:(F)V
  #55 = NameAndType        #62:#68        // println:(D)V
  #56 = Utf8               HelloWorld
  #57 = Utf8               java/lang/Object
  #58 = Utf8               java/lang/System
  #59 = Utf8               out
  #60 = Utf8               Ljava/io/PrintStream;
  #61 = Utf8               java/io/PrintStream
  #62 = Utf8               println
  #63 = Utf8               (I)V
  #64 = Utf8               (Ljava/lang/String;)V
  #65 = Utf8               (C)V
  #66 = Utf8               (J)V
  #67 = Utf8               (F)V
  #68 = Utf8               (D)V
{
  public HelloWorld();
    descriptor: ()V
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #1                  // Method java/lang/Object."<init>":()V
         4: return
      LineNumberTable:
        line 1: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   LHelloWorld;

  public void testIf(boolean);
    descriptor: (Z)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
         0: iload_1  // 加载局部变量表索引1的变量
         1: ifeq          11 //ifeq,value出栈,和0比较,当value=0时结果为真
         4: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
         7: iload_1
         8: invokevirtual #3                  // Method java/io/PrintStream.println:(Z)V
        11: return
      LineNumberTable:
        line 3: 0
        line 4: 4
        line 6: 11
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      12     0  this   LHelloWorld;
            0      12     1     a   Z
      StackMapTable: number_of_entries = 1
        frame_type = 11 /* same */

  public void testIf(byte, byte);
    descriptor: (BB)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
         0: iload_2
         1: iload_1
         2: if_icmple     15
         5: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
         8: iload_1
         9: invokevirtual #4                  // Method java/io/PrintStream.println:(I)V
        12: goto          39
        15: iload_1
        16: iload_2
        17: if_icmpne     31
        20: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        23: ldc           #5                  // String ==
        25: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        28: goto          39
        31: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        34: ldc           #7                  // String <
        36: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        39: return
      LineNumberTable:
        line 9: 0
        line 10: 5
        line 11: 15
        line 12: 20
        line 14: 31
        line 16: 39
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      40     0  this   LHelloWorld;
            0      40     1     a   B
            0      40     2     b   B
      StackMapTable: number_of_entries = 3
        frame_type = 15 /* same */
        frame_type = 15 /* same */
        frame_type = 7 /* same */

  public void testIf(char, char);
    descriptor: (CC)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
         0: iload_2
         1: iload_1
         2: if_icmple     15
         5: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
         8: iload_1
         9: invokevirtual #8                  // Method java/io/PrintStream.println:(C)V
        12: goto          39
        15: iload_1
        16: iload_2
        17: if_icmpne     31
        20: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        23: ldc           #5                  // String ==
        25: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        28: goto          39
        31: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        34: ldc           #7                  // String <
        36: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        39: return
      LineNumberTable:
        line 19: 0
        line 20: 5
        line 21: 15
        line 22: 20
        line 24: 31
        line 26: 39
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      40     0  this   LHelloWorld;
            0      40     1     a   C
            0      40     2     b   C
      StackMapTable: number_of_entries = 3
        frame_type = 15 /* same */
        frame_type = 15 /* same */
        frame_type = 7 /* same */

  public void testIf(short, short);
    descriptor: (SS)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
         0: iload_2
         1: iload_1
         2: if_icmple     15
         5: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
         8: iload_1
         9: invokevirtual #4                  // Method java/io/PrintStream.println:(I)V
        12: goto          39
        15: iload_1
        16: iload_2
        17: if_icmpne     31
        20: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        23: ldc           #5                  // String ==
        25: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        28: goto          39
        31: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        34: ldc           #7                  // String <
        36: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        39: return
      LineNumberTable:
        line 29: 0
        line 30: 5
        line 31: 15
        line 32: 20
        line 34: 31
        line 36: 39
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      40     0  this   LHelloWorld;
            0      40     1     a   S
            0      40     2     b   S
      StackMapTable: number_of_entries = 3
        frame_type = 15 /* same */
        frame_type = 15 /* same */
        frame_type = 7 /* same */

  public void testIf(int, int);
    descriptor: (II)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
         0: iload_2
         1: iload_1
         2: if_icmple     15
         5: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
         8: iload_1
         9: invokevirtual #4                  // Method java/io/PrintStream.println:(I)V
        12: goto          39
        15: iload_1
        16: iload_2
        17: if_icmpne     31
        20: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        23: ldc           #5                  // String ==
        25: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        28: goto          39
        31: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        34: ldc           #7                  // String <
        36: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        39: return
      LineNumberTable:
        line 39: 0
        line 40: 5
        line 41: 15
        line 42: 20
        line 44: 31
        line 47: 39
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      40     0  this   LHelloWorld;
            0      40     1     a   I
            0      40     2     b   I
      StackMapTable: number_of_entries = 3
        frame_type = 15 /* same */
        frame_type = 15 /* same */
        frame_type = 7 /* same */

  public void testIf(long, long);
    descriptor: (JJ)V
    flags: ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
         0: lload_3
         1: lload_1
         2: lcmp
         3: ifle          16
         6: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
         9: lload_1
        10: invokevirtual #9                  // Method java/io/PrintStream.println:(J)V
        13: goto          41
        16: lload_1
        17: lload_3
        18: lcmp
        19: ifne          33
        22: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        25: ldc           #5                  // String ==
        27: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        30: goto          41
        33: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        36: ldc           #7                  // String <
        38: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        41: return
      LineNumberTable:
        line 50: 0
        line 51: 6
        line 52: 16
        line 53: 22
        line 55: 33
        line 58: 41
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      42     0  this   LHelloWorld;
            0      42     1     a   J
            0      42     3     b   J
      StackMapTable: number_of_entries = 3
        frame_type = 16 /* same */
        frame_type = 16 /* same */
        frame_type = 7 /* same */

  public void testIf(float, float);
    descriptor: (FF)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
         0: fload_2
         1: fload_1
         2: fcmpl
         3: ifle          16
         6: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
         9: fload_1
        10: invokevirtual #10                 // Method java/io/PrintStream.println:(F)V
        13: goto          41
        16: fload_1
        17: fload_2
        18: fcmpl
        19: ifne          33
        22: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        25: ldc           #5                  // String ==
        27: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        30: goto          41
        33: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        36: ldc           #7                  // String <
        38: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        41: return
      LineNumberTable:
        line 61: 0
        line 62: 6
        line 63: 16
        line 64: 22
        line 66: 33
        line 69: 41
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      42     0  this   LHelloWorld;
            0      42     1     a   F
            0      42     2     b   F
      StackMapTable: number_of_entries = 3
        frame_type = 16 /* same */
        frame_type = 16 /* same */
        frame_type = 7 /* same */

  public void testIf(double, double);
    descriptor: (DD)V
    flags: ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
         0: dload_3
         1: dload_1
         2: dcmpl
         3: ifle          16
         6: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
         9: dload_1
        10: invokevirtual #11                 // Method java/io/PrintStream.println:(D)V
        13: goto          41
        16: dload_1
        17: dload_3
        18: dcmpl
        19: ifne          33
        22: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        25: ldc           #5                  // String ==
        27: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        30: goto          41
        33: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        36: ldc           #7                  // String <
        38: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        41: return
      LineNumberTable:
        line 72: 0
        line 73: 6
        line 74: 16
        line 75: 22
        line 77: 33
        line 80: 41
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      42     0  this   LHelloWorld;
            0      42     1     a   D
            0      42     3     b   D
      StackMapTable: number_of_entries = 3
        frame_type = 16 /* same */
        frame_type = 16 /* same */
        frame_type = 7 /* same */
}
SourceFile: "HelloWorld.java"

对应的class文件的16进制格式表示:

00000000: cafe babe 0000 0034 0045 0a00 0d00 2b09  .......4.E....+.
00000010: 002c 002d 0a00 2e00 2f0a 002e 0030 0800  .,.-..../....0..
00000020: 310a 002e 0032 0800 330a 002e 0034 0a00  1....2..3....4..
00000030: 2e00 350a 002e 0036 0a00 2e00 3707 0038  ..5....6....7..8
00000040: 0700 3901 0006 3c69 6e69 743e 0100 0328  ..9...<init>...(
00000050: 2956 0100 0443 6f64 6501 000f 4c69 6e65  )V...Code...Line
00000060: 4e75 6d62 6572 5461 626c 6501 0012 4c6f  NumberTable...Lo
00000070: 6361 6c56 6172 6961 626c 6554 6162 6c65  calVariableTable
00000080: 0100 0474 6869 7301 000c 4c48 656c 6c6f  ...this...LHello
00000090: 576f 726c 643b 0100 0674 6573 7449 6601  World;...testIf.
000000a0: 0004 285a 2956 0100 0161 0100 015a 0100  ..(Z)V...a...Z..
000000b0: 0d53 7461 636b 4d61 7054 6162 6c65 0100  .StackMapTable..
000000c0: 0528 4242 2956 0100 0142 0100 0162 0100  .(BB)V...B...b..
000000d0: 0528 4343 2956 0100 0143 0100 0528 5353  .(CC)V...C...(SS
000000e0: 2956 0100 0153 0100 0528 4949 2956 0100  )V...S...(II)V..
000000f0: 0149 0100 0528 4a4a 2956 0100 014a 0100  .I...(JJ)V...J..
00000100: 0528 4646 2956 0100 0146 0100 0528 4444  .(FF)V...F...(DD
00000110: 2956 0100 0144 0100 0a53 6f75 7263 6546  )V...D...SourceF
00000120: 696c 6501 000f 4865 6c6c 6f57 6f72 6c64  ile...HelloWorld
00000130: 2e6a 6176 610c 000e 000f 0700 3a0c 003b  .java.......:..;
00000140: 003c 0700 3d0c 003e 0016 0c00 3e00 3f01  .<..=..>....>.?.
00000150: 0002 3d3d 0c00 3e00 4001 0001 3c0c 003e  ..==..>.@...<..>
00000160: 0041 0c00 3e00 420c 003e 0043 0c00 3e00  .A..>.B..>.C..>.
00000170: 4401 000a 4865 6c6c 6f57 6f72 6c64 0100  D...HelloWorld..
00000180: 106a 6176 612f 6c61 6e67 2f4f 626a 6563  .java/lang/Objec
00000190: 7401 0010 6a61 7661 2f6c 616e 672f 5379  t...java/lang/Sy
000001a0: 7374 656d 0100 036f 7574 0100 154c 6a61  stem...out...Lja
000001b0: 7661 2f69 6f2f 5072 696e 7453 7472 6561  va/io/PrintStrea
000001c0: 6d3b 0100 136a 6176 612f 696f 2f50 7269  m;...java/io/Pri
000001d0: 6e74 5374 7265 616d 0100 0770 7269 6e74  ntStream...print
000001e0: 6c6e 0100 0428 4929 5601 0015 284c 6a61  ln...(I)V...(Lja
000001f0: 7661 2f6c 616e 672f 5374 7269 6e67 3b29  va/lang/String;)
00000200: 5601 0004 2843 2956 0100 0428 4a29 5601  V...(C)V...(J)V.
00000210: 0004 2846 2956 0100 0428 4429 5600 2100  ..(F)V...(D)V.!.
00000220: 0c00 0d00 0000 0000 0900 0100 0e00 0f00  ................
00000230: 0100 1000 0000 2f00 0100 0100 0000 052a  ....../........*
00000240: b700 01b1 0000 0002 0011 0000 0006 0001  ................
00000250: 0000 0001 0012 0000 000c 0001 0000 0005  ................
00000260: 0013 0014 0000 0001 0015 0016 0001 0010  ................
00000270: 0000 0051 0002 0002 0000 000c 1b99 000a  ...Q............
00000280: b200 021b b600 03b1 0000 0003 0011 0000  ................
00000290: 000e 0003 0000 0003 0004 0004 000b 0006  ................
000002a0: 0012 0000 0016 0002 0000 000c 0013 0014  ................
000002b0: 0000 0000 000c 0017 0018 0001 0019 0000  ................
000002c0: 0003 0001 0b00 0100 1500 1a00 0100 1000  ................
000002d0: 0000 8500 0200 0300 0000 281c 1ba4 000d  ..........(.....
000002e0: b200 021b b600 04a7 001b 1b1c a000 0eb2  ................
000002f0: 0002 1205 b600 06a7 000b b200 0212 07b6  ................
00000300: 0006 b100 0000 0300 1100 0000 1a00 0600  ................
00000310: 0000 0900 0500 0a00 0f00 0b00 1400 0c00  ................
00000320: 1f00 0e00 2700 1000 1200 0000 2000 0300  ....'....... ...
00000330: 0000 2800 1300 1400 0000 0000 2800 1700  ..(.........(...
00000340: 1b00 0100 0000 2800 1c00 1b00 0200 1900  ......(.........
00000350: 0000 0500 030f 0f07 0001 0015 001d 0001  ................
00000360: 0010 0000 0085 0002 0003 0000 0028 1c1b  .............(..
00000370: a400 0db2 0002 1bb6 0008 a700 1b1b 1ca0  ................
00000380: 000e b200 0212 05b6 0006 a700 0bb2 0002  ................
00000390: 1207 b600 06b1 0000 0003 0011 0000 001a  ................
000003a0: 0006 0000 0013 0005 0014 000f 0015 0014  ................
000003b0: 0016 001f 0018 0027 001a 0012 0000 0020  .......'....... 
000003c0: 0003 0000 0028 0013 0014 0000 0000 0028  .....(.........(
000003d0: 0017 001e 0001 0000 0028 001c 001e 0002  .........(......
000003e0: 0019 0000 0005 0003 0f0f 0700 0100 1500  ................
000003f0: 1f00 0100 1000 0000 8500 0200 0300 0000  ................
00000400: 281c 1ba4 000d b200 021b b600 04a7 001b  (...............
00000410: 1b1c a000 0eb2 0002 1205 b600 06a7 000b  ................
00000420: b200 0212 07b6 0006 b100 0000 0300 1100  ................
00000430: 0000 1a00 0600 0000 1d00 0500 1e00 0f00  ................
00000440: 1f00 1400 2000 1f00 2200 2700 2400 1200  .... ...".'.$...
00000450: 0000 2000 0300 0000 2800 1300 1400 0000  .. .....(.......
00000460: 0000 2800 1700 2000 0100 0000 2800 1c00  ..(... .....(...
00000470: 2000 0200 1900 0000 0500 030f 0f07 0001   ...............
00000480: 0015 0021 0001 0010 0000 0085 0002 0003  ...!............
00000490: 0000 0028 1c1b a400 0db2 0002 1bb6 0004  ...(............
000004a0: a700 1b1b 1ca0 000e b200 0212 05b6 0006  ................
000004b0: a700 0bb2 0002 1207 b600 06b1 0000 0003  ................
000004c0: 0011 0000 001a 0006 0000 0027 0005 0028  ...........'...(
000004d0: 000f 0029 0014 002a 001f 002c 0027 002f  ...)...*...,.'./
000004e0: 0012 0000 0020 0003 0000 0028 0013 0014  ..... .....(....
000004f0: 0000 0000 0028 0017 0022 0001 0000 0028  .....(...".....(
00000500: 001c 0022 0002 0019 0000 0005 0003 0f0f  ..."............
00000510: 0700 0100 1500 2300 0100 1000 0000 8700  ......#.........
00000520: 0400 0500 0000 2a21 1f94 9e00 0db2 0002  ......*!........
00000530: 1fb6 0009 a700 1c1f 2194 9a00 0eb2 0002  ........!.......
00000540: 1205 b600 06a7 000b b200 0212 07b6 0006  ................
00000550: b100 0000 0300 1100 0000 1a00 0600 0000  ................
00000560: 3200 0600 3300 1000 3400 1600 3500 2100  2...3...4...5.!.
00000570: 3700 2900 3a00 1200 0000 2000 0300 0000  7.).:..... .....
00000580: 2a00 1300 1400 0000 0000 2a00 1700 2400  *.........*...$.
00000590: 0100 0000 2a00 1c00 2400 0300 1900 0000  ....*...$.......
000005a0: 0500 0310 1007 0001 0015 0025 0001 0010  ...........%....
000005b0: 0000 0087 0002 0003 0000 002a 2423 959e  ...........*$#..
000005c0: 000d b200 0223 b600 0aa7 001c 2324 959a  .....#......#$..
000005d0: 000e b200 0212 05b6 0006 a700 0bb2 0002  ................
000005e0: 1207 b600 06b1 0000 0003 0011 0000 001a  ................
000005f0: 0006 0000 003d 0006 003e 0010 003f 0016  .....=...>...?..
00000600: 0040 0021 0042 0029 0045 0012 0000 0020  .@.!.B.).E..... 
00000610: 0003 0000 002a 0013 0014 0000 0000 002a  .....*.........*
00000620: 0017 0026 0001 0000 002a 001c 0026 0002  ...&.....*...&..
00000630: 0019 0000 0005 0003 1010 0700 0100 1500  ................
00000640: 2700 0100 1000 0000 8700 0400 0500 0000  '...............
00000650: 2a29 2797 9e00 0db2 0002 27b6 000b a700  *)'.......'.....
00000660: 1c27 2997 9a00 0eb2 0002 1205 b600 06a7  .').............
00000670: 000b b200 0212 07b6 0006 b100 0000 0300  ................
00000680: 1100 0000 1a00 0600 0000 4800 0600 4900  ..........H...I.
00000690: 1000 4a00 1600 4b00 2100 4d00 2900 5000  ..J...K.!.M.).P.
000006a0: 1200 0000 2000 0300 0000 2a00 1300 1400  .... .....*.....
000006b0: 0000 0000 2a00 1700 2800 0100 0000 2a00  ....*...(.....*.
000006c0: 1c00 2800 0300 1900 0000 0500 0310 1007  ..(.............
000006d0: 0001 0029 0000 0002 002a                 ...).....*

小结:

1. boolean, byte, char, short ,int 使用的字节码指令基本一致

2. long,float,double都有自己的加载数据指令和比较指令

上一篇 下一篇

猜你喜欢

热点阅读