about summary refs log tree commit diff stats
path: root/subx/apps/assort
Commit message (Collapse)AuthorAgeFilesLines
* 5485 - promote SubX to top-levelKartik Agaram2019-07-271-0/+0
|
* 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
| |
* | .Kartik Agaram2019-07-031-0/+0
| | | | | | | | Get 'assort.subx' working again.
* | some primitives for emitting tracesKartik Agaram2019-07-011-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Kinda hacky, but might scale enough for machine code. This was really hard to debug. Single tests passed, but when I ran all tests I got breakage because tests long before (from the 056trace layer) were not cleaning up properly. My instinct was to call clear-stream on Trace-stream, which was wrong (the trace didn't have the wrong contents, it was literally a bad object). It was also wrong in a counter-productive way: calling clear-stream on a real Trace stream (which is the size of a page of memory) takes a long time in emulated mode.
* | .Kartik Agaram2019-07-011-0/+0
| |
* | unsigned comparison for addresses in more placesKartik Agaram2019-07-011-0/+0
| |
* | initial draft of solution for 'compute-addresses'Kartik Agaram2019-06-281-0/+0
| | | | | | | | No trace statements yet, so we don't know if it works.
* | .Kartik Agaram2019-06-281-0/+0
| |
* | .Kartik Agaram2019-06-281-0/+0
| | | | | | | | Clean up CI.
* | .Kartik Agaram2019-06-081-0/+0
| |
* | Fix stale `initialize-trace-stream`Kartik Agaram2019-06-081-0/+0
| |
* | .Kartik Agaram2019-06-081-0/+0
| |
* | .Kartik Agaram2019-06-081-0/+0
| | | | | | | | Simplify `string-equal`.
* | start fleshing out trace support some moreKartik Agaram2019-06-051-0/+0
| | | | | | | | | | I think the path to readable tests for survey.subx passes through white-box tests.
* | .Kartik Agaram2019-05-271-0/+0
| | | | | | | | | | | | 'get-or-insert-stream' is now the more generic 'get-or-insert' that can handle tables of any value type. But callers have to be careful to cast values to the right type.
* | .Kartik Agaram2019-05-261-0/+0
| |
* | new primitive: check-array-equalKartik Agaram2019-05-261-0/+0
| |
* | new primitive: parse-array-of-intsKartik Agaram2019-05-251-0/+0
| | | | | | | | | | | | | | | | | | | | Mostly for tests. For every new type we want to compare in a test, we're now going to start using some primitive that can parse its value from string. In this manner we can get syntax for literals in machine code. Open question: parsing aggregates of aggregates. Like an array of structs. This is the first time we allocate from the heap in standard library tests. So we now need to start initializing the heap in all our apps.
* | .Kartik Agaram2019-05-251-0/+0
| | | | | | | | | | hoist 'Heap' variable into the std library in anticipation of the parse-array-of-ints primitive.
* | new primitive: array-equal?Kartik Agaram2019-05-251-0/+0
| |
* | new primitive for tests: check-string-equalKartik Agaram2019-05-251-0/+0
|/
* 5189Kartik Agaram2019-05-181-0/+0
| | | | Fix CI.
* support the new segment syntax in assort.subxKartik Agaram2019-05-171-0/+0
| | | | | | | | | | | Now all implemented phases of the SubX translator in SubX support the new syntax: ✓ hex.subx (no changes required) survey.subx (not yet started) ✓ pack.subx (fixed here) ✓ assort.subx ✓ dquotes.subx (has failing tests for other reasons)