00:00
好,那关于这个文件的剖析啊,咱们就说到这儿,然后下边呢,咱们对于扎P的这个使用啊,做一个简单的一个小结。那我们说呢,通过javap这个指令啊,咱们可以查看一个Java类反汇编得到的这个相关的一些信息,咱们称为呢叫反汇编也好,咱们称为呢叫解析呢也可以,那解析以后得到信息呢,咱们不就是存储在这个文件当中了,对吧?这里边儿我们刚才已经剖析过了,那这个文件当中包含哪些信息呢?这里边提到了有class文件的版本号,就是manner version和major version啊,包括常量池,这也是我们说资金化文件当中最重要的一部分,包括当前类的访问标识,然后我们当前这个类当中字段的这个。表集合包括呢,这个局部变量表,在方法的这个扣得属性里边,对吧,包括呢,指定代码的行号表,或者说我们相关的这个自检码,指定的一个偏移量等等这些信息呢,我们都能够看得到。也是咱们说非常重要的这个结构,那没有在我们生成的使用jap生成这个文件当中看到的结构有哪些呢?这里边提到了当前当前类的索引,负类的索引或者接口索引集合,这呢,我们没有直接呢看到对吧?呃,然后后边呢,又提到了叫CL和这样两个方法,这两个方法呢,你看我用了一个特殊的颜色来标识。
01:19
嗯,能理解是什么意思吗?就是说我们使用这个idea对吧,咱们看这个j lab的时候呢,是能够找到CL in,包括这两个in这两个结构的,但是咱们在这个生成JP生成这个文件里边咱们没找到。啊,那问大家一个问题,就是我们如果大家去真实的看这个资金码文件的话,就是我这块通过这个no派加加对吧,我把它点开。通过这个结构大家去看的话呢,你能看到C或者叫吗。诶注意实际上是可以的,对吧,你看这块呢,是不是也提示我们这就是in,然后包括CL in也有啊,这个我就不具体往这块去找了,就是我们如果去看这个最起码文件的话呢,就是你不要过多的去给他做一个反编译,实际上呢,跟咱们在这块看的接lab这块是一样的,都是有这样的结构的,但是呢,我们在这个P里边没有找到这三个结构,对吧?那能看到的什么结构呢?是这个C呢,它其实是帮我们做了一个反编译,又还原成了一个静态代码块了。
02:23
而我们两个构造器方法对应的呢,就是叫应力的方法,在这儿呢,它又帮我们是不是还原成两个具体的这个构造器了呀。对吧?诶,所以这块呢,应该说,呃,虽然咱们不能直接看到这两个结构了,但是呢,其实是帮我们做了一个反编译,还原成了你Java原程序当中对应的静态代码块,以及呢,我们说的构造器了,哎,这个大家稍微注意一下啊,呃,你要说的话,应该是javap的更智能了是吧。好,那咱们针对于具体的一个方法内部。哎,具体一个方法内部的这些这个执行指令啊,咱们还没有具体细节进行剖析,那简单的我们在一开始讲这一章的时候呢,也稍微呢,带大家呢,也分析过几个啊,那整体上来讲呢,我们在这个字节码指令当中,诶,会涉及到什么结构呢?如下的这样的几个结构,一个呢是占。
03:14
啊,Java的站就是我们也称为呢叫虚拟站对吧,那这个站里边呢,我们重点用的两部分结构呢,一个叫局部变化表,一个呢叫操作数站,我们在扣的属性里边也看到了这个操数占的最大深度,局变量表的长度等等这样的信息,这是我们非常重要的两个结构。啊,以及在这个堆里边啊,堆的这个相关的信息,我们通过对象的地址呢,去做一些引用操作,包括常量池,我们去引用常量池相关的一些常量信息等等,对吧?这呢是我们比较关注的三部分结构,那除此之外呢,还涉及到了比如说叫真数据区,还记得真数据区是什么吗?真数据区主要针对的是不是我们说的这个站结构对吧?那个站里边的话,我们说有局部变量表,有这个操作站,剩下这些结构呢,我们都可以称为呢叫真数据区,关于这个真数据区包括方法区,我们说呃,提到了要运用时常量池,那剩下的关于这个类啊字段啊,这样相关一些结构的描述,我们在这个诶反回编以后的这个指令当中,咱们就看不到相关的情况了啊,没有显示出来啊,这个大家了解一下行,那么整个呢,关于我们自检码指令这个层面呢,咱们解析呢,就到此为止,那清晰呢,应该算是比较清晰了啊,咱们通过三个不同的这个工具。
04:27
啊,一个呢,是我们自己呢去做这个解析,一点点来看,另外呢,扎P咱们也讲了,关于这个idea这个插件呢,我们也提到过了,那以后咱们要再用,大家就使用这个二或三就可以了,包括下一章咱们讲这个四节码令的时候呢,咱们就使用二或者是三来进行一个剖析啊就OK了,那关于具体的四节码指令呢,这块也放了一个网址。啊,这个网址呢,就是提到具体的一个指令的一个,呃,这个描述信息,官方呢,给我们发布的这样的一个这个说明啊这呢也是咱们下一章咱们要展开来说明的,这样的一些指令非常多,好咱们下一章见。
我来说两句