其实正常来说,应该是每个字节码指令都有一个栈状态的,但是为了节省空间,在实际生成的字节码中,只有在进行了跳转时(比如GOTO IFLT等指令时)才保存了栈的状态,其他帧的状态都可以通过它们算出来,而且一个方法的初始帧状态是不保存的,因为初始的状态可以通过方法中的签名算出来.而且为了进一步减少空间,又对栈映射帧进行一些类型的划分,因为有可能两个栈映射帧的状态是一样,或者说有一些类似,接下来我就介绍一下,具体有哪些类型.打开org.objectweb.asm.Opcodes类的源码,我们可以看到如下定义:
代码
/**
* Represents a compressed frame with complete frame data.
*/
int F_FULL = 0;
/**
* Represents a compressed frame where locals are the same as the locals in
* the previous frame, except that additional 1-3 locals are defined, and
* with an empty stack.
*/
int F_APPEND = 1;
/**
* Represents a compressed frame where locals are the same as the locals in
* the previous frame, except that the last 1-3 locals are absent and with
* an empty stack.
*/
int F_CHOP = 2;
/**
* Represents a compressed frame with exactly the same locals as the
* previous frame and with an empty stack.
*/
int F_SAME = 3;
/**
* Represents a compressed frame with exactly the same locals as the
* previous frame and with a single value on the stack.
*/
int F_SAME1 = 4;
它已经对每个状态做出解释了,我这里就不说了,要理解这里的话不难,只要你对java字节码指令执行以及栈结构了解就行
分享到:
相关推荐
### Hibernate 学习笔记知识点详解 #### 一、Hibernate 简介 - **概念**:Hibernate 是一种“对象/关系映射”(Object/Relational Mapping,简称 ORM)技术,用于解决 Java 应用程序与关系型数据库交互的问题。 - *...
### Hibernate学习笔记知识点详解 #### Hibernate简介 - **定义**:Hibernate是一个开源的对象关系映射(Object/Relational Mapping, ORM)框架,用于简化Java应用程序与关系型数据库之间的交互过程。通过提供轻量...
### Hibernate学习笔记知识点详解 #### Hibernate简介 - **定义与作用**:Hibernate是一种“对象/关系映射”(Object/Relational Mapping, ORM)技术,主要用于解决Java对象模型与关系数据库模型之间的不匹配问题。 -...
c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...
标题 "AVR.zip_avr asm" 暗示了这个压缩包内容主要涉及AVR微控制器,特别是使用AVR汇编语言(avr_asm)进行编程的相关资料。ATmega8535是AVR系列中的一款常见微控制器,M8535可能是其型号的别称。描述提到的是在...
学习笔记中涵盖了查询语言HQL、 Criteria API、CGLIB与ASM动态代理、二级缓存的使用等内容。 三、Hibernate API 理解Hibernate API是学习的关键。主要涉及以下核心组件: - Configuration:用于读取配置信息,创建...
本资料集是黑马程序员2016年推出的Hibernate专题课程的讲义和笔记,涵盖了4天的全面学习内容。以下将详细解析其中涉及的关键知识点。 1. Hibernate概述:首先,你需要了解Hibernate的基本概念,它是一种什么样的...
【Hibernate入门详解】 Hibernate是一个强大的Java ...学习Hibernate,需要理解其基本概念、环境配置、实体类和映射文件的创建,以及如何进行数据库操作。掌握这些知识,可以有效地提升Java开发中处理数据库的能力。
Hibernate 运行需要一系列的 jar 包,包括:antlr.jar、cglib.jar、asm.jar、commons-collections.jar、commons-logging.jar、jta.jar 和 dom4j.jar。这些库分别用于解析 HQL 语句、动态生成类、集合操作、日志记录...
3. 字节码处理:如使用ASM、ByteBuddy等库,可以在字节码层面处理注解,实现更底层的控制。 五、元注解 元注解是用于注解其他注解的注解,Java 5.0提供了以下几种元注解: 1. `@Retention`:定义注解的生命周期,...
学习Hibernate,首先要理解这些基本概念和配置,然后逐步掌握实体类的定义、映射文件的编写、会话和事务管理等核心概念。随着经验的积累,你将能够熟练地利用Hibernate来实现数据的持久化操作,从而大大提高开发效率...
9. **文档阅读**:TI通常会提供详细的用户手册、数据手册和应用笔记,这些资料是学习和解决问题的重要参考资料。 总的来说,这个压缩包为TMS320C2812的初学者提供了一个宝贵的起点,他们可以通过研究这些示例代码来...
在"IO_TEST.asm"这个文件中,我们可以预期找到用89LE516X2汇编语言编写的代码,这些代码很可能包含了一系列I/O操作,如读取或写入特定的端口来驱动显示屏。这些操作可能包括初始化显示控制器、设置颜色、绘制像素、...