====== Java Card Virtual Machine Specification ====== [[javacard:jcvm:Preface]] [[javacard:jcvm:1. Introduction]] [[javacard:jcvm:1.1 Motivation]] [[javacard:jcvm:1.2 The Java Card Virtual Machine]] [[javacard:jcvm:1.3 Java Language Security]] [[javacard:jcvm:1.4 Java Card Runtime Environment Security]] [[javacard:jcvm:2. A Subset of the Java Virtual Machine]] [[javacard:jcvm:2.1 Why a Subset is Needed]] [[javacard:jcvm:2.2 Java Card Platform Language Subset]] [[javacard:jcvm:2.2.1 Unsupported Items]] [[javacard:jcvm:2.2.1.1 Unsupported Features]] [[javacard:jcvm:2.2.1.2 Keywords]] [[javacard:jcvm:2.2.1.3 Unsupported Types]] [[javacard:jcvm:2.2.1.4 Classes]] [[javacard:jcvm:2.2.2 Supported Items]] [[javacard:jcvm:2.2.2.1 Features]] [[javacard:jcvm:2.2.2.2 Keywords]] [[javacard:jcvm:2.2.2.3 Types]] [[javacard:jcvm:2.2.2.4 Classes]] [[javacard:jcvm:2.2.3 Optionally Supported Items]] [[javacard:jcvm:2.2.3.1 Integer Data Type]] [[javacard:jcvm:2.2.3.2 Object Deletion Mechanism]] [[javacard:jcvm:2.2.4 Limitations of the Java Card Virtual Machine]] [[javacard:jcvm:2.2.4.1 Packages]] [[javacard:jcvm:2.2.4.2 Classes]] [[javacard:jcvm:2.2.4.3 Objects]] [[javacard:jcvm:2.2.4.4 Methods]] [[javacard:jcvm:2.2.4.5 Switch Statements]] [[javacard:jcvm:2.2.4.6 Class Initialization]] [[javacard:jcvm:2.2.5 Multiselectable Applets Restrictions]] [[javacard:jcvm:2.2.6 Java Card Platform Remote Method Invocation (RMI) Restrictions]] [[javacard:jcvm:2.2.6.1 Remote Classes and Remote Interfaces]] [[javacard:jcvm:2.2.6.2 Access Control of Remote Interfaces]] [[javacard:jcvm:2.2.6.3 Parameters and Return Values]] [[javacard:jcvm:2.3 Java Card VM Subset]] [[javacard:jcvm:2.3.1 class File Subset]] [[javacard:jcvm:2.3.1.1 Not Supported in Class Files]] [[javacard:jcvm:2.3.1.2 Supported in Class Files]] [[javacard:jcvm:2.3.2 Bytecode Subset]] [[javacard:jcvm:2.3.2.1 Unsupported Bytecodes]] [[javacard:jcvm:2.3.2.2 Supported Bytecodes]] [[javacard:jcvm:2.3.2.3 Static Restrictions on Bytecodes]] [[javacard:jcvm:2.3.3 Exceptions]] [[javacard:jcvm:2.3.3.1 Uncaught and Uncatchable Exceptions]] [[javacard:jcvm:2.3.3.2 Checked Exceptions]] [[javacard:jcvm:2.3.3.3 Runtime Exceptions]] [[javacard:jcvm:2.3.3.4 Errors]] [[javacard:jcvm:3. Structure of the Java Card Virtual Machine]] [[javacard:jcvm:3.1 Data Types and Values]] [[javacard:jcvm:3.2 Words]] [[javacard:jcvm:3.3 Runtime Data Areas]] [[javacard:jcvm:3.4 Contexts]] [[javacard:jcvm:3.5 Frames]] [[javacard:jcvm:3.6 Representation of Objects]] [[javacard:jcvm:3.7 Special Initialization Methods]] [[javacard:jcvm:3.8 Exceptions]] [[javacard:jcvm:3.9 Binary File Formats]] [[javacard:jcvm:3.10 Instruction Set Summary]] [[javacard:jcvm:3.10.1 Types and the Java Card Virtual Machine]] [[javacard:jcvm:4. Binary Representation]] [[javacard:jcvm:4.1 Java Card Platform File Formats]] [[javacard:jcvm:4.1.1 Export File Format]] [[javacard:jcvm:4.1.2 CAP File Format]] [[javacard:jcvm:4.1.3 JAR File Container]] [[javacard:jcvm:4.2 AID-based Naming]] [[javacard:jcvm:4.2.1 The AID Format]] [[javacard:jcvm:4.2.2 AID Usage]] [[javacard:jcvm:4.3 Token-based Linking]] [[javacard:jcvm:4.3.1 Externally Visible Items]] [[javacard:jcvm:4.3.2 Private Tokens]] [[javacard:jcvm:4.3.3 The Export File and Conversion]] [[javacard:jcvm:4.3.4 References - External and Internal]] [[javacard:jcvm:4.3.5 Installation and Linking]] [[javacard:jcvm:4.3.6 Token Assignment]] [[javacard:jcvm:4.3.7 Token Details]] [[javacard:jcvm:4.3.7.1 Package]] [[javacard:jcvm:4.3.7.2 Classes and Interfaces]] [[javacard:jcvm:4.3.7.3 Static Fields]] [[javacard:jcvm:4.3.7.4 Static Methods and Constructors]] [[javacard:jcvm:4.3.7.5 Instance Fields]] [[javacard:jcvm:4.3.7.6 Virtual Methods]] [[javacard:jcvm:4.3.7.7 Interface Methods]] [[javacard:jcvm:4.4 Binary Compatibility]] [[javacard:jcvm:4.5 Package Versions]] [[javacard:jcvm:4.5.1 Assigning]] [[javacard:jcvm:4.5.2 Linking]] [[javacard:jcvm:5. The Export File Format]] [[javacard:jcvm:5.1 Export File Name]] [[javacard:jcvm:5.2 Containment in a JAR File]] [[javacard:jcvm:5.3 Ownership]] [[javacard:jcvm:5.4 Hierarchies Represented]] [[javacard:jcvm:5.5 Export File]] [[javacard:jcvm:5.6 Constant Pool]] [[javacard:jcvm:5.6.1 CONSTANT_Package]] [[javacard:jcvm:5.6.2 CONSTANT_Classref]] [[javacard:jcvm:5.6.3 CONSTANT_Integer]] [[javacard:jcvm:5.6.4 CONSTANT_Utf8]] [[javacard:jcvm:5.7 Classes and Interfaces]] [[javacard:jcvm:5.8 Fields]] [[javacard:jcvm:5.9 Methods]] [[javacard:jcvm:5.10 Attributes]] [[javacard:jcvm:5.10.1 ConstantValue Attribute]] [[javacard:jcvm:6. The CAP File Format]] [[javacard:jcvm:6.1 Component Model]] [[javacard:jcvm:6.1.1 Containment in a JAR File]] [[javacard:jcvm:6.1.2 Defining New Components]] [[javacard:jcvm:6.2 Installation]] [[javacard:jcvm:6.3 Header Component]] [[javacard:jcvm:6.4 Directory Component]] [[javacard:jcvm:6.5 Applet Component]] [[javacard:jcvm:6.6 Import Component]] [[javacard:jcvm:6.7 Constant Pool Component]] [[javacard:jcvm:6.7.1 CONSTANT_Classref]] [[javacard:jcvm:6.7.2 CONSTANT_InstanceFieldref, CONSTANT_VirtualMethodref, and CONSTANT_SuperMethodref]] [[javacard:jcvm:6.7.3 CONSTANT_StaticFieldref and CONSTANT_StaticMethodref]] [[javacard:jcvm:6.8 Class Component]] [[javacard:jcvm:6.8.1 type_descriptor]] [[javacard:jcvm:6.8.2 interface_info and class_info]] [[javacard:jcvm:6.8.2.1 interface_info and class_info shared Items]] [[javacard:jcvm:6.8.2.2 interface_info Items]] [[javacard:jcvm:6.8.2.3 class_info Items]] [[javacard:jcvm:6.8.2.4 implemented_interface_info]] [[javacard:jcvm:6.8.2.5 remote_interface_info]] [[javacard:jcvm:6.9 Method Component]] [[javacard:jcvm:6.9.1 exception_handler_info]] [[javacard:jcvm:6.9.2 method_info]] [[javacard:jcvm:6.10 Static Field Component]] [[javacard:jcvm:6.11 Reference Location Component]] [[javacard:jcvm:6.12 Export Component]] [[javacard:jcvm:6.13 Descriptor Component]] [[javacard:jcvm:6.13.1 class_descriptor_info]] [[javacard:jcvm:6.13.2 field_descriptor_info]] [[javacard:jcvm:6.13.3 method_descriptor_info]] [[javacard:jcvm:6.13.4 type_descriptor_info]] [[javacard:jcvm:6.14 Debug Component]] [[javacard:jcvm:6.14.1 The class_debug_info Structure]] [[javacard:jcvm:6.14.1.1 The field_debug_info Structure]] [[javacard:jcvm:6.14.1.2 The method_debug_info Structure]] [[javacard:jcvm:7. Java Card Virtual Machine Instruction Set]] [[javacard:jcvm:7.1 Assumptions The Meaning of "Must"]] [[javacard:jcvm:7.2 Reserved Opcodes]] [[javacard:jcvm:7.3 Virtual Machine Errors]] [[javacard:jcvm:7.4 Security Exceptions]] [[javacard:jcvm:7.5 The Java Card Virtual Machine Instruction Set]] [[javacard:jcvm:7.5.1 aaload]] [[javacard:jcvm:7.5.2 aastore]] [[javacard:jcvm:7.5.3 aconst_null]] [[javacard:jcvm:7.5.4 aload]] [[javacard:jcvm:7.5.5 aload_]] [[javacard:jcvm:7.5.6 anewarray]] [[javacard:jcvm:7.5.7 areturn]] [[javacard:jcvm:7.5.8 arraylength]] [[javacard:jcvm:7.5.9 astore]] [[javacard:jcvm:7.5.10 astore_]] [[javacard:jcvm:7.5.11 athrow]] [[javacard:jcvm:7.5.12 baload]] [[javacard:jcvm:7.5.13 bastore]] [[javacard:jcvm:7.5.14 bipush]] [[javacard:jcvm:7.5.15 bspush]] [[javacard:jcvm:7.5.16 checkcast]] [[javacard:jcvm:7.5.17 dup]] [[javacard:jcvm:7.5.18 dup_x]] [[javacard:jcvm:7.5.19 dup2]] [[javacard:jcvm:7.5.20 getfield_]] [[javacard:jcvm:7.5.21 getfield__this]] [[javacard:jcvm:7.5.22 getfield__w]] [[javacard:jcvm:7.5.23 getstatic_]] [[javacard:jcvm:7.5.24 goto]] [[javacard:jcvm:7.5.25 goto_w]] [[javacard:jcvm:7.5.26 i2b]] [[javacard:jcvm:7.5.27 i2s]] [[javacard:jcvm:7.5.28 iadd]] [[javacard:jcvm:7.5.29 iaload]] [[javacard:jcvm:7.5.30 iand]] [[javacard:jcvm:7.5.31 iastore]] [[javacard:jcvm:7.5.32 icmp]] [[javacard:jcvm:7.5.33 iconst_]] [[javacard:jcvm:7.5.34 idiv]] [[javacard:jcvm:7.5.35 if_acmp]] [[javacard:jcvm:7.5.36 if_acmp_w]] [[javacard:jcvm:7.5.37 if_scmp]] [[javacard:jcvm:7.5.38 if_scmp_w]] [[javacard:jcvm:7.5.39 if]] [[javacard:jcvm:7.5.40 if_w]] [[javacard:jcvm:7.5.41 ifnonnull]] [[javacard:jcvm:7.5.42 ifnonnull_w]] [[javacard:jcvm:7.5.43 ifnull]] [[javacard:jcvm:7.5.44 ifnull_w]] [[javacard:jcvm:7.5.45 iinc]] [[javacard:jcvm:7.5.46 iinc_w]] [[javacard:jcvm:7.5.47 iipush]] [[javacard:jcvm:7.5.48 iload]] [[javacard:jcvm:7.5.49 iload_]] [[javacard:jcvm:7.5.50 ilookupswitch]] [[javacard:jcvm:7.5.51 imul]] [[javacard:jcvm:7.5.52 ineg]] [[javacard:jcvm:7.5.53 instanceof]] [[javacard:jcvm:7.5.54 invokeinterface]] [[javacard:jcvm:7.5.55 invokespecial]] [[javacard:jcvm:7.5.56 invokestatic]] [[javacard:jcvm:7.5.57 invokevirtual]] [[javacard:jcvm:7.5.58 ior]] [[javacard:jcvm:7.5.59 irem]] [[javacard:jcvm:7.5.60 ireturn]] [[javacard:jcvm:7.5.61 ishl]] [[javacard:jcvm:7.5.62 ishr]] [[javacard:jcvm:7.5.63 istore]] [[javacard:jcvm:7.5.64 istore_]] [[javacard:jcvm:7.5.65 isub]] [[javacard:jcvm:7.5.66 itableswitch]] [[javacard:jcvm:7.5.67 iushr]] [[javacard:jcvm:7.5.68 ixor]] [[javacard:jcvm:7.5.69 jsr]] [[javacard:jcvm:7.5.70 new]] [[javacard:jcvm:7.5.71 newarray]] [[javacard:jcvm:7.5.72 nop]] [[javacard:jcvm:7.5.73 pop]] [[javacard:jcvm:7.5.74 pop2]] [[javacard:jcvm:7.5.75 putfield_]] [[javacard:jcvm:7.5.76 putfield__this]] [[javacard:jcvm:7.5.77 putfield__w]] [[javacard:jcvm:7.5.78 putstatic_]] [[javacard:jcvm:7.5.79 ret]] [[javacard:jcvm:7.5.80 return]] [[javacard:jcvm:7.5.81 s2b]] [[javacard:jcvm:7.5.82 s2i]] [[javacard:jcvm:7.5.83 sadd]] [[javacard:jcvm:7.5.84 saload]] [[javacard:jcvm:7.5.85 sand]] [[javacard:jcvm:7.5.86 sastore]] [[javacard:jcvm:7.5.87 sconst_]] [[javacard:jcvm:7.5.88 sdiv]] [[javacard:jcvm:7.5.89 sinc]] [[javacard:jcvm:7.5.90 sinc_w]] [[javacard:jcvm:7.5.91 sipush]] [[javacard:jcvm:7.5.92 sload]] [[javacard:jcvm:7.5.93 sload_]] [[javacard:jcvm:7.5.94 slookupswitch]] [[javacard:jcvm:7.5.95 smul]] [[javacard:jcvm:7.5.96 sneg]] [[javacard:jcvm:7.5.97 sor]] [[javacard:jcvm:7.5.98 srem]] [[javacard:jcvm:7.5.99 sreturn]] [[javacard:jcvm:7.5.100 sshl]] [[javacard:jcvm:7.5.101 sshr]] [[javacard:jcvm:7.5.102 sspush]] [[javacard:jcvm:7.5.103 sstore]] [[javacard:jcvm:7.5.104 sstore_]] [[javacard:jcvm:7.5.105 ssub]] [[javacard:jcvm:7.5.106 stableswitch]] [[javacard:jcvm:7.5.107 sushr]] [[javacard:jcvm:7.5.108 swap_x]] [[javacard:jcvm:7.5.109 sxor]] [[javacard:jcvm:8. Tables of Instructions]] [[javacard:jcvm:Glossary]] [[javacard:jcvm:Index]]