diff options
Diffstat (limited to 'mu_instructions')
-rw-r--r-- | mu_instructions | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mu_instructions b/mu_instructions index bece4fc1..253ede30 100644 --- a/mu_instructions +++ b/mu_instructions @@ -290,6 +290,17 @@ Similar float variants like `break-if-float<` are aliases for the corresponding `addr` equivalents. The x86 instruction set stupidly has floating-point operations only update a subset of flags. +## Returns + +The `return` instruction cleans up variable declarations just like an unconditional +`jump` to end of function, but also emits a series of copies before the final +`jump`, copying each argument of `return` to the register appropriate to the +respective function output. This doesn't work if a function output register +contains a later `return` argument (e.g. if the registers for two outputs are +swapped in `return`), so you can't do that. + +return => "c3/return" + --- In the following instructions types are provided for clarity even if they must |