| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
ModR/M instructions actually can't contain disp16.
|
|
|
|
|
| |
Also purge some unused helper scripts. Good ideas in theory, but no
point if they didn't make it to muscle memory.
|
|
|
|
| |
The teensy/ examples have outlived their usefulness, I think.
|
| |
|
|
|
|
| |
Some debugging affordances.
|
| |
|
|
|
|
| |
Fix trace for the bugfix of comment 4456.
|
|
|
|
| |
Port recent changes to build_and_test_until to subx/
|
|
|
|
|
|
|
|
|
|
|
|
| |
I found a bug with multiply in the process; another case (after the swap
of call/jump opcodes in 4453) where there's no point improving testing.
Unit tests can only tell us if our instructions are internally
consistent. Validating against a real machine has to be manual.
I'm definitely feeling the pain of debugging machine code now, that's
for sure. Going over an instruction trace, comparing the state of
registers line by line.
|
|
|
|
| |
Really ugly solution.
|
| |
|
|
|
|
| |
Got a couple of instructions mixed up.
|
|
|
|
| |
Keep a few macros more tightly scoped to just the transform they're used in.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
More tracing reorg.
|
| |
|
|
|
|
| |
Clean up trace levels everywhere in SubX.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Now it will pass labels straight through.
But we may get more confusing error messages in later passes in some
situations.
|
|
|
|
|
|
|
|
| |
Key core data structures by hex bytes in text rather than opcode
numbers. Saves us round trips of having to parse and reparse strings,
and also allows us to more easily ignore unexpected non-hex words in
each transform. We'll use this ability next when we start inserting
labels.
|
| |
|
|
|
|
|
| |
Good idea from @tekknolagi: make more explicit that the first segment is
code.
|
|
|
|
|
|
|
|
|
| |
Was confusing having numbers without an explicit base sometimes be hex
and sometimes not, based on their metadata.
By convention I don't bother with the '0x' for instructions, or for
single-digit numbers that are equal to their decimal representation. But
I could and it would still work.
|
| |
|
|
|
|
| |
We don't have any supported 3-byte opcodes at the moment.
|
|
|
|
| |
Fix CI :(
|
|
|
|
| |
This ports commit 4421 to the subx/ program.
|
| |
|
|
|
|
| |
Better name for a layer.
|
|
|
|
| |
Clean up format of example programs.
|
|\
| |
| | |
Use semicolons instead of commas for sequencing
|
|/ |
|
|
|
|
| |
Silence some messages to the console. Fixes #12.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clean up the rat's nest that all my trace management globals had
gradually turned into.
a) Get rid of 'Start_tracing'. Horryibly named, I don't know how I
missed that until now.
b) Never use START_TRACING_UNTIL_END_OF_SCOPE in main(). It's
confusing to combine it with atexit(delete Trace_stream), because the
atexit() never has to run. Instead we'll just manually initialize
Trace_stream and let atexit() clean up.
c) If we run tests we only want a trace for the test run itself. So
delete the Trace_stream that was initialized at the top of main --
once it's clear we had no load-time errors.
d) Clean up horribly "Load Recipes" waypoints, combine them with the better
name, "Mu Prelude".
Putting these together, we have the following manual tests:
- CFLAGS=-g mu x.mu
Should not create last_run.
- CFLAGS=-g mu --trace x.mu
Should create last_run.
Should write it out exactly once.
- CFLAGS=-g mu --trace x.mu # when x.mu has an error
Should create last_run.
Should write it out exactly once.
- CFLAGS=-g mu --trace test copy_literal # C test
Should create last_run.
Should write it out exactly once.
- CFLAGS=-g mu --trace test recipe_with_header # Mu test
Should create last_run.
Should write it out exactly once.
I don't know how to automate these scenarios yet. We need a way to run
our build toolchain atop our stack.
|
| |
|
|
|
|
| |
Unshadow variable. Thanks Max Bernstein for pointing this out.
|
|
|
|
|
| |
Use 'dump' consistently to mean 'to screen' (stderr), and 'save' to mean
'to disk'.
|