Appearance
Java® 虚拟机规范
Java SE 17 版
作者:Tim Lindholm、Frank Yellin、Gilad Bracha、Alex Buckley、Daniel Smith
日期:2021-08-09
目录
- 4.1.
ClassFile结构 - 4.2. 名称
- 4.3. 描述符
- 4.4. 常量池
- 4.4.1.
CONSTANT_Class_info结构 - 4.4.2.
CONSTANT_Fieldref_info、CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info结构 - 4.4.3.
CONSTANT_String_info结构 - 4.4.4.
CONSTANT_Integer_info和CONSTANT_Float_info结构 - 4.4.5.
CONSTANT_Long_info和CONSTANT_Double_info结构 - 4.4.6.
CONSTANT_NameAndType_info结构 - 4.4.7.
CONSTANT_Utf8_info结构 - 4.4.8.
CONSTANT_MethodHandle_info结构 - 4.4.9.
CONSTANT_MethodType_info结构 - 4.4.10.
CONSTANT_Dynamic_info和CONSTANT_InvokeDynamic_info结构 - 4.4.11.
CONSTANT_Module_info结构 - 4.4.12.
CONSTANT_Package_info结构
- 4.4.1.
- 4.5. 字段
- 4.6. 方法
- 4.7. 属性
- 4.7.1. 定义和命名新属性
- 4.7.2.
ConstantValue属性 - 4.7.3.
Code属性 - 4.7.4.
StackMapTable属性 - 4.7.5.
Exceptions属性 - 4.7.6.
InnerClasses属性 - 4.7.7.
EnclosingMethod属性 - 4.7.8.
Synthetic属性 - 4.7.9.
Signature属性 - 4.7.10.
SourceFile属性 - 4.7.11.
SourceDebugExtension属性 - 4.7.12.
LineNumberTable属性 - 4.7.13.
LocalVariableTable属性 - 4.7.14.
LocalVariableTypeTable属性 - 4.7.15.
Deprecated属性 - 4.7.16.
RuntimeVisibleAnnotations属性 - 4.7.17.
RuntimeInvisibleAnnotations属性 - 4.7.18.
RuntimeVisibleParameterAnnotations属性 - 4.7.19.
RuntimeInvisibleParameterAnnotations属性 - 4.7.20.
RuntimeVisibleTypeAnnotations属性 - 4.7.21.
RuntimeInvisibleTypeAnnotations属性 - 4.7.22.
AnnotationDefault属性 - 4.7.23.
BootstrapMethods属性 - 4.7.24.
MethodParameters属性 - 4.7.25.
Module属性 - 4.7.26.
ModulePackages属性 - 4.7.27.
ModuleMainClass属性 - 4.7.28.
NestHost属性 - 4.7.29.
NestMembers属性 - 4.7.30.
Record属性 - 4.7.31.
PermittedSubclasses属性
- 4.8. 格式检查
- 4.9. Java虚拟机代码的约束
- 4.10.
class文件的验证- 4.10.1. 类型检查验证
- 4.10.1.1. Java虚拟机产物的访问器
- 4.10.1.2. 验证类型系统
- 4.10.1.3. 指令表示
- 4.10.1.4. 栈映射帧与类型转换
- 4.10.1.5. 抽象方法和本地方法的类型检查
- 4.10.1.6. 带代码的方法的类型检查
- 4.10.1.7. 加载和存储指令的类型检查
- 4.10.1.8.
protected成员的类型检查 - 4.10.1.9. 指令的类型检查
aaloadaastoreaconst_nullaload,aload_anewarrayareturnarraylengthastore,astore_athrowbaloadbastorebipushcaloadcastorecheckcastd2f,d2i,d2ldadddaloaddastoredcmpdconst_ddivdload,dload_dmuldnegdremdreturndstore,dstore_dsubdupdup_x1dup_x2dup2dup2_x1dup2_x2f2d,f2i,f2lfaddfaloadfastorefcmpfconst_fdivfload,fload_fmulfnegfremfreturnfstore,fstore_fsubgetfieldgetstaticgoto,goto_wi2b,i2c,i2d,i2f,i2l,i2siaddialoadiandiastoreiconst_idivif_acmpif_icmpififnonnull,ifnulliinciload,iload_imulineginstanceofinvokedynamicinvokeinterfaceinvokespecialinvokestaticinvokevirtualior,iremireturnishl,ishr,iushristore,istore_isub,ixorl2d,l2f,l2iladdlaloadlandlastorelcmplconst_ldc,ldc_w,ldc2_wldivlload,lload_lmullneglookupswitchlor,lremlreturnlshl,lshr,lushrlstore,lstore_lsub,lxormonitorenter,monitorexitmultianewarraynewnewarraynoppop,pop2putfieldputstaticreturnsaloadsastoresipushswaptableswitchwide
- 4.10.2. 类型推断验证
- 4.10.1. 类型检查验证
- 4.11. Java虚拟机的限制
- 4.1.
- 6.1. 假定:“必须”的含义
- 6.2. 保留操作码
- 6.3. 虚拟机错误
- 6.4. 指令描述的格式
- 6.5. 指令
aaloadaastoreaconst_nullaloadaload_anewarrayareturnarraylengthastoreastore_athrowbaloadbastorebipushcaloadcastorecheckcastd2fd2id2ldadddaloaddastoredcmpdconst_ddivdloaddload_dmuldnegdremdreturndstoredstore_dsubdupdup_x1dup_x2dup2dup2_x1dup2_x2f2df2if2lfaddfaloadfastorefcmpfconst_fdivfloadfload_fmulfnegfremfreturnfstorefstore_fsubgetfieldgetstaticgotogoto_wi2bi2ci2di2fi2li2siaddialoadiandiastoreiconst_idivif_acmpif_icmpififnonnullifnulliinciloadiload_imulineginstanceofinvokedynamicinvokeinterfaceinvokespecialinvokestaticinvokevirtualioriremireturnishlishristoreistore_isubiushrixorjsrjsr_wl2dl2fl2iladdlaloadlandlastorelcmplconst_ldcldc_wldc2_wldivlloadlload_lmullneglookupswitchlorlremlreturnlshllshrlstorelstore_lsublushrlxormonitorentermonitorexitmultianewarraynewnewarraynoppoppop2putfieldputstaticretreturnsaloadsastoresipushswaptableswitchwide