| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Explore using a second register for pointer dereferencing.
|
| |
|
|
|
|
|
| |
After fixing bugs, checking alloc_ids now requires 9 instructions rather
than 6.
|
| |
|
|
|
|
|
|
|
|
| |
Couple of typos in handle.subx. We didn't notice because a missing /r32
field gets turned into 0/EAX anyway, and because ECX happens to have the
same value as EAX in the specific test caller.
But it's still not running as expected, now that I'm looking closely.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Update syntax-highlighted renderings after a _long_ time.
|
|
|
|
| |
Add the new binary to CI.
|
|\ |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
We need yet another helper for computing the lengths of strings, while
checking for escape sequences.
|
| |
| |
| |
| |
| |
| | |
We're going to be cloning it for the length computation.
Anytime we do something non-standard it's invariably short-lived.
|
| |
| |
| |
| | |
As expected, almost all tests now passing.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
More importantly, don't mix reclaiming locals with discarding args after
a call.
|
| |
| |
| |
| | |
I _think_ we'll need to use it below. But may be wrong.
|
| |
| |
| |
| |
| | |
Kind of a pathological case, but makes our loop follow a standard format,
and provides some error checking at low cost.
|
| | |
|
| | |
|
| |
| |
| |
| | |
I was missing a test to catch this.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I like to be able to jump between functions and tests using '}' in Vim
:)
We also shouldn't put the wrong argument types in the tabular columns.
Just make it obvious they're not in use when instructions don't have a
ModR/M byte.
End-of-line comments are really only useful for instructions with a ModR/M
byte.
|
| | |
|
| |
| |
| |
| | |
skip-string-in-slice
|
| | |
|
| |
| |
| |
| | |
This one should make `emit-metadata` string-aware.
|
| |
| |
| |
| | |
Plan: https://github.com/akkartik/mu/commit/d4a244268841e8e912c98f4587095b701aa5c292#commitcomment-33558279
|
| |
| |
| |
| | |
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.
|
| |
|
|\
| |
| | |
SubX in SubX: Transforming uses of string literals
|
| |\
| | |
| | | |
SubX in SubX: Transforming uses of string literals (prerequisite A)
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Still some failing tests:
- emit-string-literal-data doesn't ignore metadata when computing the
length of literal strings
- emit-string-literal-data doesn't handle escape sequences
One issue doesn't have a failing test:
- emit-metadata doesn't handle string literals containing '/'
All these open issues involve a common design question: how to parse a
'word' that includes a string literal that may include spaces.
For everything else I know words can't contain spaces and datums can't
contain slashes. But for string literals things are tougher.
|
| | | |
|
| | |\
| | |/
| |/| |
|
| |\ \
| |/ /
|/| | |
|
| | |
| | |
| | |
| | | |
A few more places with flag corrections.
|