about summary refs log tree commit diff stats
path: root/subx/apps/survey
Commit message (Collapse)AuthorAgeFilesLines
* survey.subx now passing all testsKartik Agaram2019-07-131-0/+0
|
* `test-convert-computes-addresses` bugfix sixKartik Agaram2019-07-131-0/+0
| | | | | | | | | | | | | | | map of how far we've gotten by now (functions with '*' independently tested): ✓ compute-offsets* ✓ compute-addresses* ✓ emit-output ✓ emit-headers ✓ emit-elf-header ✓ emit-hex-array* ✓ first emit-elf-program-header-entry ✓ emit-hex-array* ? second emit-elf-program-header-entry emit-hex-array* emit-segments*
* fixed fifth bug, hit sixthKartik Agaram2019-07-131-0/+0
|
* .Kartik Agaram2019-07-131-0/+0
| | | | Clean up.
* fixed fourth bug, hit fifthKartik Agaram2019-07-131-0/+0
|
* fixed one bug, hit anotherKartik Agaram2019-07-121-0/+0
| | | | | | | | | | I carefully logged the segment a label is declared in but forgot to actually save it in the table. This has been a theoretic concern for some time, but I've never seen it actually happen until now. SubX is just too low level. Now I get past the first two phases but code generation fails to find the 'Entry' label.
* compute-offsets test now passingKartik Agaram2019-07-121-0/+0
| | | | The final integration test-convert-computes-addresses is still failing.
* one failure remaining in test-compute-offsetsKartik Agaram2019-07-111-0/+0
| | | | | | | | | 'curr-segment-name' is now a string, and it's stored in a register rather than a global. Paradoxically, this leaks *less* than before. Before, every call to `get-or-insert-slice` leaked memory. Now we leak one string for every new segment. Which is trivial.
* .Kartik Agaram2019-07-101-0/+0
|
* .Kartik Agaram2019-07-101-0/+0
| | | | I think we're calling the wrong variant here.
* 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.)
* .Kartik Agaram2019-07-101-0/+0
| | | | Fix infinite loop in the 2 remaining failing tests; now it's a segfault.
* .Kartik Agaram2019-07-101-0/+0
|
* 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.
* done with emit-segmentsKartik Agaram2019-07-091-0/+0
| | | | Only failures now are the first two tests in survey.subx.
* clean up after a few callsKartik Agaram2019-07-091-0/+0
|
* preserve truthiness of non-booleansKartik Agaram2019-07-091-0/+0
| | | | | Everywhere we check if something is true, we check it by comparing against 0, not 1.
* this looks like a bugKartik Agaram2019-07-091-0/+0
| | | | | But of course the test is still infinite-looping so we can't be sure. I'm still just reading the code.
* .Kartik Agaram2019-07-091-0/+0
|
* move 'segment-start' to a global variable as wellKartik Agaram2019-07-091-0/+0
| | | | | It's ugly to have function locals in global variables, but we'll figure out later how to deal with it.
* there's a variant of get-or-insert for slicesKartik Agaram2019-07-091-0/+0
| | | | | | The compute-offsets test now goes into an infinite loop :( But I figure all these changes are useful anyway, we should just debug the error separately.
* switch to global HeapKartik Agaram2019-07-091-0/+0
|
* colocate compute-offsets with its globalsKartik Agaram2019-07-081-0/+0
|
* 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
| | | | DRY out compute-width and compute-width-from-slice.
* build `num-bytes`Kartik Agaram2019-07-071-0/+0
|
* move `is-label?` to `subx-common`Kartik Agaram2019-07-071-0/+0
|
* new failing test: emit-segmentsKartik Agaram2019-07-071-0/+0
| | | | Now the only piece I plan to not write tests for is emit-headers.
* more progress in compute-offsetnc2019-07-041-0/+0
|
* .Kartik Agaram2019-07-041-0/+0
| | | | | | Fix a couple of syntax errors. survey.subx still failing tests.
* add is-label blocknc2019-07-031-0/+0
|
* subx/survey: now computing label addressesKartik Agaram2019-07-021-0/+0
|
* .Kartik Agaram2019-07-021-0/+0
| | | | | subx/survey/compute-addresses: Now computing segment starting addresses correctly.
* .Kartik Agaram2019-07-021-0/+0
|
* .Kartik Agaram2019-07-011-0/+0
| | | | Now tracing segment names correctly.
* .Kartik Agaram2019-07-011-0/+0
|
* .Kartik Agaram2019-07-011-0/+0
| | | | | | Make `compute-addresses` less clever. Stop striding from the middle of one row to the next. This way we'll also obviate the need for indexing backwards from a pointer in the next commit.
* 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
| | | | | Flesh out final test some more. We also now have a new family of primitives for writing non-strings to input streams in tests.
* pseudocode skeletons for all functionsKartik Agaram2019-06-131-0/+0
|
* flesh out survey testsKartik Agaram2019-06-121-0/+0
|
* .Kartik Agaram2019-06-081-0/+0
|