From b351ca6ed44f7389c5a158ed069dbace16b50c12 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Fri, 1 Apr 2022 06:13:20 -0700 Subject: tweaks to compiler doc --- mu_instructions | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'mu_instructions') diff --git a/mu_instructions b/mu_instructions index 4898f9a1..a7cea787 100644 --- a/mu_instructions +++ b/mu_instructions @@ -1,10 +1,11 @@ ## Mu's instructions and their table-driven translation See http://akkartik.name/akkartik-convivial-20200607.pdf for the complete -story. In brief: Mu is a statement-oriented language. Blocks consist of flat -lists of instructions. Instructions can have inputs after the operation, and -outputs to the left of a '<-'. Inputs and outputs must be variables. They can't -include nested expressions. Variables can be literals ('n'), or live in a +story. In brief: Mu is a memory-safe statement-oriented language where most +statements translate to a single instruction of machine code. Blocks consist of +flat lists of instructions. Instructions can have inputs after the operation, +and outputs to the left of a '<-'. Inputs and outputs must be variables. They +can't include nested expressions. Variables can be literals ('n'), or live in a register ('var/reg') or in memory ('var') at some 'stack-offset' from the 'ebp' register. Outputs must be registers. To modify a variable in memory, pass it in by reference as an input. (Inputs are more precisely called 'inouts'.) -- cgit 1.4.1-2-gfad0