Table of Contents
- Preface to the Java SE 8 Edition
- 1. Introduction
- 2. The Structure of the Java Virtual Machine
-
- 2.1. The
classFile Format - 2.2. Data Types
- 2.3. Primitive Types and Values
- 2.4. Reference Types and Values
- 2.5. Run-Time Data Areas
- 2.6. Frames
- 2.7. Representation of Objects
- 2.8. Floating-Point Arithmetic
- 2.9. Special Methods
- 2.10. Exceptions
- 2.11. Instruction Set Summary
-
- 2.11.1. Types and the Java Virtual Machine
- 2.11.2. Load and Store Instructions
- 2.11.3. Arithmetic Instructions
- 2.11.4. Type Conversion Instructions
- 2.11.5. Object Creation and Manipulation
- 2.11.6. Operand Stack Management Instructions
- 2.11.7. Control Transfer Instructions
- 2.11.8. Method Invocation and Return Instructions
- 2.11.9. Throwing Exceptions
- 2.11.10. Synchronization
- 2.12. Class Libraries
- 2.13. Public Design, Private Implementation
- 2.1. The
- 3. Compiling for the Java Virtual Machine
-
- 3.1. Format of Examples
- 3.2. Use of Constants, Local Variables, and Control Constructs
- 3.3. Arithmetic
- 3.4. Accessing the Run-Time Constant Pool
- 3.5. More Control Examples
- 3.6. Receiving Arguments
- 3.7. Invoking Methods
- 3.8. Working with Class Instances
- 3.9. Arrays
- 3.10. Compiling Switches
- 3.11. Operations on the Operand Stack
- 3.12. Throwing and Handling Exceptions
- 3.13. Compiling
finally - 3.14. Synchronization
- 3.15. Annotations
- 4. The
classFile Format -
- 4.1. The
ClassFileStructure - 4.2. The Internal Form of Names
- 4.3. Descriptors
- 4.4. The Constant Pool
-
- 4.4.1. The
CONSTANT_Class_infoStructure - 4.4.2. The
CONSTANT_Fieldref_info,CONSTANT_Methodref_info, andCONSTANT_InterfaceMethodref_infoStructures - 4.4.3. The
CONSTANT_String_infoStructure - 4.4.4. The
CONSTANT_Integer_infoandCONSTANT_Float_infoStructures - 4.4.5. The
CONSTANT_Long_infoandCONSTANT_Double_infoStructures - 4.4.6. The
CONSTANT_NameAndType_infoStructure - 4.4.7. The
CONSTANT_Utf8_infoStructure - 4.4.8. The
CONSTANT_MethodHandle_infoStructure - 4.4.9. The
CONSTANT_MethodType_infoStructure - 4.4.10. The
CONSTANT_InvokeDynamic_infoStructure
- 4.4.1. The
- 4.5. Fields
- 4.6. Methods
- 4.7. Attributes
-
- 4.7.1. Defining and Naming New Attributes
- 4.7.2. The
ConstantValueAttribute - 4.7.3. The
CodeAttribute - 4.7.4. The
StackMapTableAttribute - 4.7.5. The
ExceptionsAttribute - 4.7.6. The
InnerClassesAttribute - 4.7.7. The
EnclosingMethodAttribute - 4.7.8. The
SyntheticAttribute - 4.7.9. The
SignatureAttribute - 4.7.10. The
SourceFileAttribute - 4.7.11. The
SourceDebugExtensionAttribute - 4.7.12. The
LineNumberTableAttribute - 4.7.13. The
LocalVariableTableAttribute - 4.7.14. The
LocalVariableTypeTableAttribute - 4.7.15. The
DeprecatedAttribute - 4.7.16. The
RuntimeVisibleAnnotationsAttribute - 4.7.17. The
RuntimeInvisibleAnnotationsAttribute - 4.7.18. The
RuntimeVisibleParameterAnnotationsAttribute - 4.7.19. The
RuntimeInvisibleParameterAnnotationsAttribute - 4.7.20. The
RuntimeVisibleTypeAnnotationsAttribute - 4.7.21. The
RuntimeInvisibleTypeAnnotationsAttribute - 4.7.22. The
AnnotationDefaultAttribute - 4.7.23. The
BootstrapMethodsAttribute - 4.7.24. The
MethodParametersAttribute
- 4.8. Format Checking
- 4.9. Constraints on Java Virtual Machine Code
- 4.10. Verification of
classFiles -
- 4.10.1. Verification by Type Checking
-
- 4.10.1.1. Accessors for Java Virtual Machine Artifacts
- 4.10.1.2. Verification Type System
- 4.10.1.3. Instruction Representation
- 4.10.1.4. Stack Map Frame Representation
- 4.10.1.5. Type Checking Abstract and Native Methods
- 4.10.1.6. Type Checking Methods with Code
- 4.10.1.7. Type Checking Load and Store Instructions
- 4.10.1.8. Type Checking for
protectedMembers - 4.10.1.9. Type Checking Instructions
-
- aaload
- aastore
- aconst_null
- aload, aload_<n>
- anewarray
- areturn
- arraylength
- astore, astore_<n>
- athrow
- baload
- bastore
- bipush
- caload
- castore
- checkcast
- d2f, d2i, d2l
- dadd
- daload
- dastore
- dcmp<op>
- dconst_<d>
- ddiv
- dload, dload_<n>
- dmul
- dneg
- drem
- dreturn
- dstore, dstore_<n>
- dsub
- dup
- dup_x1
- dup_x2
- dup2
- dup2_x1
- dup2_x2
- f2d, f2i, f2l
- fadd
- faload
- fastore
- fcmp<op>
- fconst_<f>
- fdiv
- fload, fload_<n>
- fmul
- fneg
- frem
- freturn
- fstore, fstore_<n>
- fsub
- getfield
- getstatic
- goto, goto_w
- i2b, i2c, i2d, i2f, i2l, i2s
- iadd
- iaload
- iand
- iastore
- if_acmp<cond>
- if_icmp<cond>
- if<cond>
- ifnonnull
- ifnull
- iinc
- iload, iload_<n>
- imul
- ineg
- instanceof
- invokedynamic
- invokeinterface
- invokespecial
- invokestatic
- invokevirtual
- ior
- irem
- ireturn
- ishl, ishr, iushr
- istore, istore_<n>
- isub
- ixor
- l2d, l2f, l2i
- ladd
- laload
- land
- lastore
- lcmp
- lconst_<l>
- ldc, ldc_w, ldc2_w
- ldiv
- lload, lload_<n>
- lmul
- lneg
- lookupswitch
- lor
- lrem
- lreturn
- lshl, lshr, lushr
- lstore, lstore_<n>
- lsub
- lxor
- monitorenter
- monitorexit
- multianewarray
- new
- newarray
- nop
- pop, pop2
- putfield
- putstatic
- return
- saload
- sastore
- sipush
- swap
- tableswitch
- wide
- 4.10.2. Verification by Type Inference
- 4.11. Limitations of the Java Virtual Machine
- 4.1. The
- 5. Loading, Linking, and Initializing
- 6. The Java Virtual Machine Instruction Set
-
- 6.1. Assumptions: The Meaning of "Must"
- 6.2. Reserved Opcodes
- 6.3. Virtual Machine Errors
- 6.4. Format of Instruction Descriptions
- 6.5. Instructions
-
- aaload
- aastore
- aconst_null
- aload
- aload_<n>
- anewarray
- areturn
- arraylength
- astore
- astore_<n>
- athrow
- baload
- bastore
- bipush
- caload
- castore
- checkcast
- d2f
- d2i
- d2l
- dadd
- daload
- dastore
- dcmp<op>
- dconst_<d>
- ddiv
- dload
- dload_<n>
- dmul
- dneg
- drem
- dreturn
- dstore
- dstore_<n>
- dsub
- dup
- dup_x1
- dup_x2
- dup2
- dup2_x1
- dup2_x2
- f2d
- f2i
- f2l
- fadd
- faload
- fastore
- fcmp<op>
- fconst_<f>
- fdiv
- fload
- fload_<n>
- fmul
- fneg
- frem
- freturn
- fstore
- fstore_<n>
- fsub
- getfield
- getstatic
- goto
- goto_w
- i2b
- i2c
- i2d
- i2f
- i2l
- i2s
- iadd
- iaload
- iand
- iastore
- iconst_<i>
- idiv
- if_acmp<cond>
- if_icmp<cond>
- if<cond>
- ifnonnull
- ifnull
- iinc
- iload
- iload_<n>
- imul
- ineg
- instanceof
- invokedynamic
- invokeinterface
- invokespecial
- invokestatic
- invokevirtual
- ior
- irem
- ireturn
- ishl
- ishr
- istore
- istore_<n>
- isub
- iushr
- ixor
- jsr
- jsr_w
- l2d
- l2f
- l2i
- ladd
- laload
- land
- lastore
- lcmp
- lconst_<l>
- ldc
- ldc_w
- ldc2_w
- ldiv
- lload
- lload_<n>
- lmul
- lneg
- lookupswitch
- lor
- lrem
- lreturn
- lshl
- lshr
- lstore
- lstore_<n>
- lsub
- lushr
- lxor
- monitorenter
- monitorexit
- multianewarray
- new
- newarray
- nop
- pop
- pop2
- putfield
- putstatic
- ret
- return
- saload
- sastore
- sipush
- swap
- tableswitch
- wide
- 7. Opcode Mnemonics by Opcode
- Index
- A. Limited License Grant
© Oracle and/or its affiliates. All rights reserved.
Licensed under the Oracle Technology Network License Agreement.