2012-09-06 1 views
0

Hy, 저는 자바 바이트 코드의 구조를 파악하려고합니다. 그리고 모든 http://en.wikipedia.org/wiki/Java_class_file에 있지만 그 이후 기술 된 바와 같이 유동하는 방법 테이블까지 (난 디 컴파일 방법 지침 진수 코드를 전달하여 발견 느릅 나무)에있어서의 본체 사이에 큰 간극이어떤 정보가 메서드 테이블과 메서드 바이트 사이의 간격을 Java 바이트 코드로 포함합니다

.....00 0300 0400 0000 00[00 02] - method count 
[00 0100 0500 0600 0100 0700 0000 2f00 0100 0100 0000 05] - unexplainable gap 
[2a b700 01b1] - method body 
method body is 
Code: 
    Stack=1, Locals=1, Args_size=1 
    0: aload_0 
    1: invokespecial #1; //Method java/lang/Object."<init>":()V 
    4: return 

가 똑같은 befode의 초 간다 메서드 (동일한 바이트 문자열이 아니라 바이트 시퀀스와의 갭) 메소드 테이블 다음에도 속성 수와 속성 테이블이 있습니다. 위키에서는이 블록에 대한 구조 정의가 없습니다.

...[00 0000 02] - attribute count 
00 0800 0000 0e00 0300 0000 0500 0400 0600 0700 0700 0900 0000 2000 0300 0000 0b00 0a00 0b00 0000 0400 0700 0e00 0f00 0100 0700 0400 1000 0f00 0200 0100 1100 0000 0200 12 

자세한 내용을 알아낼 수있는 자료를 제공해 주시겠습니까?

소스 코드는 documentation에서

package ru.javamining.decompile; 

public class ClassA { 
    public int localStackTest(){ 
     int intVar=1500; 
     int intVar1 = 198765; 
     return intVar + intVar1; 
    } 
} 

답변

1

봐 간단하다. method_info에는 단순한 코드 이상의 기능이 있습니다.

+0

예. 감사합니다. 내가 찾고 있던이 정보! – Pilgrim