| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
How did things seem to be working until now?
- We were saving an address from the stack to stream.read
- When we read this address in skip-chars-matching:loop, we used to stop early
But now we've moved the stack to a larger address, one where the most significant
byte is set. When the stack address now gets to skip-chars-matching:loop,
it's treated as a negative number and we proceed through the loop. At which
point we try to index into the array using it.
No real test to be written to protect against this :(
|
|\
| |
| |
| |
| | |
dquotes.subx is now segfaulting after this merge. Seems to be trying to
use addresses from the old stack.
|
| |\ |
|
| | |
| | |
| | |
| | |
| | | |
Skimping on tests; the code changes seem pretty trivial. Will this fix
CI?!
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Pretty blunt for now; just abort the entire program on any failure to write.
I'm encountering it because I'm somehow treating a stream address as a
file descriptor. Maybe mmap is returning addresses below 0x08000000?
|
| | |
| | |
| | |
| | |
| | | |
Bugfix: I'd neglected to update the input stream's state when natively
writing a stream to file.
|
| | | |
|
| |\|
| | |
| | |
| | | |
apps/dquotes still segfaulting on native run.
|
| | | |
|
| | |
| | |
| | |
| | | |
Emitting the metadata for literal strings.
|
|\ \ \
| | |/
| |/|
| | | |
Segfault in this branch is now fixed.
|
| | |
| | |
| | |
| | |
| | | |
All tests passing now. Things are very explicit; before a program can `allocate`
memory, it has to first obtain a segment from the OS using `new-segment`.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
Convert raw literal strings (no escape sequences) to the data segment.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
These are variants of write-byte-buffered and print-byte-buffered respectively
that operate on in-memory `stream`s rather than `buffered-file`s.
They don't operate on files, so we'll avoid using the prefix 'write-'.
|
| | |
| | |
| | |
| | |
| | | |
Operations on buffered-file now always include the word 'buffered'. More
verbose, but hopefully this highlights holes in the library.
|
| |/
|/|
| |
| | |
Converting literal strings into bytes in the data segment.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'm switching to a more exposed working dynamic after chatting with Charles
Saternos (https://github.com/akkartik/mu/pull/19). From now on I'll start
a new branch for big features. Branches won't always pass all their tests.
Phases have gone weeks in the past before being committed all at once.
Developing in a branch gives others the opportunity to see more current
progress and jump in more easily.
Some 'kata' branches for new contributors to start at:
* add two numbers: https://github.com/akkartik/mu/pull/21
* write a string to a byte stram: https://github.com/akkartik/mu/pull/22
* print a number in decimal to a byte stream: https://github.com/akkartik/mu/pull/20
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Pull in a _different_ function than `next-word` (commit 5092) into a shared
file between phases. Let's see how this goes.
|
|
|
|
| |
Don't forget metadata for string literals.
|
| |
|
|
|
|
|
|
| |
Current plan:
$ cat files.subx ... |dquotes |assort |pack |survey |hex > a.out
|
| |
|
| |
|