diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-03-25 09:54:53 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-03-25 09:54:53 -0700 |
commit | 606c1ab49a6753d4bc84b65466774274fcf04a83 (patch) | |
tree | dd17f210475b8d959f52eff52f3499f62b48a428 | |
parent | 84c426d2abff4b3b38f35758392baaf3eda93d93 (diff) | |
download | mu-606c1ab49a6753d4bc84b65466774274fcf04a83.tar.gz |
6170
-rw-r--r-- | html/mu_instructions.html | 6 | ||||
-rw-r--r-- | mu_instructions | 6 |
2 files changed, 6 insertions, 6 deletions
diff --git a/html/mu_instructions.html b/html/mu_instructions.html index 1c50a228..f510d850 100644 --- a/html/mu_instructions.html +++ b/html/mu_instructions.html @@ -177,7 +177,7 @@ var/reg <span class="Special"><-</span> multiply *var2/reg2 => <span cl In the following instructions types are provided for clarity even if they must be provided in an earlier 'var' declaration. -Address operations +<span class="Comment"># Address operations</span> var/reg: (addr T) <span class="Special"><-</span> address var2: T => <span class="Constant">"8d/copy-address *(ebp+"</span> var2.stack-offset <span class="Constant">") "</span> reg <span class="Constant">"/r32"</span> @@ -202,7 +202,7 @@ var/reg: (offset T) <span class="Special"><-</span> compute-offset arr: (addr var/reg <span class="Special"><-</span> index arr/rega: (addr array T), o/rego: offset => <span class="Constant">"8d/copy-address *("</span> rega <span class="Constant">"+"</span> rego <span class="Constant">"+4) "</span> reg <span class="Constant">"/r32"</span> -User-defined types +<span class="Comment"># User-defined types</span> If a record (product) type T was defined to have elements a, b, c, ... of types T_a, T_b, T_c, ..., then accessing one of those elements f of type T_f: @@ -212,7 +212,7 @@ var/reg: (addr T_f) <span class="Special"><-</span> get var2/reg2: (addr F), var/reg: (addr T_f) <span class="Special"><-</span> get var2: (addr F), f => <span class="Constant">"8d/copy-address *(ebp+"</span> var2.stack-offset <span class="Constant">"+"</span> offset(f) <span class="Constant">") "</span> reg <span class="Constant">"/r32"</span> -Handles for safe access to the heap +<span class="Comment"># Handles for safe access to the heap</span> copy-handle-to dest: (handle T), src: (handle T) => <span class="Constant">"50/push-eax"</span> diff --git a/mu_instructions b/mu_instructions index f6b05faa..f9866aca 100644 --- a/mu_instructions +++ b/mu_instructions @@ -152,7 +152,7 @@ loop-if-addr>= label => "0f 83/jump-if-addr>= " label ":loop/disp32 In the following instructions types are provided for clarity even if they must be provided in an earlier 'var' declaration. -Address operations +# Address operations var/reg: (addr T) <- address var2: T => "8d/copy-address *(ebp+" var2.stack-offset ") " reg "/r32" @@ -177,7 +177,7 @@ var/reg: (offset T) <- compute-offset arr: (addr array T), idx: int # arr var/reg <- index arr/rega: (addr array T), o/rego: offset => "8d/copy-address *(" rega "+" rego "+4) " reg "/r32" -User-defined types +# User-defined types If a record (product) type T was defined to have elements a, b, c, ... of types T_a, T_b, T_c, ..., then accessing one of those elements f of type T_f: @@ -187,7 +187,7 @@ var/reg: (addr T_f) <- get var2/reg2: (addr F), f var/reg: (addr T_f) <- get var2: (addr F), f => "8d/copy-address *(ebp+" var2.stack-offset "+" offset(f) ") " reg "/r32" -Handles for safe access to the heap +# Handles for safe access to the heap copy-handle-to dest: (handle T), src: (handle T) => "50/push-eax" |