| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
| |
Clean up primitives for converting from/to hex chars.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Restore update_html
|
|
|
|
|
| |
We want slice-equal? for length-prefixed strings, not null-terminated "kernel"
strings.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
In the process of building slice primitives I found an out-of-bounds access
in write-byte.
|
|
|
|
|
|
| |
In the process of building next-token I finally added some support for a
debugging situation I've found myself in a couple of times: wondering "what
changed this memory location"?
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Improve error checking to warn on unexpected displacements as well.
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The lines within '{}' can now be turned into a macro like `E_X = deref(E_X)`,
parameterizing the register being modified.
Assumes the input is in a register but also saved elsewhere, so it's safe
to clobber and replace with the result.
Compare commit 4894. Used to take 9 instructions, 8 of them making loads/stores.
Now it's 6 instructions, 4 of them loads/stores (the one non-local load
is unchanged, of course). Key is to not consume more registers so we don't
have to push/pop them.
|
| |
|
| |
|
|
|
|
| |
I've agonized over this for a week; high time I saved a snapshot.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Finally really fix the CI failure of commit 4894.
This is a remainder to forget my knowledge of stack addresses in the SubX
VM when writing SubX programs. Otherwise my programs will work in the VM
but not natively. The only assumptions a SubX program should make about
its segment addresses are what's encoded in the ELF binary. Thanks to
https://en.wikipedia.org/wiki/Address_space_layout_randomization, it can't
know anything else.
|
|
|
|
| |
Bug in my linkify tool introduced in commit 4891.
|
| |
|
| |
|
|
|
|
| |
Fix CI.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Done with kinda-safe pointers.
In a real compiler the fast path of 'lookup' would ideally get inlined.
Excluding procedure-call overhead, the current implementation consumes 2
registers besides the input, and requires 9 instructions (2 push, 2 load,
compare, jump, increment, 2 pop). That's large enough that inlining may
become a trade-off. Even if we somehow magically had the registers already
loaded and available, we'd still need 4 instructions (1 pointer dereference,
compare, jump and increment). The price of safety.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Couple more tweaks to html rendering:
a) SubX definitions no longer link redundantly to themselves. This long-standing
issue turns out to be tractable to solve for SubX files since the syntax
is so simple.
b) Fix links to SubX definitions in other directories. I forgot that I
have to always generate tags from the directory of the file being linkified.
c) Fix link colors. Before we lost all syntax highlighting for functions
and Globals. Now they maintain their colors, just add an underline.
|
|
|
|
|
|
|
| |
a) Switch to a light background.
b) Linkify calls in .subx files.
c) Keep all colorization in the Vim colorscheme, get rid of hacky special-cases
in update_html.
|
| |
|
|
|
|
| |
We only can't use rm32=5 when mod=0. Totally fine when it's mod=1.
|
| |
|
| |
|
|
|
|
| |
Make dots a little more salient on a light-background Vim.
|
| |
|
| |
|