1. Introduction
1.1. Introduction
1.1.1. Design Goals
1.1.2. Scope
1.1.3. Security Considerations
1.1.4. Dependencies
1.2. Overview
1.2.1. Concepts
1.2.2. Semantic Phases
2. Structure
2.1. Conventions
2.1.1. Grammar Notation
2.1.2. Auxiliary Notation
2.1.3. Vectors
2.2. Values
2.2.1. Bytes
2.2.2. Integers
2.2.3. Floating-Point
2.2.4. Vectors
2.2.5. Names
2.3. Types
2.3.1. Number Types
2.3.2. Vector Types
2.3.3. Reference Types
2.3.4. Value Types
2.3.5. Result Types
2.3.6. Function Types
2.3.7. Limits
2.3.8. Memory Types
2.3.9. Table Types
2.3.10. Global Types
2.3.11. External Types
2.4. Instructions
2.4.1. Numeric Instructions
2.4.2. Vector Instructions
2.4.3. Reference Instructions
2.4.4. Parametric Instructions
2.4.5. Variable Instructions
2.4.6. Table Instructions
2.4.7. Memory Instructions
2.4.8. Control Instructions
2.4.9. Expressions
2.5. Modules
2.5.1. Indices
2.5.2. Types
2.5.3. Functions
2.5.4. Tables
2.5.5. Memories
2.5.6. Globals
2.5.7. Element Segments
2.5.8. Data Segments
2.5.9. Start Function
2.5.10. Exports
2.5.11. Imports
3. Validation
3.1. Conventions
3.1.1. Contexts
3.1.2. Prose Notation
3.1.3. Formal Notation
3.2. Types
3.2.1. Limits
3.2.2. Block Types
3.2.3. Function Types
3.2.4. Table Types
3.2.5. Memory Types
3.2.6. Global Types
3.2.7. External Types
3.2.8. Import Subtyping
3.3. Instructions
3.3.1. Numeric Instructions
3.3.2. Reference Instructions
3.3.3. Vector Instructions
3.3.4. Parametric Instructions
3.3.5. Variable Instructions
3.3.6. Table Instructions
3.3.7. Memory Instructions
3.3.8. Control Instructions
3.3.9. Instruction Sequences
3.3.10. Expressions
3.4. Modules
3.4.1. Functions
3.4.2. Tables
3.4.3. Memories
3.4.4. Globals
3.4.5. Element Segments
3.4.6. Data Segments
3.4.7. Start Function
3.4.8. Exports
3.4.9. Imports
3.4.10. Modules
4. Execution
4.1. Conventions
4.1.1. Prose Notation
4.1.2. Formal Notation
4.2. Runtime Structure
4.2.1. Values
4.2.2. Results
4.2.3. Store
4.2.4. Addresses
4.2.5. Module Instances
4.2.6. Function Instances
4.2.7. Table Instances
4.2.8. Memory Instances
4.2.9. Global Instances
4.2.10. Element Instances
4.2.11. Data Instances
4.2.12. Export Instances
4.2.13. External Values
4.2.14. Stack
4.2.15. Administrative Instructions
4.3. Numerics
4.3.1. Representations
4.3.2. Integer Operations
4.3.3. Floating-Point Operations
4.3.4. Conversions
4.4. Instructions
4.4.1. Numeric Instructions
4.4.2. Reference Instructions
4.4.3. Vector Instructions
4.4.4. Parametric Instructions
4.4.5. Variable Instructions
4.4.6. Table Instructions
4.4.7. Memory Instructions
4.4.8. Control Instructions
4.4.9. Blocks
4.4.10. Function Calls
4.4.11. Expressions
4.5. Modules
4.5.1. External Typing
4.5.2. Value Typing
4.5.3. Allocation
4.5.4. Instantiation
4.5.5. Invocation
5. Binary Format
5.1. Conventions
5.1.1. Grammar
5.1.2. Auxiliary Notation
5.1.3. Vectors
5.2. Values
5.2.1. Bytes
5.2.2. Integers
5.2.3. Floating-Point
5.2.4. Names
5.3. Types
5.3.1. Number Types
5.3.2. Vector Types
5.3.3. Reference Types
5.3.4. Value Types
5.3.5. Result Types
5.3.6. Function Types
5.3.7. Limits
5.3.8. Memory Types
5.3.9. Table Types
5.3.10. Global Types
5.4. Instructions
5.4.1. Control Instructions
5.4.2. Reference Instructions
5.4.3. Parametric Instructions
5.4.4. Variable Instructions
5.4.5. Table Instructions
5.4.6. Memory Instructions
5.4.7. Numeric Instructions
5.4.8. Vector Instructions
5.4.9. Expressions
5.5. Modules
5.5.1. Indices
5.5.2. Sections
5.5.3. Custom Section
5.5.4. Type Section
5.5.5. Import Section
5.5.6. Function Section
5.5.7. Table Section
5.5.8. Memory Section
5.5.9. Global Section
5.5.10. Export Section
5.5.11. Start Section
5.5.12. Element Section
5.5.13. Code Section
5.5.14. Data Section
5.5.15. Data Count Section
5.5.16. Modules
6. Text Format
6.1. Conventions
6.1.1. Grammar
6.1.2. Abbreviations
6.1.3. Contexts
6.1.4. Vectors
6.2. Lexical Format
6.2.1. Characters
6.2.2. Tokens
6.2.3. White Space
6.2.4. Comments
6.3. Values
6.3.1. Integers
6.3.2. Floating-Point
6.3.3. Strings
6.3.4. Names
6.3.5. Identifiers
6.4. Types
6.4.1. Number Types
6.4.2. Vector Types
6.4.3. Reference Types
6.4.4. Value Types
6.4.5. Function Types
6.4.6. Limits
6.4.7. Memory Types
6.4.8. Table Types
6.4.9. Global Types
6.5. Instructions
6.5.1. Labels
6.5.2. Control Instructions
6.5.3. Reference Instructions
6.5.4. Parametric Instructions
6.5.5. Variable Instructions
6.5.6. Table Instructions
6.5.7. Memory Instructions
6.5.8. Numeric Instructions
6.5.9. Vector Instructions
6.5.10. Folded Instructions
6.5.11. Expressions
6.6. Modules
6.6.1. Indices
6.6.2. Types
6.6.3. Type Uses
6.6.4. Imports
6.6.5. Functions
6.6.6. Tables
6.6.7. Memories
6.6.8. Globals
6.6.9. Exports
6.6.10. Start Function
6.6.11. Element Segments
6.6.12. Data Segments
6.6.13. Modules
7. Appendix
7.1. Embedding
7.1.1. Types
7.1.2. Errors
7.1.3. Pre- and Post-Conditions
7.1.4. Store
7.1.5. Modules
7.1.6. Module Instances
7.1.7. Functions
7.1.8. Tables
7.1.9. Memories
7.1.10. Globals
7.2. Implementation Limitations
7.2.1. Syntactic Limits
7.2.2. Validation
7.2.3. Execution
7.3. Validation Algorithm
7.3.1. Data Structures
7.3.2. Validation of Opcode Sequences
7.4. Custom Sections
7.4.1. Name Section
7.5. Soundness
7.5.1. Results
7.5.2. Store Validity
7.5.3. Configuration Validity
7.5.4. Administrative Instructions
7.5.5. Store Extension
7.5.6. Theorems
7.6. Change History
7.6.1. Release 1.1
7.7. Index of Types
7.8. Index of Instructions
7.9. Index of Semantic Rules
7.9.1. Typing of Static Constructs
7.9.2. Typing of Runtime Constructs
7.9.3. Constantness
7.9.4. Matching
7.9.5. Store Extension
7.9.6. Execution
WebAssembly Core Specification
W3C Working Draft
15 March 2022
7.
Appendix
ΒΆ
7.1. Embedding
7.1.1. Types
7.1.2. Errors
7.1.3. Pre- and Post-Conditions
7.1.4. Store
7.1.5. Modules
7.1.6. Module Instances
7.1.7. Functions
7.1.8. Tables
7.1.9. Memories
7.1.10. Globals
7.2. Implementation Limitations
7.2.1. Syntactic Limits
7.2.2. Validation
7.2.3. Execution
7.3. Validation Algorithm
7.3.1. Data Structures
7.3.2. Validation of Opcode Sequences
7.4. Custom Sections
7.4.1. Name Section
7.5. Soundness
7.5.1. Results
7.5.2. Store Validity
7.5.3. Configuration Validity
7.5.4. Administrative Instructions
7.5.5. Store Extension
7.5.6. Theorems
7.6. Change History
7.6.1. Release 1.1