about summary refs log tree commit diff stats
path: root/subx
Commit message (Collapse)AuthorAgeFilesLines
* fixed fifth bug, hit sixthKartik Agaram2019-07-132-5/+6
|
* .Kartik Agaram2019-07-132-170/+0
| | | | Clean up.
* fixed fourth bug, hit fifthKartik Agaram2019-07-132-50/+289
|
* fixed third bug, hit fourthKartik Agaram2019-07-131-1/+1
|
* .Kartik Agaram2019-07-132-190/+0
| | | | Clean up.
* fixed second bug, hit thirdKartik Agaram2019-07-133-6/+293
|
* .Kartik Agaram2019-07-133-41/+39
|
* fixed one bug, hit anotherKartik Agaram2019-07-122-58/+87
| | | | | | | | | | 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.
* .Kartik Agaram2019-07-122-2/+70
| | | | | | | | Snapshot at a random moment, showing a new debugging trick: hacking on the C++ level to dump memory contents on specific labels. For some reason label 'x' doesn't have a segment assigned by the time we get to compute-addresses.
* .Kartik Agaram2019-07-122-4/+44
| | | | | | | Continuation of commit 6f6d458fcd to support unsigned comparisons in 32-bit jumps. Once again, no tests.
* .Kartik Agaram2019-07-121-6/+6
|
* .Kartik Agaram2019-07-121-25/+25
|
* compute-offsets test now passingKartik Agaram2019-07-122-49/+97
| | | | The final integration test-convert-computes-addresses is still failing.
* the pseudocode is pretty long, so add an outlineKartik Agaram2019-07-121-2/+11
|
* rearrange compute-offsets casesKartik Agaram2019-07-121-73/+74
| | | | | Now they're in the order you expect to see them at runtime: first you see a segment header, then you see labels.
* .Kartik Agaram2019-07-121-26/+26
| | | | move trace dump to before checks
* .Kartik Agaram2019-07-111-1/+0
|
* one failure remaining in test-compute-offsetsKartik Agaram2019-07-112-123/+291
| | | | | | | | | '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-111-12/+12
|
* .Kartik Agaram2019-07-111-7/+5
| | | | | Pseudocode is a little more truthful now about what variables are on the stack.
* the problem: curr-segment-name is staleKartik Agaram2019-07-111-3/+126
| | | | | | | It's a slice into the 'line' stream. But we want to preserve the current segment name across lines. Let's leak some memory.
* .Kartik Agaram2019-07-111-14/+14
| | | | Make the trace a little more consistent.
* label offset computation still has a bugKartik Agaram2019-07-111-6/+7
| | | | | | I changed the test a little to make it obvious. Basically there's no way we can compute the segment offset correctly without knowing the segment name in the previous assertion.
* revert compute-offsets to segment-relative offsetsKartik Agaram2019-07-111-7/+7
| | | | | | | | The pseudocode was a mess here :/ I was saving the segment-offset but tracing the file-offset. Segments need file offsets (to tweak their starting address). Labels need segment offsets (to add to segment starting address).
* .Kartik Agaram2019-07-111-2/+3
|
* move discard instruction to correct spotnc2019-07-111-2/+2
|
* updated test so 'x' is relative to file-offset not segment offsetnc2019-07-111-3/+3
|
* made test 2 passnc2019-07-111-9/+11
|
* .Kartik Agaram2019-07-102-3/+7
|
* .Kartik Agaram2019-07-101-7/+7
|
* .Kartik Agaram2019-07-101-0/+2
|
* .Kartik Agaram2019-07-102-2/+2
| | | | I think we're calling the wrong variant here.
* start distinguishing table lookups from insertsKartik Agaram2019-07-106-12/+382
|
* zero out new rows returned by get-or-insertKartik Agaram2019-07-1011-0/+103
|
* finally tracked down binary character in tracesKartik Agaram2019-07-101-1/+1
| | | | This was why grep required the `-a` argument in vimrc.vim.
* .Kartik Agaram2019-07-107-5/+5
| | | | | Another batch of incorrectly signed conditional jumps. (Follow-up to commit 5180.)
* .Kartik Agaram2019-07-102-1/+1
| | | | Fix infinite loop in the 2 remaining failing tests; now it's a segfault.
* .Kartik Agaram2019-07-102-8/+5
|
* .Kartik Agaram2019-07-091-37/+69
|
* mostly done with emit-outputKartik Agaram2019-07-096-6/+267
| | | | | 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-092-33/+532
| | | | Only failures now are the first two tests in survey.subx.
* bug: null address messing up instruction decodeKartik Agaram2019-07-091-2/+7
| | | | Leads to a bad error message.
* .Kartik Agaram2019-07-092-7/+1
| | | | | | Stop dumping huge traces on error. We can always rerun with --trace. Though perhaps we should just dump the trace automatically on error. Not bothering thinking about that right now.
* .Kartik Agaram2019-07-091-26/+26
|
* .Kartik Agaram2019-07-091-0/+1
|
* .Kartik Agaram2019-07-091-2/+2
|
* .Kartik Agaram2019-07-091-1/+1
|
* clean up after a few callsKartik Agaram2019-07-092-4/+9
|
* preserve truthiness of non-booleansKartik Agaram2019-07-092-16/+12
| | | | | Everywhere we check if something is true, we check it by comparing against 0, not 1.
* this looks like a bugKartik Agaram2019-07-092-1/+1
| | | | | But of course the test is still infinite-looping so we can't be sure. I'm still just reading the code.