Byte Code

Revised: Apr./22nd/2004

JVM $B$OFsEY%3%s%Q%$%k$9$k(B

$BM9JXG[C#IW$OFsEY%Y%k$rLD$i$7!"(BJava $B$OFsEY%3%s%Q%$%k$9$k$H$$$o$l$^$9!#(B

  1. $B:G=i$K!"%=!<%9%3!<%I$,!"%3%s%Q%$%i(B javac $B$K$h$C$F!"%P%$%H%3!<%I$K%3%s%Q%$%k$5$l$^$9!#(B
  2. $B

$B%P%$%H%3!<%I%l%Y%k$N%^%k%A%W%i%C%H%U%)!<%`$O!"(BJava $B$NFCD'$N0l$D$G$"$j!"(B"Write Once, Run Anywhere." $B$O(B Java $B$NI88l$G$9!#(B

$B$3$3$G4JC1$K%P%$%H%3!<%I$NFI$_J}$r>R2p$7$^$9!#4pK\E*$K$O%"%;%s%V%i$G$"$j!"(Bjavac $B$G%3%s%Q%$%k$9$k$3$H$G@8@.$7$?(B class $B%U%!%$%k$r!"(Bjavap $B$G%G%#%9%"%;%s%V%k$9$k$3$H$G!"%P%$%H%3!<%I$N%K!<%b%K%C%/$,F@$i$l$^$9!#(B

$B8=BeE*$J(B JVM $B$O!"

Hello, World!

$B8E<0$f$+$7$/(B "Hello, World!" $B$+$i;O$a$^$7$g$&!#K\9`$O(B$B%9%?%C%/$H%R!<%W(B$B$K$D$$$F>5CN$7$F$+$iFI$_?J$a$F$/$@$5$$!#(B

Hello.java:

class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

$B%3%s%Q%$%k$H%G%#%9%"%;%s%V%k7k2L!'(B

C:\java>javac Hello.java
C:\java>javap -c Hello
Compiled from "Hello.java"
class Hello extends java.lang.Object{
Hello();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return
public static void main(java.lang.String[]);
  Code:
   0:   getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;
   3:   ldc     #3; //String Hello, World!
   5:   invokevirtual   #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   8:   return
}

$B;0$D$N%Q!<%H$KJ,$+$l$F$$$^$9!#(B

$B%X%C%@(B

$B:G=i$NItJ,$O!"%X%C%@ItJ,$G$9!#(B

Compiled from "Hello.java"
class Hello extends java.lang.Object{
...
}

$B%=!<%9%3!<%I$d%/%i%9$N>pJs$,:\$C$F$$$^$9!#@bL@$OITMW$G$7$g$&!#%/%i%9(B Hello $B$OL@<(E*$K7Q>5$7$F$$$J$$$N$G!"A4$F$N%/%i%9$,0EL[E*$K7Q>5$9$k(B java.lang.Object $B$r7Q>5$9$k$b$N$H$7$F%3%s%Q%$%k$5$l$F$$$^$9!#(B

$B%3%s%9%H%i%/%?(B

$BB3$$$F!"%G%#%9%"%;%s%V%k$7$?%/%i%9$N%3%s%9%H%i%/%?$,:\$C$F$$$^$9!#(B

Hello();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return

$B%/%i%9(B Hello $B$N%3%s%9%H%i%/%?$,$I$N$h$&$K

aload_0
$B%U%l!<%`$,J];}$9$k%m!<%+%kJQ?tG[Ns$N%$%s%G%C%/%9(B 0 $B$N;2>H$r%m!<%I!#(B
invokespecial #1; //Method java/lang/Object."<init>":()V
$B%9!<%Q!<%/%i%9$N=i4|2=%a%=%C%I$,5/F0!#0z?t$OL5$/!"La$jCM7?$O(B void$B!#(B
return
void $B$r%j%?!<%s!#(B

$B%a%=%C%I(B

$B:G8e$K!"%a%=%C%I$K$J$j$^$9!#Hs>o$KC;$/!"$3$NDxEY$@$H!"2?$r$d$C$F$$$k$N$+$h$/J,$+$i$J$$$+$b$7$l$^$;$s!#(B

public static void main(java.lang.String[]);
  Code:
   0:   getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;
   3:   ldc     #3; //String Hello, World!
   5:   invokevirtual   #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   8:   return
getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
$B%/%i%9$N(B static $B%U%#!<%k%I$rl9g$O!"(BPrintStream $B7?$N(B System.out$B!#(B
ldc #3; //String Hello, World!
$Bl9g$O!"J8;zNs%j%F%i%k(B "Hello, World!" $B$X$N%7%s%\%k;2>H$r%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$9$k!#(B
invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
$B%/%i%9$K4p$E$/%G%#%9%Q%C%A$r9T$$!"%$%s%9%?%s%9!&%a%=%C%I$r5/F0$9$k!#:#$N>l9g$O!"(Bjava/io/PrintStream.println $B$K!"%*%Z%i%s%I%9%?%C%/>e$N(B String $B7?%G!<%?$r0z?t$KM?$($F!"(Bvoid $B$r
return
void $B$r%j%?!<%s!#(B

$BA4$F$N%P%$%H%3!<%I$,I=<($5$l$k$o$1$G$O$"$j$^$;$s$,!"%$%s%9%H%i%/%7%g%s$N%K!<%b%K%C%/$H%3%a%s%H$K$h$j!"2?$r$7$F$$$k$N$+$,J,$+$j$^$9!#(B

$B@)8f9=B$$N%P%$%H%3!<%I(B

$B$h$jJ#;($JNc$H$7$F!">r7oJ,4t$H7+$jJV$7$r4^$`Nc$r5s$2$^$9!#(B

class IfDemo {
    public static void main(String[] args) {
        for (int i = 9; i < 10; i++) {
            if (i % 2 == 0) {
                System.out.println("even: " + i);
            } else {
                System.out.println("odd: " + i);
            }
        }
    }
}
C:\java>javac IfDemo.java
C:\java>javap -c IfDemo
Compiled from "IfDemo.java"
class IfDemo extends java.lang.Object{
IfDemo();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return
public static void main(java.lang.String[]);
  Code:
   0:   bipush  9
   2:   istore_1
   3:   iload_1
   4:   bipush  10
   6:   if_icmpge       74
   9:   iload_1
   10:  iconst_2
   11:  irem
   12:  ifne    43
   15:  getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;
   18:  new     #3; //class StringBuffer
   21:  dup
   22:  invokespecial   #4; //Method java/lang/StringBuffer."<init>":()V
   25:  ldc     #5; //String even:
   27:  invokevirtual   #6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   30:  iload_1
   31:  invokevirtual   #7; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
   34:  invokevirtual   #8; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
   37:  invokevirtual   #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   40:  goto    68
   43:  getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;
   46:  new     #3; //class StringBuffer
   49:  dup
   50:  invokespecial   #4; //Method java/lang/StringBuffer."<init>":()V
   53:  ldc     #10; //String odd:
   55:  invokevirtual   #6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   58:  iload_1
   59:  invokevirtual   #7; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
   62:  invokevirtual   #8; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
   65:  invokevirtual   #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   68:  iinc    1, 1
   71:  goto    3
   74:  return
}
C:\java>

$B%X%C%@(B

Compiled from "IfDemo.java"
class IfDemo extends java.lang.Object{
...
}

$B%3%s%9%H%i%/%?(B

IfDemo();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return

$B%a%=%C%I(B

$B7k9=D9$/$J$j$^$7$?!#0l9T$:$DDI$C$F$$$/$H!"7+$jJV$7!"F1$8%$%s%9%H%i%/%7%g%s$,EP>l$7$F$$$k$3$H$K5$$E$/$G$7$g$&!#(B

$B$3$N$/$i$$D9$/$J$k$H!"%P%$%H%3!<%I$N0UL#$,J,$+$j$d$9$/$J$j$^$9!#(B

$B%k!<%W$N=i4|2=(B

bipush 9
byte $BCM(B 9 $B$,(B int $B7?$KJQ49$5$l$F%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$5$l$k!#(B
istore_1
$B%*%Z%i%s%I%9%?%C%/$N(B int $BCM$,!"%+%l%s%H%U%l!<%`$N%m!<%+%kJQ?t7?G[Ns$N%$%s%G%C%/%9(B 1 $B$K%;%C%H$5$l$k!#(B

$B%k!<%W$N7+$jJV$7>r7o$NI>2A(B

iload_1
$B%+%l%s%H%U%l!<%`$N%m!<%+%kJQ?t7?G[Ns$N%$%s%G%C%/%9(B 1 $B$N(B int $B7?%G!<%?$,!"%*%Z%i%s%I!&%9%?%C%/$K%W%C%7%e$5$l$k!#(B
bipush 10
byte $BCM(B 10 $B$,(B int $B7?$KJQ49$5$l$F%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$5$l$k!#(B
if_icmpge 74
if_icmp[cmd] $B$O!"(B int $BCM$,%*%Z%i%s%I%9%?%C%/$+$i%]%C%W$5$l$FHf3S$5$l$k!#:#$N>l9g$O!"%3%^%s%I$,(B gt (greater than equal) $B$J$N$G!"%*%Z%i%s%I%9%?%C%/$N(B value1 ≥ value2 $B$G$"$l$P!"(B74 $B9TL\$K0\F0$7!"$5$b$J$/$P!"

if $B>r7o$NI>2A(B

iload_1
$B%+%l%s%H%U%l!<%`$N%m!<%+%kJQ?t7?G[Ns$N%$%s%G%C%/%9(B 1 $B$N(B int $B7?%G!<%?$,!"%*%Z%i%s%I!&%9%?%C%/$K%W%C%7%e$5$l$k!#(B
iconst_2
int $BDj?t(B 2 $B$,%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$5$l$k!#(B
irem
$B%*%Z%i%s%I%9%?%C%/$NFs$D$N(B int $BCM$r%]%C%W$7$F!"(Bvalue1 - (value1/value2)*value2 $B$N7k2L$r%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$9$k!#Nc$($P!"(Bvalue1 = 4, value2 = 2 $B$N>l9g!"(B4 - (4/2)*2 = 4 - 2*2 = 0 $B$G$"$j!"(Bvalue1 = 5, value2 = 2 $B$N>l9g!"(B 5 - (5/2)*2 = 5 - (2.5)*2 → 5 - 2*2 = 1 $B$H$J$k!#MW$9$k$K(B value1 $B$H(B value2 $B$N>jM>$G$"$k(B value1 % value2 (value1 mod value2) $B$,7W;;$5$l$F$*$j!"$=$N7k2L$,%*%Z%i%s%I!&%9%?%C%/$K%W%C%7%e$5$l$k!#(B
ifne 43
if[cmd] $B$O!"%*%Z%i%s%I%9%?%C%/$N(B int $BCM$r%]%C%W$7$F(B 0 $B$HHf3S$9$k!#:#$N>l9g$O!"%3%^%s%I$,(B ne (not equal) $B$J$N$G!"%*%Z%i%s%I%9%?%C%/$N(B value1 ≠ 0 $B$G$"$l$P!"(B 43 $B9TL\$K0\F0$7!"$5$b$J$/$P!"iconst_<n> $B$G%*%Z%i%s%I!&%9%?%C%/$K(B int $BCM(B n $B$r%W%C%7%e$7$F!"(Bif_icmp[cmd] xx $B$G%*%Z%i%s%I!&%9%?%C%/$+$iFs$D$N(B int $BCM$r%]%C%W$7$FHf3S$9$k$3$H$,I,MW$K$J$k$N$G!"(B0 $B$H$NHf3S$O%9%F%C%W$,0l$D>J$+$l$F$$$k$3$H$,J,$+$k!#(B

if $B9=B$$N
1. even $B$N>l9g(B
getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
$B%/%i%9$N(B static $B%U%#!<%k%I$,l9g$O!"(BPrintStream $B7?$N(B System.out$B!#(B
new #3; //class StringBuffer
$BH$,%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$5$l$k!#:#$N>l9g$O!"(BStringBuffer $B7?%*%V%8%'%/%H$,%$%s%9%?%s%92=$5$l$k!#(B
dup
$B%*%Z%i%s%I%9%?%C%/$N@hF,$K$"$kCM$,J#@=$5$l$F!"%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$5$l$k!#(B
invokespecial #4; //Method java/lang/StringBuffer."<init>":()V
StringBuffer $B$N=i4|2=%a%=%C%I$,5/F0!#(B
ldc #5; //String even:
$Bl9g$O!"J8;zNs%j%F%i%k(B "even" $B$X$N%7%s%\%k;2>H$r%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$9$k!#(B
invokevirtual #6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
$B%/%i%9$K4p$E$/%G%#%9%Q%C%A$r9T$$!"%$%s%9%?%s%9!&%a%=%C%I$r5/F0$9$k!#:#$N>l9g$O!"(Bjava/lang/StringBuffer#append $B$K!"%*%Z%i%s%I%9%?%C%/>e$N(B String $B7?%G!<%?$r0z?t$rM?$($F!"(BStringBuffer $B7?La$jCM$r
iload_1
$B%+%l%s%H%U%l!<%`$N%m!<%+%kJQ?t7?G[Ns$N%$%s%G%C%/%9(B 1 $B$N(B int $B7?%G!<%?$,!"%*%Z%i%s%I!&%9%?%C%/$K%W%C%7%e$5$l$k!#(B
invokevirtual #7; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
$B%/%i%9$K4p$E$/%G%#%9%Q%C%A$r9T$$!"%$%s%9%?%s%9!&%a%=%C%I$r5/F0$9$k!#:#$N>l9g$O!"(Bjava/lang/StringBuffer#append $B$K!"%*%Z%i%s%I%9%?%C%/>e$N(B int $B7?%G!<%?$r0z?t$rM?$($F!"(BStringBuffer $B7?La$jCM$r
invokevirtual #8; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
$B%/%i%9$K4p$E$/%G%#%9%Q%C%A$r9T$$!"%$%s%9%?%s%9!&%a%=%C%I$r5/F0$9$k!#:#$N>l9g$O!"(Bjava/lang/StringBuffer#toString $B$K!"%*%Z%i%s%I%9%?%C%/>e$N(B int $B7?%G!<%?$r0z?t$rM?$($F!"(BString $B7?La$jCM$r
invokevirtual #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
$B%/%i%9$K4p$E$/%G%#%9%Q%C%A$r9T$$!"%$%s%9%?%s%9!&%a%=%C%I$r5/F0$9$k!#:#$N>l9g$O!"(Bjava/io/PrintStream#println $B$K!"%*%Z%i%s%I%9%?%C%/>e$N(B String $B7?%G!<%?$r0z?t$rM?$($F!"(Bvoid $B7?La$jCM$r
goto 68
68 $B9TL\$K0\F0(B
2. odd $B$N>l9g(B
getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
$B%/%i%9$N(B static $B%U%#!<%k%I$,l9g$O!"(BPrintStream $B7?$N(B System.out$B!#(B
new #3; //class StringBuffer
$BH$,%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$5$l$k!#:#$N>l9g$O!"(BStringBuffer $B7?%*%V%8%'%/%H$,%$%s%9%?%s%92=$5$l$k!#(B
dup
$B%*%Z%i%s%I%9%?%C%/$N@hF,$K$"$kCM$,J#@=$5$l$F!"%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$5$l$k!#(B
invokespecial #4; //Method java/lang/StringBuffer."<init>":()V
StringBuffer $B$N=i4|2=%a%=%C%I$,5/F0!#(B
ldc #10; //String odd:
$Bl9g$O!"J8;zNs%j%F%i%k(B "odd" $B$X$N%7%s%\%k;2>H$r%*%Z%i%s%I%9%?%C%/$K%W%C%7%e$9$k!#(B
invokevirtual #6; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
$B%/%i%9$K4p$E$/%G%#%9%Q%C%A$r9T$$!"%$%s%9%?%s%9!&%a%=%C%I$r5/F0$9$k!#:#$N>l9g$O!"(Bjava/lang/StringBuffer#append $B$K!"%*%Z%i%s%I%9%?%C%/>e$N(B String $B7?%G!<%?$r0z?t$rM?$($F!"(BStringBuffer $B7?La$jCM$r
iload_1
$B%+%l%s%H%U%l!<%`$N%m!<%+%kJQ?t7?G[Ns$N%$%s%G%C%/%9(B 1 $B$N(B int $B7?%G!<%?$,!"%*%Z%i%s%I!&%9%?%C%/$K%W%C%7%e$5$l$k!#(B
invokevirtual #7; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
$B%/%i%9$K4p$E$/%G%#%9%Q%C%A$r9T$$!"%$%s%9%?%s%9!&%a%=%C%I$r5/F0$9$k!#:#$N>l9g$O!"(Bjava/lang/StringBuffer#append $B$K!"%*%Z%i%s%I%9%?%C%/>e$N(B int $B7?%G!<%?$r0z?t$rM?$($F!"(BStringBuffer $B7?La$jCM$r
invokevirtual #8; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
$B%/%i%9$K4p$E$/%G%#%9%Q%C%A$r9T$$!"%$%s%9%?%s%9!&%a%=%C%I$r5/F0$9$k!#:#$N>l9g$O!"(Bjava/lang/StringBuffer#toString $B$K!"%*%Z%i%s%I%9%?%C%/>e$N(B int $B7?%G!<%?$r0z?t$rM?$($F!"(BString $B7?La$jCM$r
invokevirtual #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
$B%/%i%9$K4p$E$/%G%#%9%Q%C%A$r9T$$!"%$%s%9%?%s%9!&%a%=%C%I$r5/F0$9$k!#:#$N>l9g$O!"(Bjava/io/PrintStream#println $B$K!"%*%Z%i%s%I%9%?%C%/>e$N(B String $B7?%G!<%?$r0z?t$rM?$($F!"(Bvoid $B7?La$jCM$r

$B7+$jJV$7$N8e=hM}(B

iinc 1, 1
$B%m!<%+%kJQ?tG[Ns$N%$%s%G%C%/%9(B 1 $B$N(B int $BCM$K!"(Bint $B7?Dj?t(B 1 $B$,2C;;$5$l$k!#(B
goto 3
3 $B9TL\$K0\F0!#(B

$B%a%=%C%I$N=*N;(B

return
void $B$r%j%?!<%s!#(B

$B>\:Y(B

$BK\9`$G$O!"%$%s%9%H%i%/%7%g%s$4$H$K!"2?$r$d$C$F$$$k$N$+$r>R2p$7$^$7$?!#0l9T$:$DDI$C$F$$$/$3$H$G!"46$8$,$D$+$a$?$N$G$O$J$$$+$H;W$$$^$9!#(B

$B$3$3$G$O!"%P%$%H%3!<%I$NFI$_J}$K4X$9$k>\:Y$rBN7OE*$K@bL@$9$k$3$H$O$7$^$;$s!#>\:Y$O!"!V(BJava$B2>A[%^%7%s;EMM=q(B$B!W$r;2>H$7$F$/$@$5$$!#(B



Copyright © 2003-2004 SUGAI, Manabu. All Rights Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送