| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We can now translate layers 49-56 using the self-hosted translator
(`translate` and `ntranslate`).
As a follow-up to commit 5404, the self-hosted translator is a little
more strict than the C++ translator in 3 places:
a) All .subx files must define a data segment.
b) All .subx files must define an `Entry` label.
c) All numbers must be in *lowercase* hex.
In all cases, where programs work with the C++ translator but violate
the self-hosted translator's assumptions, we must make sure we raise
errors rather than silently emit bad code.
|
| |
|
|
|
|
| |
Be more consistent about names of ends of a slice.
|
|\
| |
| |
| |
| |
| | |
High time we pulled in the final changes to dquotes.
In the process we fix one recently introduced duplicate symbol.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| | |
Fix some comments.
|
| | |
|
| |
| |
| |
| | |
When two assertions don't share context they're clearer when separated.
|
| |
| |
| |
| |
| |
| |
| | |
Move tests adjacent to function being tested.
Originally I didn't expect the helpers to get their own tests. But even
so, arguably the original layout was less clear.
|
| | |
|
| |
| |
| |
| |
| | |
Make a test a little less confusing; stream was initialized with data
filled in but outside bounds.
|
| |
| |
| |
| |
| | |
1. skip-next-line should skip newline
2. trace-scan was falling into an infinite loop on non-matching lines
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
This missing line was giving the illusion that all was well when running
a single test at a time.
Now trace-scan still hangs, but it hangs reliably. And it's clear what
the logic error is.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Now that we don't have to edit code to run a single test, delete that
commented out fragment everywhere.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
|/
|
|
|
| |
I think the path to readable tests for survey.subx passes through
white-box tests.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fail early when writing to a fake file runs out of space. Makes debugging
tests easier.
Reads from files, on the other hand, are only buffering to a temporary
stream, so it makes sense to silently stop when they run out of space.
In the process I uncovered a testing bug in pack.subx: I was missing a
trailing space in the expected result, but the test still passed because
the space was getting truncated. Being principled about aborting on overflow
by default will help avoid such issues.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Considering how much trouble a merge phase would be (commit 4978), it seems
simpler to just add the extra syntax for controlling the entry point of
the generated ELF binary.
But I wouldn't have noticed this if I hadn't taken the time to write out
the commit messages of 4976 and 4978.
Even if we happened to already have linked list primitives built, this
may still be a good idea considering that I'm saving quite a lot of code
in duplicated entrypoints.
|
|
|
|
|
| |
Support immediate operands in the data segment in all the ways we support
them in the code segment.
|
| |
|
|
|
|
| |
Cleaner way to compare streams in tests.
|
|
|