我正在尝试弄清楚java字节码的结构。直到方法表为止,所有流程都如 http://en.wikipedia.org/wiki/Java_class_file 中所述。但之后,方法体之间存在巨大差距(这是我通过传递反编译方法指令的十六进制代码发现的)
.....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
在第二个方法之前也发生同样的事情(不是相同的字节字符串,而是与字节序列之间的间隙) 另外,在方法表之后还有属性计数和属性表,我也无法解释它们(在 wiki 中,此 block 上没有结构定义)。
...[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
您能否提供任何资源来了解此详细信息?
源代码很简单
package ru.javamining.decompile;
public class ClassA {
public int localStackTest(){
int intVar=1500;
int intVar1 = 198765;
return intVar + intVar1;
}
}
最佳答案
看看documentation 。 method_info
不仅仅包含代码。
关于java - java字节码中方法表和方法体之间包含哪些信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12293360/