| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
map of how far we've gotten by now (functions with '*' independently tested):
✓ compute-offsets*
✓ compute-addresses*
✓ emit-output
✓ emit-headers
✓ emit-elf-header
✓ emit-hex-array*
✓ first emit-elf-program-header-entry
✓ emit-hex-array*
? second emit-elf-program-header-entry
emit-hex-array*
emit-segments*
|
| |
|
|
|
|
| |
Clean up.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
I carefully logged the segment a label is declared in but forgot to
actually save it in the table. This has been a theoretic concern for
some time, but I've never seen it actually happen until now. SubX is
just too low level.
Now I get past the first two phases but code generation fails to find
the 'Entry' label.
|
|
|
|
| |
The final integration test-convert-computes-addresses is still failing.
|
|
|
|
|
|
|
|
|
| |
'curr-segment-name' is now a string, and it's stored in a register
rather than a global.
Paradoxically, this leaks *less* than before. Before, every call to
`get-or-insert-slice` leaked memory. Now we leak one string for every
new segment. Which is trivial.
|
| |
|
|
|
|
| |
I think we're calling the wrong variant here.
|
| |
|
| |
|
|
|
|
|
| |
Another batch of incorrectly signed conditional jumps. (Follow-up to
commit 5180.)
|
|
|
|
| |
Fix infinite loop in the 2 remaining failing tests; now it's a segfault.
|
| |
|
|
|
|
|
| |
Some nooks and crannies will need light final debugging with xxd, but
emit-hex-output covers most of the logic.
|
|
|
|
| |
Only failures now are the first two tests in survey.subx.
|
| |
|
|
|
|
|
| |
Everywhere we check if something is true, we check it by comparing
against 0, not 1.
|
|
|
|
|
| |
But of course the test is still infinite-looping so we can't be sure.
I'm still just reading the code.
|
| |
|
|
|
|
|
| |
It's ugly to have function locals in global variables, but we'll figure
out later how to deal with it.
|
|
|
|
|
|
| |
The compute-offsets test now goes into an infinite loop :( But I figure
all these changes are useful anyway, we should just debug the error
separately.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Move test slice variables out of the data segment and close to their
usages. Makes tests a little easier to read even if we spend a few more
instructions each time.
|
|
|
|
|
| |
Everywhere we check if something is true, we check it by comparing
against 0, not 1.
|
|
|
|
| |
DRY out compute-width and compute-width-from-slice.
|
| |
|
| |
|
|
|
|
| |
Now the only piece I plan to not write tests for is emit-headers.
|
| |
|
|
|
|
|
|
| |
Fix a couple of syntax errors.
survey.subx still failing tests.
|
| |
|
| |
|
|
|
|
|
| |
subx/survey/compute-addresses: Now computing segment starting addresses
correctly.
|
| |
|
|
|
|
| |
Now tracing segment names correctly.
|
| |
|
|
|
|
|
|
| |
Make `compute-addresses` less clever. Stop striding from the middle of
one row to the next. This way we'll also obviate the need for indexing
backwards from a pointer in the next commit.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Kinda hacky, but might scale enough for machine code.
This was really hard to debug. Single tests passed, but when I ran all
tests I got breakage because tests long before (from the 056trace layer)
were not cleaning up properly.
My instinct was to call clear-stream on Trace-stream, which was wrong
(the trace didn't have the wrong contents, it was literally a bad
object). It was also wrong in a counter-productive way: calling
clear-stream on a real Trace stream (which is the size of a page of
memory) takes a long time in emulated mode.
|
| |
|
| |
|
|
|
|
| |
No trace statements yet, so we don't know if it works.
|
| |
|
|
|
|
|
| |
Flesh out final test some more. We also now have a new family of
primitives for writing non-strings to input streams in tests.
|
| |
|
| |
|
| |
|