2020年4月11日

java虚拟机规范(se8)——class文件格式(五)

摘要: 4.7.1 定义和命名新属性 允许编译器定义和发布的class文件在class文件结构体、field_info结构体、method_info结构体和Code结构体中的attributes表中包含新的属性。允许java虚拟机识别和使用attributes表中的新属性。但是,任何没有在class文件规范 阅读全文

posted @ 2020-04-11 17:20 lfw123 阅读(167) 评论(0) 推荐(0) 编辑

java虚拟机规范(se8)——class文件格式(四)

摘要: 4.7 属性 属性用于class文件格式中的ClassFile,field_info,method_info和Code_attribute结构。 所有的属性都是下面的格式: attribute_info { u2 attribute_name_index; u4 attribute_length; 阅读全文

posted @ 2020-04-11 17:07 lfw123 阅读(146) 评论(0) 推荐(0) 编辑

java虚拟机规范(se8)——class文件格式(三)

摘要: 4.5 字段 字段使用field_info结构来描述。 在同一个class文件中的两个字段不能有相同的名称和描述符。 结构的格式如下: field_info { u2 access_flags; u2 name_index; u2 descriptor_index; u2 attributes_co 阅读全文

posted @ 2020-04-11 17:01 lfw123 阅读(137) 评论(0) 推荐(0) 编辑

java虚拟机规范(se8)——class文件格式(二)

摘要: 4.4 常量池 java虚拟机指令并不依赖类、接口、类实例或者数组的运行时布局。相反,指令依靠常量池中的符号信息。 所有的常量池条目都有如下的通用结构: cp_info { u1 tag; u1 info[]; } 常量池表中的每一个项目是以1比特的标识位开始,指示是哪种cp_info条目。info 阅读全文

posted @ 2020-04-11 16:35 lfw123 阅读(200) 评论(0) 推荐(0) 编辑

2020年3月29日

java虚拟机规范(se8)——class文件格式(一)

摘要: 第四章 class文件格式 本章介绍了java虚拟机的class文件格式。每一个class文件包含一个单独的类或者接口的定义。虽然类和接口不一定都定义在文件中(比如类和接口亦可以通过类加载器直接生成),我们将通俗地将类或接口的任何有效表示称为class文件格式。class文件是由8位的字节流组成。所 阅读全文

posted @ 2020-03-29 15:31 lfw123 阅读(372) 评论(0) 推荐(0) 编辑

java虚拟机规范(se8)——java虚拟机的编译(四)

摘要: 3.12 抛出和处理异常 在程序中使用throw关键字来抛出异常。编译结果很简单。 void cantBeZero(int i) throws TestExc { if (i == 0) { throw new TestExc(); } } 编译为: Method void cantBeZero(i 阅读全文

posted @ 2020-03-29 14:13 lfw123 阅读(176) 评论(0) 推荐(0) 编辑

java虚拟机规范(se8)——java虚拟机的编译(三)

摘要: 3.6 接受参数 如果n个参数传给一个实例的方法,按照约定,它们被接受并放在这个新方法创建的栈帧中的局部变量表里,在局部变量表中的序号从1到n。这些参数按照它们传递过来的顺序存放。例如: int addTwo(int i, int j) { return i + j; } 编译为: Method i 阅读全文

posted @ 2020-03-29 13:43 lfw123 阅读(258) 评论(0) 推荐(0) 编辑

2020年3月27日

java虚拟机规范(se8)——java虚拟机的编译(二)

摘要: 3.3 算术运算 java虚拟机通常在操作数栈上进行算术运算(例外情况是iinc指令,它直接增加一个局部变量的值)。例如下面的align2grain()方法,它的作用是将int值对齐到2的指定次幂: int align2grain(int i, int grain) { return ((i + g 阅读全文

posted @ 2020-03-27 17:49 lfw123 阅读(226) 评论(0) 推荐(0) 编辑

java虚拟机规范(se8)——java虚拟机的编译(一)

摘要: 第三章 java虚拟机的编译 java虚拟机是设计用来支持java编程语言的。Oracle的JDK软件包含了一个将Java源代码编译成java虚拟机指令集的编译器,以及一个用于java虚拟机本身的运行时系统。了解编译器如何使用java虚拟机对编译器作者来说是有用的,同样也有助于理解java虚拟机本身 阅读全文

posted @ 2020-03-27 17:10 lfw123 阅读(471) 评论(0) 推荐(0) 编辑

java虚拟机规范(se8)——java虚拟机结构(六)

摘要: 2.11 指令集简介 java虚拟机指令由一个字节的操作码,后面跟着多个0个或多个操作数组成,操作码描述了执行的操作,操作数提供了操作所需的参数或者数据。许多指令没有操作数只包含一个操作码。 如果忽略异常处理,那java虚拟机使用下面的伪代码循环即可有效工作: 1 do{ 2 自动计算pc然后获取p 阅读全文

posted @ 2020-03-27 16:06 lfw123 阅读(202) 评论(0) 推荐(0) 编辑

导航