Java虚拟机对象、方法和子程序指令的形式化规范
1 引言
Java虚拟机(JVM)是一个平台无关的抽象计算机器,包含一个指令集并在各种内存区域上运行。JVM通常用作编程语言Java实现中的中间机器。官方的JVM规范(OJVMS)定义了指令的语法,并描述了相关内存区域中指令的语义。本章为对象、方法和子程序的指令提供形式语义,指定了一个指令子集。形式规范基于OJVMS、Java语言规范(OJLS)以及太阳微系统公司的JDK 1.1.4实现,特别是字节码验证器。该规范描述了指令在相关内存区域的运行时行为,作为状态转换,并将指令的大多数结构和链接约束作为静态类型系统。该类型系统包括字节码验证器的核心,并类似于数据流分析。
2 指令子集
本章考虑了以下基本指令:
- 对象和整型的加载和存储指令
- 对象创建指令
- 操作数栈管理指令
- 控制转移指令
- 所有方法调用指令
- 几个返回指令
- 用于实现最终子句的 jsr
和 ret
指令
2.1 对象和整型的加载和存储指令
对象和整型的加载和存储指令是JVM中最基本的指令之一。这些指令用于将对象引用或整型值从内存加载到操作数栈中,或将它们从操作数栈存储到内存中。具体的指令包括:
-
aload
和astore
:用于加载和存储对象引用 -
iload
和istore
:用于加载和存储整型值