Java字节码方法表与属性表详解

Posted webor2006

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java字节码方法表与属性表详解相关的知识,希望对你有一定的参考价值。

继续跟着上一次【https://www.cnblogs.com/webor2006/p/9502507.html】的那10个代表code的字节分析,如下:

技术分享图片

技术分享图片

而这些字节其实对应的信息是它:

技术分享图片

所以问题就来了,aload_0不是助记符信息么,怎么就能够跟字节码文件中的字节对应上呢?所谓助记符其实也就是帮忙我们去记忆的符合,在底层其实也是对应的一个个十六进制的数字的,其它aload_0对应的就是2A这个十六进制数字,凭什么这么说?因为有jclasslib这么好的工具能帮我们对应上,将鼠标放在助记符上发现是一个可以点的链接,如下:

技术分享图片

点一下“aload_0”发现居然链到了oracle的官网上的说明上去了,如下:

技术分享图片

技术分享图片

技术分享图片

所以第一个字节已经分析完了,确实是跟助记符对应上了,接着来分析第二个字节:

技术分享图片

而在jsclasslib中对应的第二个助记符是“invokespecial”,点击链到官网看一下:

技术分享图片

而它的作用可以理解成就是调用父类的方法,而这个助记符是有参数的:

技术分享图片

其实也就是往后的两个字节就是该助记符所对应的参数,如下:

技术分享图片

对应常量池为:

技术分享图片

也就是构造方法嘛,如jsclasslib所示:

技术分享图片

10

以上是关于Java字节码方法表与属性表详解的主要内容,如果未能解决你的问题,请参考以下文章

jvm原理(27)Java字节码方法表与属性表深度剖析

Java 虚拟机原理Class 字节码二进制文件分析 六 ( 属性类型 | Code 属性 | 属性名称索引 | 属性长度 | 操作数栈最大深度 | 局部变量存储空间 | 字节码长度 )

Java 虚拟机原理Class 字节码二进制文件分析 五 ( 方法计数器 | 方法表 | 访问标志 | 方法名称索引 | 方法返回值类型 | 方法属性数量 | 方法属性表 )

Java 反射机制详解(下)

jvm原理(26)字节码访问标志与字段表详解

Java字节码文件