| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Raise an error when we fall off the end of the code segment.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Improve error-checking for unnecessary displacement operands.
|
|
|
|
|
|
|
|
| |
Initial sketch of a dependency-injected wrapper around the exit() syscall.
I don't have the primitives yet, just a sketch of how they should work
-- and a passing test for non-local jumps without support for passing the
exit status to the caller.
|
| |
|
|
|
|
|
|
|
| |
Extract a helper for appending strings to raw buffers.
I'd been resisting this idea, but it actually turns out to be a pretty
clean abstraction in the end.
|
|
|
|
|
| |
Start using write() instead of _write().. and we promptly find a typo when
dealing with real file descriptors.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Update the syntax documentation.
|
| |
|
|
|
|
| |
Check for duplicate docstrings.
|
|
|
|
|
|
|
|
| |
Add the standard mnemonic for each opcode.
We aren't ever going to have complete docs of the subset of the x86 ISA
we support, so we need to help readers cross-correlate with the complete
docs.
|
|
|
|
|
|
| |
It now includes details for 8-bit registers. And we'll just use the classic
names for the registers so that the relationships between 8- and 32-bit
versions are more obvious.
|
|
|
|
| |
All tests now once again run the same natively and on VM.
|
|
|
|
|
|
|
| |
Fix a major discrepancy between the SubX VM and real x86 processors. This
was responsible for the breakage identified in commit 4684. We now have
failing tests, but at least they are identical running natively and on
SubX.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Turns out the tests for 'trace' have been broken in native mode since the
original commit (4674). Dangers of running my tests on Darwin, where I
can't run them natively.
The test failures didn't get flagged on CI because I'd forgotten to update
the exit code of the factorial app in commit 4664. At least that's fixed
in this commit.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Maps have definitely helped with debugging. Even having just the top of
the call stack is very helpful.
We're soon gonna need setup/teardown for tests. I'm not sure how compiling
run-tests will work then.
|
| |
|
|
|
|
|
|
|
|
|
| |
A debugging aid: 'subx --map translate' dumps a mapping from functions
to addresses to a file called "map", and 'subx --map run' loads the mapping
in "map", augmenting debug traces.
Let's see how much this helps. Debugging machine code has been pretty painful
lately.
|
| |
|
|
|
|
|
|
| |
On second thoughts, let's not use Mu's "null is real hardware" convention
for traces. There's no real difference between a real and fake trace stream,
so we'll just always explicitly pass in *Trace-stream in production code.
|
| |
|
|
|
|
| |
subx: append to trace
|
|
|
|
|
| |
To search for instructions in .subx files, just run `:G 8b.*copy` inside
Vim without any quotes.
|
| |
|
| |
|