aboutsummaryrefslogtreecommitdiff
path: root/Rationale.md
diff options
context:
space:
mode:
authortitzer <titzer@google.com>2016-10-11 17:47:02 +0200
committerGitHub <noreply@github.com>2016-10-11 17:47:02 +0200
commite49fc18b684c953e3d920dcfc4bfce8ede9268dd (patch)
treedb3843485e77013c763c4dbf27de9ab3711e371b /Rationale.md
parentacfa2e2f6e02bb4f9c46a03882b72fb43e410eca (diff)
downloadnanowasm-design-e49fc18b684c953e3d920dcfc4bfce8ede9268dd.tar.gz
Structured stack (#813)
* Rename AstSemantics.md to Semantics.md * Rewrite Semantics for structured stack machine * Update control instructions * Update nop * More tweaks * Update README.md * Update Semantics.md * Update Semantics.md * Address @rossberg-chromium comments
Diffstat (limited to 'Rationale.md')
-rw-r--r--Rationale.md12
1 files changed, 6 insertions, 6 deletions
diff --git a/Rationale.md b/Rationale.md
index fd194bd..fd64975 100644
--- a/Rationale.md
+++ b/Rationale.md
@@ -10,14 +10,14 @@ ergonomics, portability, performance, security, and Getting Things Done.
WebAssembly was designed incrementally, with multiple implementations being
pursued concurrently. As the MVP stabilizes and we get experience from real-world
codebases, we'll revisit the alternatives listed below, reevaluate the tradeoffs
-and update the [design](AstSemantics.md) before the MVP is finalized.
+and update the [design](Semantics.md) before the MVP is finalized.
## Why a stack machine?
Why not an AST, or a register- or SSA-based bytecode?
-* We started with an AST and generalized to a [structured stack machine](AstSemantics.md). ASTs allow a
+* We started with an AST and generalized to a [structured stack machine](Semantics.md). ASTs allow a
dense encoding and efficient decoding, compilation, and interpretation.
The structured stack machine of WebAssembly is a generalization of ASTs allowed in previous versions while allowing
efficiency gains in interpretation and baseline compilation, as well as a straightforward
@@ -43,7 +43,7 @@ addition of multiple return values from control flow constructs and function cal
## Basic Types Only
-WebAssembly only represents [a few types](AstSemantics.md#Types).
+WebAssembly only represents [a few types](Semantics.md#Types).
* More complex types can be formed from these basic types. It's up to the source
language compiler to express its own types in terms of the basic machine
@@ -69,7 +69,7 @@ WebAssembly only represents [a few types](AstSemantics.md#Types).
## Load/Store Addressing
Load/store instructions include an immediate offset used for
-[addressing](AstSemantics.md#Addressing). This is intended to simplify folding
+[addressing](Semantics.md#Addressing). This is intended to simplify folding
of offsets into complex address modes in hardware, and to simplify bounds
checking optimizations. It offloads some of the optimization work to the
compiler that targets WebAssembly, executing on the developer's machine, instead
@@ -79,7 +79,7 @@ of performing that work in the WebAssembly compiler on the user's machine.
## Alignment Hints
Load/store instructions contain
-[alignment hints](AstSemantics.md#Alignment). This makes it easier to generate
+[alignment hints](Semantics.md#Alignment). This makes it easier to generate
efficient code on certain hardware architectures.
Either tooling or an explicit opt-in "debug mode" in the spec could allow
@@ -91,7 +91,7 @@ why it isn't the specified default.
## Out of Bounds
The ideal semantics is for
-[out-of-bounds accesses](AstSemantics.md#Out-of-Bounds) to trap, but the
+[out-of-bounds accesses](Semantics.md#Out-of-Bounds) to trap, but the
implications are not yet fully clear.
There are several possible variations on this design being discussed and