2019年11月20日
摘要: 运算和算术指令用于对两个操作数栈上的值进行特定运算,并把结果重新存入操作数栈 4、类型转换指令 5、对象创建和访问指令 6、操作数栈管理指令 7、控制转移指令 8、方法调用和返回指令 9、异常指令处理 java虚拟机异常处理是采用异常表实现的 10、同步指令 java虚拟机可以支持方法一级和方法内部 阅读全文
posted @ 2019-11-20 20:49 清浊 阅读(183) 评论(0) 推荐(0)
摘要: java虚拟机的指令由一个字节构成,由于class文件格式放弃了编译后代码的操作数长度对齐,所以虚拟机处理超过一个字节数据的时候不得不在运行时重建具体数据的结构。java虚拟机的执行模型如下 大部分与数据相关的字节码指令,他们的操作码助记符中都有特殊字符来表明他们是为哪类数据服务的,i表示int,f 阅读全文
posted @ 2019-11-20 20:28 清浊 阅读(233) 评论(0) 推荐(0)
摘要: 9.StackTable属性 它是一个变长的属性,位于code属性的属性表中。这个属性会在虚拟机类加载的字节码验证阶段被新的类型检查验证器使用,目的是代替以前比较消耗性能的基于数据流分析的类型推导器。 10、signature属性 为了弥补这个弥补泛型缺陷而增设的,会记录泛型擦除之前的类型, 11、 阅读全文
posted @ 2019-11-20 17:51 清浊 阅读(196) 评论(0) 推荐(0)
摘要: 1、code属性表 Code属性出现在方法表的属性集合中,它的结构如下 code是用于存储字节码指令的一系列字节码,一个字节码是一个字节,因此最多定义了256条指令,目前java虚拟机已经定义了 200多条指令,code_length 有4个字节理论可以存储2的32次方减一条指令,实际超过65536 阅读全文
posted @ 2019-11-20 17:31 清浊 阅读(818) 评论(0) 推荐(0)
摘要: 类索引和父类索引都是一个u2的数据,接口索引集合十一组u2类型的数据集合,class由这三个数据项确定继承关系。 接第一篇文章里面部分常量池内容,这一块就是类索引和父类索引 在类,父类和接口索引集合后面是字段表,字段表的结构如下 其中name_index,descriptor_index这两个描述的 阅读全文
posted @ 2019-11-20 13:40 清浊 阅读(259) 评论(0) 推荐(0)
摘要: 根据java虚拟机规范决定,class文件只有两种数据类型:无符号数和表。无符号是主要采用u1、u2、u4、u8来表示一个字节、两个字节、四个字节、八个字节。表是由多个无符号数或者其他表作为数据项构成的复合数据类型。class文件标准。 下面以一个class文件的二进制格式来进行讲解 首先第一个CA 阅读全文
posted @ 2019-11-20 09:44 清浊 阅读(229) 评论(0) 推荐(0)