about summary refs log tree commit diff stats
path: root/subx/apps
Commit message (Collapse)AuthorAgeFilesLines
* clean up a redundant primitiveKartik Agaram2019-05-202-84/+4
|
* .Kartik Agaram2019-05-202-6/+6
|
* dquotes now doneKartik Agaram2019-05-202-41/+162
| | | | | We need yet another helper for computing the lengths of strings, while checking for escape sequences.
* standardize the loop in skip-string-in-sliceKartik Agaram2019-05-202-5/+8
| | | | | | We're going to be cloning it for the length computation. Anytime we do something non-standard it's invariably short-lived.
* support string literals in emit-string-literal-dataKartik Agaram2019-05-202-11/+19
| | | | As expected, almost all tests now passing.
* support string literals in emit-metadataKartik Agaram2019-05-202-10/+31
|
* move local variable up following conventionsKartik Agaram2019-05-192-6/+11
| | | | | More importantly, don't mix reclaiming locals with discarding args after a call.
* convention: source arg in ESIKartik Agaram2019-05-192-8/+15
| | | | I _think_ we'll need to use it below. But may be wrong.
* handle words with just metadataKartik Agaram2019-05-192-3/+66
| | | | | Kind of a pathological case, but makes our loop follow a standard format, and provides some error checking at low cost.
* minor style tweaks for emit-metadataKartik Agaram2019-05-192-40/+27
|
* minor style cleanupKartik Agaram2019-05-181-20/+7
|
* skip-string: fix a bug in computing in->readKartik Agaram2019-05-182-4/+48
| | | | I was missing a test to catch this.
* minor style cleanupKartik Agaram2019-05-182-34/+17
| | | | | | | | | | | | 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.
* add a bounds checkKartik Agaram2019-05-182-1/+38
|
* implement skip-string-in-slice and reimplement skip-string in terms of ↵nc2019-05-181-37/+75
| | | | skip-string-in-slice
* implemented skip-stringnc2019-05-181-0/+51
|
* another failing testKartik Agaram2019-05-172-0/+90
| | | | This one should make `emit-metadata` string-aware.
* dquotes: failing tests for parsing string literalsKartik Agaram2019-05-162-0/+284
| | | | Plan: https://github.com/akkartik/mu/commit/d4a244268841e8e912c98f4587095b701aa5c292#commitcomment-33558279
* 5180Kartik Agaram2019-05-1610-43/+24
| | | | | | | 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.
* complete the skeleton of dquotes.subxKartik Agaram2019-05-159-42/+98
| | | | | | | | | | | | | | | | 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.
* .Kartik Agaram2019-05-142-9/+9
|
* fix a stale register value in dquotes.subxKartik Agaram2019-05-142-1/+2
| | | | | | | | | | | | | 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 :(
* Merge branch 'dquotes' into dquotes-1Kartik Agaram2019-05-139-1/+230
|\ | | | | | | | | dquotes.subx is now segfaulting after this merge. Seems to be trying to use addresses from the old stack.
| * Merge branch 'master' into dquotesKartik Agaram2019-05-137-0/+0
| |\
| | * start using the new carry flagKartik Agaram2019-05-137-0/+0
| | | | | | | | | | | | | | | Skimping on tests; the code changes seem pretty trivial. Will this fix CI?!
| | * 5156 - error-checking on writes to fileKartik Agaram2019-05-117-0/+0
| | | | | | | | | | | | | | | | | | | | | 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?
| | * 5154Kartik Agaram2019-05-117-0/+0
| | | | | | | | | | | | | | | Bugfix: I'd neglected to update the input stream's state when natively writing a stream to file.
| | * 5153Kartik Agaram2019-05-117-0/+0
| | |
| * | Merge branch 'master' into dquotesKartik Agaram2019-05-1011-23/+99
| |\| | | | | | | | | | apps/dquotes still segfaulting on native run.
| * | implemented emit-metadatanc2019-05-041-1/+57
| | |
| * | failing tests for part 2/2 of dquotesKartik Agaram2019-04-291-0/+173
| | | | | | | | | | | | Emitting the metadata for literal strings.
* | | Merge branch 'master' into dquotes-1Kartik Agaram2019-05-1010-23/+99
|\ \ \ | | |/ | |/| | | | Segfault in this branch is now fixed.
| * | 5151 - use mmap everywhere we need a heapKartik Agaram2019-05-1011-23/+99
| | | | | | | | | | | | | | | 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`.
| * | 5145Kartik Agaram2019-05-047-0/+0
| | |
| * | 5135Kartik Agaram2019-05-047-0/+0
| | |
* | | dquotes - emit data segment - no escapesKartik Agaram2019-05-032-1/+138
| | | | | | | | | | | | Convert raw literal strings (no escape sequences) to the data segment.
* | | new primitives: append-byte, append-byte-hexKartik Agaram2019-05-027-0/+0
| | | | | | | | | | | | | | | | | | | | | 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-'.
* | | standardize function namesKartik Agaram2019-05-0215-66/+67
| | | | | | | | | | | | | | | Operations on buffered-file now always include the word 'buffered'. More verbose, but hopefully this highlights holes in the library.
* | | failing tests for part 1/2 of dquotesKartik Agaram2019-04-291-1/+274
| |/ |/| | | | | Converting literal strings into bytes in the data segment.
* | new failing test in dquotes phaseKartik Agaram2019-04-282-1/+259
|/ | | | | | | | | | | | | | | 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
* 5127Kartik Agaram2019-04-261-1/+1
|
* 5124Kartik Agaram2019-04-232-2/+2
|
* 5123Kartik Agaram2019-04-231-4/+0
|
* 5118 - convert int to stringKartik Agaram2019-04-238-0/+0
|
* 5115Kartik Agaram2019-04-222-1/+1
|
* 5112Kartik Agaram2019-04-192-1/+63
|
* 5108Kartik Agaram2019-04-182-10/+10
|
* 5107Kartik Agaram2019-04-182-4/+281
|
* 5106Kartik Agaram2019-04-173-2/+147
|
* 5105Kartik Agaram2019-04-167-388/+200
| | | | | Pull in a _different_ function than `next-word` (commit 5092) into a shared file between phases. Let's see how this goes.