Load-Store Consistency (LSC), is the requirement that after a value with a specific type is written to a memory location, loads from that memory location will be of the same type. So if a variable contains a 32-bit floating point number, then both loads and stores to that variable will be of 32-bit floating point values, and not 16-bit unsigned integers or anything else.
Recreate high-level loop and
if structures from the low-level labels and branches that appear in LLVM assembly (definition taken from this paper).
Simple DirectMedia Layer (SDL) is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.
The original compiler supported a number of other memory models and compilation modes (see Code Generation Modes) but Typed Arrays Mode 2 proved to have, among other benefits, the greatest support for arbitrary code.
XMLHttpRequest. Emscripten uses XHRs for asynchronously downloading binary data.
Binaryen is a WebAssembly compiler toolkit, which Emscripten uses to modify and optimize wasm.
Clang is a compiler front end for C, C++, and other programming languages that uses LLVM as its back end.
The closure compiler is used to minify Emscripten-generated code at higher optimisations.
The Emscripten Compiler Frontend (emcc). Emscripten’s drop-in replacement for a compiler like gcc.
The Emscripten Windows Command Prompt (emcmdprompt.bat) is used to call Emscripten tools from the command line on Windows.
Fastcomp is Emscripten’s second compiler core, after the JS compiler and before the new LLVM wasm backend.
The Emscripten project is hosted on GitHub.
Emscripten provides an alternative tool, the LLVM Nativizer.
LLVM is a compiler infrastructure designed to allow optimization of programs written in arbitrary programming languages.
The LLVM Nativizer (tools/nativize_llvm.py) compiles LLVM bitcode to a native executable. This links to the host libraries, so comparisons of output with Emscripten builds will not necessarily be identical.
It performs a similar role to the LLVM Interpreter.
Sometimes the output of the this tool will crash or fail. This tool is intended for developers fixing bugs in Emscripten.
Python is a scripting language used to write many of Emscripten’s tools. The required version is listed in the toolchain requirements.
The following terms are used when referring to the SDK and Emscripten SDK (emsdk):
The Emscripten SDK (emsdk) is used to perform all SDK maintenance and can install, update, add, remove and activate SDKs and tools. Most operations are of the form
./emsdk command. To access the emsdk script, launch the Emscripten Command Prompt.
The basic unit of software bundled in the SDK. A Tool has a name and a version. For example, clang-3.2-32bit is a tool that contains the 32-bit version of the Clang v3.2 compiler. Other tools used by Emscripten include Java, Git, node.js, etc.
A set of tools. For example, sdk-1.5.6-32bit is an SDK consisting of the tools: clang-3.2-32bit, node-0.10.17-32bit, python-18.104.22.168-32bit and emscripten-1.5.6.
There are a number of different Emscripten SDK packages. These can be downloaded from here.
The emsdk can store multiple versions of tools and SDKs. The active tools/SDK is the set of tools that are used by default on the Emscripten Command Prompt. This compiler configuration is stored in an emsdk-specific config file (.emscripten) and can be changed using emsdk.
The emsdk can store any number of tools and SDKs. The SDK root directory is the directory used to store a particular SDK. It is located as follows, with respect to the emsdk root directory: <emsdk root>\emscripten\<sdk root directory>\