摘要:
在之前已经将如下这样的源文件对应的字节码文件完整的分析完了,如下: 这次再来写一个内容稍丰富一点的类,准备再来从头至尾的来分析一下,对其字节码的理解进一步巩固,如下: 然后用javap -verbose来查看一下反编译信息: 由于这次的类中声明有静态变量,所以标红处多了一个static块,下面将“- 阅读全文
摘要:
自己实现sprintf功能: 关于C中的系统函数sprintf在上次【https://www.cnblogs.com/webor2006/p/7545627.html】学习中已经用到过了,这里再来回顾一下: 而为了巩固学习咱们可以用之前所学的可变参数【https://www.cnblogs.com/ 阅读全文
摘要:
上一次【https://www.cnblogs.com/webor2006/p/9508341.html】已经将编译器生成的默认构造方法的字节相关的分析完了,接下来则分析咱们自定义的方法啦,按照顺序来讲的话应该是再分析getA()了: 还是按照方法的结构来分析,先来回忆一下方法的结构: 前两个字节表 阅读全文
摘要:
继续跟着上一次【https://www.cnblogs.com/webor2006/p/9502507.html】的那10个代表code的字节分析,如下: 而这些字节其实对应的信息是它: 所以问题就来了,aload_0不是助记符信息么,怎么就能够跟字节码文件中的字节对应上呢?所谓助记符其实也就是帮忙 阅读全文
摘要:
继续上一次【https://www.cnblogs.com/webor2006/p/9459681.html】的字节码分析,这次来分析一下最为复杂的方法表的信息,如下: 而上一次分析到了属性表的位置在: 接着来看一下方法表相关的信息: 所以往下找两个字节: 因为有一个编译器为其生成的一个构造方法,这 阅读全文
摘要:
指针: 指针乃C、C++的灵魂之所在,所以有必要好好的复习复习。什么是指针?一句话来概括:“指针是一个变量,它的值是一个地址。”,其中指针变量的声明有如下三种形式: 其中第一种是被推荐的写法。 其中还需要注意:在声明指针时如果未赋值,则是一个野指针【也就是有可能指向了一个不能被使用的地址从而造成程序 阅读全文
摘要:
在这一次中来学习一下C语言的内存布局,了解它之后就可以解释为啥在用malloc()申请的内存之后需要用memset()来对内存进行一下初始化了,首先来了解一下物理内存与虚拟内存: 物理内存:通过物理内存条获得的内存空间。 虚拟内存:它是一种内存管理技术,能够均处一部分硬盘空间充当内存使用。 而在C当 阅读全文
摘要:
方法表: 在上一次咱们已经分析到了字段信息了,如下: 紧接着就是方法相关的信息了: 而它展开之后的结构为: 所以往后数2个字节,看一下方法的总数: 3个方法,可咱们只定义了两个方法呀: 因为编译器会为我们生成一个默认的构造方法,所以就3个了,那每个方法的具体信息是啥呢?它是一个method_info 阅读全文
摘要:
在上一次【https://www.cnblogs.com/webor2006/p/9457722.html】对字节码的整体结构有了一个初步认识,回顾一下: 下面再来看另外一个更加直观的表: 其中需要说明的是: 如果接口个数为0的话,那么下面的接口名则不会出现了,其它的字段、方法、附加属性都类似。 还 阅读全文
摘要:
常量池深度剖析: 在上一次【https://www.cnblogs.com/webor2006/p/9416831.html】中已经将常量池分析到了2/3了,接着把剩下的分析完,先回顾一下我们编译的源文件为: 然后用javap -verbose查看一下编译字节码的信息,其中字符串相关的如下: 而对应 阅读全文