| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was again hard to debug, because:
- the mapping between recursive calls to emit-subx-stmt-list and the
nested blocks of code in the output kept blowing my stack, and
- I kept expecting the problem to be there, or in the data attached to
variables. But it was in the `emit-cleanup-code-until-depth` for the
previous/inner block, in code I thought I'd already fixed (`clean-up-blocks`)
that accidentally worked for previous tests.
Part of the problem here is that my library for the stack sucks. It's only
for 4-byte elements, but I'm using it for 8-byte elements (handles). Which
leads to double-pushes and double-pops and -- here -- an insidiously wrong
call to `top`.
Anyways: halfway there!
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
So far it's unclear how to do this in a series of small commits. Still
nibbling around the edges. In this commit we standardize some terminology:
The length of an array or stream is denominated in the high-level elements.
The _size_ is denominated in bytes.
The thing we encode into the type is always the size, not the length.
There's still an open question of what to do about the Mu `length` operator.
I'd like to modify it to provide the length. Currently it provides the
size. If I can't fix that I'll rename it.
|
| |
|
|
|
|
|
|
|
| |
Signed and unsigned don't quite capture the essence of what the different
combinations of x86 flags are doing for SubX. The crucial distinction is
that one set of comparison operators is for integers and the second is
for addresses.
|
|
Layers 0-89 are used in self-hosting SubX.
Layers 90-99 are not needed for self-hosting SubX, and therefore could
use transitional levels of syntax sugar.
Layers 100 and up use all SubX syntax sugar.
|