about summary refs log tree commit diff stats
path: root/subx/apps/dquotes
Commit message (Collapse)AuthorAgeFilesLines
* 5461 - SubX is now self-hosting!Kartik Agaram2019-07-241-0/+0
| | | | | All extant SubX programs generate identical binaries using either the C++ or the self-hosted SubX translators.
* 5460Kartik Agaram2019-07-241-0/+0
| | | | | | | | | | | A little more resizing of buffers. apps/hex.subx is now building an identical binary. I'm now aborting on allocation failures. That requires disabling a couple of tests. (I'm not quite confident enough of this decision to delete them outright.) I want to treat all segfaults as bugs, and machine code is no place to add boilerplate checks for return values of standard library functions.
* 5455Kartik Agaram2019-07-221-0/+0
| | | | | Clean up. All apps now translating correctly except for the phases of the self-hosted translator. Next step: SubX-in-SubX in SubX-in-SubX.
* 5443 - standard library is now self-hostedKartik Agaram2019-07-221-0/+0
| | | | | | | Translates 5k lines of input in 26 seconds. I'm not sure why I need to grow the label table. It was already 512 entries long, and I'm only using 373 so far.
* 5442Kartik Agaram2019-07-221-0/+0
| | | | | | | | | We can now translate layers 49-72 using the self-hosted translator. The translator has now demonstrated translation over 4k lines. Most verbose phase output is 325KB, even if the final binary is 15KB. Emulation is too slow now, so I'm back to debug by print on a Linux machine.
* 5438 - raise error on uppercase hexKartik Agaram2019-07-211-0/+0
| | | | | | | | | | | | | | | | | | We can now translate layers 49-56 using the self-hosted translator (`translate` and `ntranslate`). As a follow-up to commit 5404, the self-hosted translator is a little more strict than the C++ translator in 3 places: a) All .subx files must define a data segment. b) All .subx files must define an `Entry` label. c) All numbers must be in *lowercase* hex. In all cases, where programs work with the C++ translator but violate the self-hosted translator's assumptions, we must make sure we raise errors rather than silently emit bad code.
* 5437Kartik Agaram2019-07-211-0/+0
| | | | Break a dependency from `print-int32` to `from-hex-char`.
* 5436 - support newlines in dquotesKartik Agaram2019-07-211-0/+0
|
* 5434Kartik Agaram2019-07-211-0/+0
|
* 5433Kartik Agaram2019-07-211-0/+0
|
* 5429Kartik Agaram2019-07-201-0/+0
| | | | Fix CI.
* 5426Kartik Agaram2019-07-201-0/+0
|
* 5422Kartik Agaram2019-07-191-0/+0
| | | | | Various buffer sizes needed to be grown for ex11. But the next bottleneck is that we need to code-generate run-tests.
* 5408Kartik Agaram2019-07-161-0/+0
| | | | | | | | | | | | Bugfix ten: type error in `convert`. I was calling `rewind-stream` on a `buffered-file`. examples/ex1 is now just one nibble off the canonical. I *have* found one missing feature in the self-hosted translator, though: dquotes doesn't support newlines in strings, even though the C++ version does. dquotes parses them right, but the value initialized in the data segment is wrong.
* .Kartik Agaram2019-07-131-0/+0
|
* .Kartik Agaram2019-07-131-0/+0
|
* start distinguishing table lookups from insertsKartik Agaram2019-07-101-0/+0
|
* zero out new rows returned by get-or-insertKartik Agaram2019-07-101-0/+0
|
* .Kartik Agaram2019-07-101-0/+0
| | | | | Another batch of incorrectly signed conditional jumps. (Follow-up to commit 5180.)
* mostly done with emit-outputKartik Agaram2019-07-091-0/+0
| | | | | Some nooks and crannies will need light final debugging with xxd, but emit-hex-output covers most of the logic.
* pull a couple more functions into subx-commonKartik Agaram2019-07-081-0/+0
|
* .Kartik Agaram2019-07-081-0/+0
| | | | | | Move test slice variables out of the data segment and close to their usages. Makes tests a little easier to read even if we spend a few more instructions each time.
* preserve truthiness of non-booleansKartik Agaram2019-07-081-0/+0
| | | | | Everywhere we check if something is true, we check it by comparing against 0, not 1.
* .Kartik Agaram2019-07-081-0/+0
| | | | style tweaks
* .Kartik Agaram2019-07-071-0/+0
| | | | reorg in subx-common.subx
* move `is-label?` to `subx-common`Kartik Agaram2019-07-071-0/+0
|
* Merge branch 'master' into surveyKartik Agaram2019-07-031-0/+0
|\ | | | | | | | | | | High time we pulled in the final changes to dquotes. In the process we fix one recently introduced duplicate symbol.
| * 5218Kartik Agaram2019-05-221-0/+0
| |
| * Merge branch 'dquotes-3'Kartik Agaram2019-05-201-0/+0
|/|
| * clean up a redundant primitiveKartik Agaram2019-05-201-0/+0
| |
| * .Kartik Agaram2019-05-201-0/+0
| |
| * dquotes now doneKartik Agaram2019-05-201-0/+0
| | | | | | | | | | 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-201-0/+0
| | | | | | | | | | | | 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-201-0/+0
| | | | | | | | As expected, almost all tests now passing.
| * support string literals in emit-metadataKartik Agaram2019-05-201-0/+0
| |
| * move local variable up following conventionsKartik Agaram2019-05-191-0/+0
| | | | | | | | | | More importantly, don't mix reclaiming locals with discarding args after a call.
| * convention: source arg in ESIKartik Agaram2019-05-191-0/+0
| | | | | | | | I _think_ we'll need to use it below. But may be wrong.
| * handle words with just metadataKartik Agaram2019-05-191-0/+0
| | | | | | | | | | 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-191-0/+0
| |
| * skip-string: fix a bug in computing in->readKartik Agaram2019-05-181-0/+0
| | | | | | | | I was missing a test to catch this.
| * minor style cleanupKartik Agaram2019-05-181-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | 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-181-0/+0
| |
| * another failing testKartik Agaram2019-05-171-0/+0
| | | | | | | | This one should make `emit-metadata` string-aware.
| * dquotes: failing tests for parsing string literalsKartik Agaram2019-05-161-0/+0
| | | | | | | | Plan: https://github.com/akkartik/mu/commit/d4a244268841e8e912c98f4587095b701aa5c292#commitcomment-33558279
* | another phase that supports the new segment syntaxKartik Agaram2019-05-171-0/+0
| | | | | | | | | | | | | | | | | | | | Current state: ✓ hex.subx (no changes required) survey.subx ✓ pack.subx (fixed here) assort.subx ✓ dquotes.subx (has failing tests for other reasons)
* | 5181Kartik Agaram2019-05-171-0/+0
|/ | | | Test for the bugfix of commit 2f49a27504.
* 5180Kartik Agaram2019-05-161-0/+0
| | | | | | | 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-151-0/+0
| | | | | | | | | | | | | | | | 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-141-0/+0
|
* fix a stale register value in dquotes.subxKartik Agaram2019-05-141-0/+0
| | | | | | | | | | | | | 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 :(