Skip to content
WASM Analyzer LogoWASM Analyzer LogoWASM Analyzer
GitHub

Modules

In WebAssembly, everything is organized into stateless objects called modules. The Wasm code that makes up a module is divided into multiple sequential sections. The code is compiled by the browser, and modules are instantiated through the WebAssembly.Module() method.





Sections


The following table shows the known possible sections that can be part of a Wasm module:

namecontents
CodeHolds the body of every function listed in the Function section.
DataDeclares the data that will be loaded into the Memory section.
Function*Lists all the functions in the module.
Global*Defines global variables for the module.
Import*Lists all the imports used by the module.
ElementDeclares the data that will be loaded into the Table section.
Export*Lists all the exports that will be exposed to the host environment from inside the module.
Memory*Holds the linear memory used by an instance of the module.
StartDeclares the index of a function that is executed as a Wasm module is instantiated.
Table*Holds a typed array of references to items that can’t be stored as raw bytes in linear memory.
TypeLists all signatures for functions the module uses. A signature can be shared between functions.

* Shown in the WASM Analyzer interface.


In addition to the known sections listed above, a Wasm module may also contain one or more custom sections that add non-standard functionality. Custom sections must appear after the Data section in a module.

Read more about the contents of the various sections, and the building blocks of a module in the Building blocks section of this documentation.





Additional reading


Read more about the contents of the various sections contained within a module in our documentation on WebAssembly building blocks, here.