diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-09-08 22:47:30 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-09-08 22:48:47 -0700 |
commit | 6b36e4dbc7749addeebe523992e0bcb62ad6b2d5 (patch) | |
tree | e041a9099e170c84c23a352d92fcf8efd536d788 /302stack_allocate.subx | |
parent | d9a05dfbb7ac73b31b1f3c1fb36a5324243da8a2 (diff) | |
download | mu-6b36e4dbc7749addeebe523992e0bcb62ad6b2d5.tar.gz |
6760
Fix a couple of subtle bugs. - the VM was conditionally reading from the instruction stream, so that other bugs got masked by decoding errors. - push-n-bytes was clobbering eax.
Diffstat (limited to '302stack_allocate.subx')
-rw-r--r-- | 302stack_allocate.subx | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/302stack_allocate.subx b/302stack_allocate.subx index 02ad84f2..4634039d 100644 --- a/302stack_allocate.subx +++ b/302stack_allocate.subx @@ -37,15 +37,12 @@ $push-n-zero-bytes:prologue: 89/<- %ebp 4/r32/esp $push-n-zero-bytes:copy-ra: # -- esp = ebp - 50/push-eax - # -- esp+8 = ebp+4 - # -- esp+4 = ebp - 8b/-> *(esp+4) 0/r32/eax + 89/<- *Push-n-zero-bytes-eax 0/r32/eax + 8b/-> *esp 0/r32/eax 2b/subtract *(ebp+4) 4/r32/esp - # -- esp+4+n = ebp - 89/<- *(esp+4) 0/r32/eax - 58/pop-to-eax # -- esp+n = ebp + 89/<- *esp 0/r32/eax + 8b/-> *Push-n-zero-bytes-eax 0/r32/eax $push-n-zero-bytes:bulk-cleaning: 89/<- *Push-n-zero-bytes-esp 4/r32/esp 81 0/subop/add *Push-n-zero-bytes-esp 4/imm32 @@ -60,3 +57,5 @@ Push-n-zero-bytes-ebp: # (addr int) 0/imm32 Push-n-zero-bytes-esp: # (addr int) 0/imm32 +Push-n-zero-bytes-eax: + 0/imm32 |