More actions
imported>novaman No edit summary |
imported>novaman No edit summary |
||
| Line 27: | Line 27: | ||
} | } | ||
==== 2차 수정 ==== | |||
public class ByteCode{ | public class ByteCode{ | ||
public ByteCode() { | public ByteCode() { | ||
| Line 41: | Line 42: | ||
} | } | ||
} | } | ||
} | |||
// Compile 결과 | |||
Compiled from "ByteCode.java" | |||
public class ByteCode { | |||
public ByteCode(); | |||
Code: | |||
0: aload_0 | |||
1: invokespecial #1 // Method java/lang/Object."<init>": | |||
()V | |||
4: getstatic #2 // Field java/lang/System.out:Ljava/ | |||
io/PrintStream; | |||
7: ldc #3 // String hello | |||
9: invokevirtual #4 // Method java/io/PrintStream.printl | |||
n:(Ljava/lang/String;)V | |||
12: return | |||
public void methodOperandStack(); | |||
Code: | |||
0: iconst_5 | |||
1: istore_1 | |||
2: iconst_1 | |||
3: istore_2 | |||
4: iload_1 | |||
5: iload_2 | |||
6: iadd | |||
7: istore_3 | |||
8: goto 12 | |||
11: astore_1 | |||
12: return | |||
Exception table: | |||
from to target type | |||
0 8 11 Class java/lang/Exception | |||
} | } | ||
Revision as of 16:14, 27 June 2013
강의록
강의 내용
ByteCode.java
// Compile // notepad++ 에서 UTF8(BOM 없음) 선택후 다음과 같이 cmd에서 컴파일 javac -encoding utf8 ByteCode.java
// Decompile javap -c ByteCode.class
public class ByteCode{
public ByteCode() {
System.out.println("hello");
}
public void methodOperandStack(){
int a, b, c;
a = 5;
b = 1;
c = a + b;
}
}
2차 수정
public class ByteCode{
public ByteCode() {
System.out.println("hello");
}
public void methodOperandStack(){
try{
int a, b, c;
a = 5;
b = 1;
c = a + b;
} catch(Exception e){
}
}
}
// Compile 결과
Compiled from "ByteCode.java"
public class ByteCode {
public ByteCode();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":
()V
4: getstatic #2 // Field java/lang/System.out:Ljava/
io/PrintStream;
7: ldc #3 // String hello
9: invokevirtual #4 // Method java/io/PrintStream.printl
n:(Ljava/lang/String;)V
12: return
public void methodOperandStack();
Code:
0: iconst_5
1: istore_1
2: iconst_1
3: istore_2
4: iload_1
5: iload_2
6: iadd
7: istore_3
8: goto 12
11: astore_1
12: return
Exception table:
from to target type
0 8 11 Class java/lang/Exception
}
3차 수정
public class ByteCode{
public ByteCode() {
System.out.println("hello");
}
private static final boolean optimize = false;
private final void methodOperandStack(){
if(optimize){
int a, b, c;
a = 5;
b = 1;
c = a + b;
}
}
}
// Compile 결과
Compiled from "ByteCode.java"
public class ByteCode {
public ByteCode();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":
()V
4: getstatic #2 // Field java/lang/System.out:Ljava/
io/PrintStream;
7: ldc #3 // String hello
9: invokevirtual #4 // Method java/io/PrintStream.printl
n:(Ljava/lang/String;)V
12: return
}