| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
| |
Fix CI.
a) Update canonical binaries.
b) Fix an out-of-bounds access in `clear-stream`. This also required supporting
a new instruction in `subx run` to load an imm8 into rm8.
|
|
|
|
| |
We only can't use rm32=5 when mod=0. Totally fine when it's mod=1.
|
| |
|
| |
|
|
|
|
| |
More mnemonic register usage in write-stream.
|
|
|
|
| |
Our first buffer overflow!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clean up a few things:
a) Call scan-next-byte in hex.subx with the right number of args. Turns
out tests continue to work fine if they never use the other args.
b) Tear down a test for 'stop' in the right order. Not important since we
have no EBP to restore. But can still be misleading.
c) Have 'check-ints-equal' return nothing. Handy for it to not mess up
EAX. I never use the result anyway, and the name also is imperative suggesting
callers won't expect a return value.
|
| |
|
|
|
|
| |
New helper: print an error message, then a numeric byte, then abort.
|
|
|
|
| |
New helper: printing a string to a buffered file.
|
|
|
|
| |
Better to use EDI as a mnemonic for 'destination'.
|
|
|
|
| |
Let's standardize to use opcode 39 rather than 3b by default.
|
|
|
|
| |
Fix CI since 4827.
|
| |
|
|
|
|
|
| |
This is likely a sub-optimal interface, but I'm trying not to agonize.
The whole point of Mu is to permit radical changes at any point in time.
|
|
|
|
|
|
|
|
|
| |
I was 'returning' a phantom value from 'write' when the underlying '_write'
returns nothing.
In general, returning counts of bytes written is not so useful for error
checking when my primitives abstract away from that. We'll come back to
error signalling later.
|
|
|
|
|
|
|
| |
Fix CI.
It's kind of a hassle (and wasteful) that I need to redefine 'main' in
every single layer.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Crenshaw compiler now runs natively as well.
It turns out I was misreading the Intel manual, and the jump instructions
that I thought take disp16 operands actually take disp32 operands by default
on both i686 and x86_64 processors. The disp16 versions are some holdover
from the 16-bit days.
This was the first time I've used one of these erstwhile-disp16 instructions,
but I still haven't tested most of them. We'll see if we run into future
issues.
|
|
Start with an exactly corresponding version to Crenshaw 2-1: single-digit
numbers. The only change: we assume the number is in hex.
The next version now supports multi-digit hex numbers.
|