More actions
imported>smksyj No edit summary |
(Repair batch-0007 pages from live compare) |
||
| (3 intermediate revisions by one other user not shown) | |||
| Line 38: | Line 38: | ||
Code: | Code: | ||
0: aload_0 | 0: aload_0 | ||
1: invokespecial #1 // Method java/lang/Object."<init>": | 1: invokespecial #1 // Method java/lang/Object."<init>":()V | ||
4: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; | |||
4: getstatic #2 // Field java/lang/System.out:Ljava/ | |||
7: ldc #3 // String hello | 7: ldc #3 // String hello | ||
9: invokevirtual #4 // Method java/io/PrintStream. | 9: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V | ||
12: return | 12: return | ||
| Line 84: | Line 81: | ||
Code: | Code: | ||
0: aload_0 | 0: aload_0 | ||
1: invokespecial #1 // Method java/lang/Object."<init>": | 1: invokespecial #1 // Method java/lang/Object."<init>":()V | ||
4: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; | 4: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; | ||
7: ldc #3 // String hello | 7: ldc #3 // String hello | ||
| Line 133: | Line 129: | ||
Code: | Code: | ||
0: aload_0 | 0: aload_0 | ||
1: invokespecial #1 // Method java/lang/Object."<init>": | 1: invokespecial #1 // Method java/lang/Object."<init>":()V | ||
4: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; | 4: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; | ||
7: ldc #3 // String hello | 7: ldc #3 // String hello | ||
| Line 140: | Line 135: | ||
12: return | 12: return | ||
} | } | ||
Latest revision as of 01:32, 27 March 2026
강의록
강의 내용
ByteCode.java
cmd에서 Compile & Decompile 방법
// 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;
}
}
// Result of Decompile
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.println:(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: return
}
1차 수정
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){
}
}
}
// Result of Decompile
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.println:(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
}
2차 수정
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;
}
}
}
// Result of Decompile
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.println:(Ljava/lang/String;)V
12: return
}