diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-01-26 14:02:54 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-01-26 15:05:12 -0800 |
commit | d1b94adc392432dcd475e4fd78dffbd164d978aa (patch) | |
tree | 18af1f8721f94f8e476447bfffe35f1a8c42d1b2 | |
parent | 5b4f4d63bd3379d3dd2c23a5333d3845be31eec3 (diff) | |
download | mu-d1b94adc392432dcd475e4fd78dffbd164d978aa.tar.gz |
5918
-rwxr-xr-x | apps/mu | bin | 81194 -> 81143 bytes | |||
-rw-r--r-- | apps/mu.subx | 33 |
2 files changed, 11 insertions, 22 deletions
diff --git a/apps/mu b/apps/mu index 48e9f0cf..9b44b1a3 100755 --- a/apps/mu +++ b/apps/mu Binary files differdiff --git a/apps/mu.subx b/apps/mu.subx index a64a92d2..efc71006 100644 --- a/apps/mu.subx +++ b/apps/mu.subx @@ -298,21 +298,15 @@ Stmt1-inouts: # (handle list var) Stmt1-outputs: # (handle list var) 0xc/imm32 -Vardef-name: # (handle array byte) +Vardef-var: # (handle var) 4/imm32 -Vardef-type: # (handle tree type-id) - 8/imm32 -Regvardef-name: # (handle array byte) +Regvardef-operation: # (handle array byte) 4/imm32 -Regvardef-type: # (handle tree type-id) +Regvardef-inouts: # (handle list var) 8/imm32 -Regvardef-register: # (handle array byte) +Regvardef-var: # (handle var) 0xc/imm32 -Regvardef-operation: # (handle array byte) - 0x10/imm32 -Regvardef-inputs: # (handle list var) - 0x14/imm32 Named-block-name: 4/imm32 @@ -320,7 +314,7 @@ Named-block-statements: # (handle list statement) 8/imm32 Stmt-size: # (addr int) - 0x18/imm32 + 0x10/imm32 Var-name: 0/imm32 @@ -3366,7 +3360,7 @@ $new-stmt:end: 5d/pop-to-ebp c3/return -new-vardef: # ad: (addr allocation-descriptor), name: (addr array byte), type: int -> result/eax: (handle statement) +new-vardef: # ad: (addr allocation-descriptor), var: (handle var) -> result/eax: (handle statement) # . prologue 55/push-ebp 89/<- %ebp 4/r32/esp @@ -3376,10 +3370,9 @@ new-vardef: # ad: (addr allocation-descriptor), name: (addr array byte), type: (allocate *(ebp+8) *Stmt-size) # => eax (zero-out %eax *Stmt-size) c7 0/subop/copy *eax 2/imm32/tag/var-on-stack # Stmt-tag + # result->var = var 8b/-> *(ebp+0xc) 1/r32/ecx - 89/<- *(eax+4) 1/r32/ecx # Vardef-name - 8b/-> *(ebp+0x10) 1/r32/ecx - 89/<- *(eax+8) 1/r32/ecx # Vardef-type + 89/<- *(eax+4) 1/r32/ecx # Vardef-var $new-vardef:end: # . restore registers 59/pop-to-ecx @@ -3388,7 +3381,7 @@ $new-vardef:end: 5d/pop-to-ebp c3/return -new-regvardef: # ad: (addr allocation-descriptor), name: (addr array byte), type: int, register: (addr array byte) -> result/eax: (handle statement) +new-regvardef: # ad: (addr allocation-descriptor), var: (handle var) -> result/eax: (handle statement) # . prologue 55/push-ebp 89/<- %ebp 4/r32/esp @@ -3397,13 +3390,9 @@ new-regvardef: # ad: (addr allocation-descriptor), name: (addr array byte), typ # (allocate *(ebp+8) *Stmt-size) # => eax (zero-out %eax *Stmt-size) - c7 0/subop/copy *eax 3/imm32/tag/var-in-register + c7 0/subop/copy *eax 3/imm32/tag/var-in-register # Stmt-tag 8b/-> *(ebp+0xc) 1/r32/ecx - 89/<- *(eax+4) 1/r32/ecx # Regvardef-name - 8b/-> *(ebp+0x10) 1/r32/ecx - 89/<- *(eax+8) 1/r32/ecx # Regvardef-type - 8b/-> *(ebp+0x14) 1/r32/ecx - 89/<- *(eax+0xc) 1/r32/ecx # Regvardef-register + 89/<- *(eax+0xc) 1/r32/ecx # Regvardef-var $new-regvardef:end: # . restore registers 59/pop-to-ecx |