6170
This commit is contained in:
parent
84c426d2ab
commit
606c1ab49a
|
@ -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
|
In the following instructions types are provided for clarity even if they must
|
||||||
be provided in an earlier 'var' declaration.
|
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
|
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>
|
=> <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
|
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>
|
=> <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
|
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:
|
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
|
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>
|
=> <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)
|
copy-handle-to dest: (handle T), src: (handle T)
|
||||||
=> <span class="Constant">"50/push-eax"</span>
|
=> <span class="Constant">"50/push-eax"</span>
|
||||||
|
|
|
@ -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
|
In the following instructions types are provided for clarity even if they must
|
||||||
be provided in an earlier 'var' declaration.
|
be provided in an earlier 'var' declaration.
|
||||||
|
|
||||||
Address operations
|
# Address operations
|
||||||
|
|
||||||
var/reg: (addr T) <- address var2: T
|
var/reg: (addr T) <- address var2: T
|
||||||
=> "8d/copy-address *(ebp+" var2.stack-offset ") " reg "/r32"
|
=> "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
|
var/reg <- index arr/rega: (addr array T), o/rego: offset
|
||||||
=> "8d/copy-address *(" rega "+" rego "+4) " reg "/r32"
|
=> "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
|
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:
|
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
|
var/reg: (addr T_f) <- get var2: (addr F), f
|
||||||
=> "8d/copy-address *(ebp+" var2.stack-offset "+" offset(f) ") " reg "/r32"
|
=> "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)
|
copy-handle-to dest: (handle T), src: (handle T)
|
||||||
=> "50/push-eax"
|
=> "50/push-eax"
|
||||||
|
|
Loading…
Reference in New Issue