| Commit message (Collapse) | Author | Age | Files | 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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Fix a bug when running tests singly in the 'SubX standard library'.
|
|
|
|
|
| |
Now that we don't have to edit code to run a single test, delete that
commented out fragment everywhere.
|
| |
|
| |
|
|
|
|
|
| |
I checked if we needed to bring back anything since commit 3976, but the
only difference is dropping the :(scenario) DSL.
|
| |
|
|
|
|
| |
Runs test under cursor and opens its trace.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Simplify `string-equal`.
|
| |
|
| |
|
|
|
|
|
| |
I think the path to readable tests for survey.subx passes through
white-box tests.
|
|
|
|
|
|
| |
'get-or-insert-stream' is now the more generic 'get-or-insert' that can
handle tables of any value type. But callers have to be careful to cast
values to the right type.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Mostly for tests. For every new type we want to compare in a test, we're
now going to start using some primitive that can parse its value from string. In this manner we can get syntax for literals in machine code.
Open question: parsing aggregates of aggregates. Like an array of structs.
This is the first time we allocate from the heap in standard library tests.
So we now need to start initializing the heap in all our apps.
|
|
|
|
|
| |
hoist 'Heap' variable into the std library in anticipation of the parse-array-of-ints
primitive.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
add lengths to data blobs
|
|
|
|
|
|
|
|
| |
Start of the final phase needed to implement SubX in SubX:
$ cat files.subx ... |dquotes |assort |pack |survey |hex > a.elf
survey.subx is responsible for assigning addresses to labels and segments.
|
|
|
|
| |
Fix CI.
|
|
|
|
| |
Clean up some unused constants.
|
|
|
|
| |
CI should have been failing for a few days. Now fixed.
|
|\
| |
| | |
New syntax for segment headers
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Now all implemented phases of the SubX translator in SubX support the new
syntax:
✓ hex.subx (no changes required)
survey.subx (not yet started)
✓ pack.subx (fixed here)
✓ assort.subx
✓ dquotes.subx (has failing tests for other reasons)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Current state:
✓ hex.subx (no changes required)
survey.subx
✓ pack.subx (fixed here)
assort.subx
✓ dquotes.subx (has failing tests for other reasons)
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Right now SubX defines headers with the following syntax:
```
=== ...
```
The `...` can be either a numeric address or a name. Numeric addresses
are useful for tests where we want to check addresses of individual instructions.
Names are useful in real programs where we want to add to a segment in
many places.
This approach has long seemed a mess. It's hard to explain, and there's
a certain amount of historical evolution that led to it that should be
irrelevant to comprehend the current state of the codebase. I started out
assuming the first segment was always code, before adding the special names
'code' and 'data'. We pretend to support more than two segments but we
don't really.
To simplify the code and explanation we'll move to a new syntax:
```
=== <name> <address>
```
Code will always belong in the special name 'code', but it no longer has
to be first.
We need to migrate both our SubX-in-SubX phases and the C++ version. The
plan is to start from the top down and update bootstrapping phases that've
already been built (see commit 5102 for the list of phases). This commit
updates pack.subx. Current state:
✓ hex.subx (no changes required)
survey.subx
✓ pack.subx (fixed here)
assort.subx
dquotes.subx
|
|
|
|
| |
Test for the bugfix of commit 2f49a27504.
|
|
|
|
|
|
|
| |
Clean up some old TODOs related to our pre-mmap limitations.
Also caught another case of using the wrong comparison. When comparing
addresses, one must always use unsigned rather than signed jump instructions.
|