about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 5037Kartik Agaram2019-03-2910-32/+32
|
* 5036Kartik Agaram2019-03-292-34/+65
|
* 5035Kartik Agaram2019-03-291-1848/+2023
|
* 5034Kartik Agaram2019-03-292-50/+225
|
* 5033Kartik Agaram2019-03-2945-9421/+12048
|
* 5032Kartik Agaram2019-03-291-1/+2
|
* 5031Kartik Agaram2019-03-291-9/+10
|
* 5030 - docs for library functions created so farKartik Agaram2019-03-291-12/+137
|
* 5029Kartik Agaram2019-03-281-49/+119
|
* 5028Kartik Agaram2019-03-281-5/+5
|
* 5027Kartik Agaram2019-03-278-11/+384
| | | | | | | | | Testing conversion of multiple lines in a data segment. Bugs fixed: 1. Stack issues in next-token helpers. 2. Needed to teach next-token to avoid newlines. 3. rewind-stream(line) before passing it to convert-code or convert-instruction.
* 5026Kartik Agaram2019-03-271-4/+4
|
* 5025Kartik Agaram2019-03-271-3/+7
|
* 5024Kartik Agaram2019-03-271-11/+11
|
* 5023Kartik Agaram2019-03-262-29/+422
| | | | | | | | | | | | | | | | Several bugs found after performing multiple loops through convert-data. This has been a general pattern: given how unsafe the x86 'language' is, the regular amount of testing with a single input doesn't really give sufficient confidence. Ever-present is the possibility that I forgot to pop something from the stack, either a spilled register or a local. Calling functions multiple times seems to help detect such bugs. So far I've been doing this extra level of testing implicitly when I build the next higher abstraction. But with `convert-data` the buck stopped, and much painful debugging ensued. One thing that would help is if `write` on streams didn't remain silent on overflow. But we actually need that sometimes, when streams are used as buffers.
* 5022Kartik Agaram2019-03-261-0/+2
|
* 5021 - done packing data segment?Kartik Agaram2019-03-232-14/+176
|
* 5020Kartik Agaram2019-03-232-2/+45
|
* 5019Kartik Agaram2019-03-232-3/+80
|
* 5018Kartik Agaram2019-03-232-7/+74
|
* 5017Kartik Agaram2019-03-222-5/+243
|
* 5016Kartik Agaram2019-03-222-1/+16
|
* 5015Kartik Agaram2019-03-221-4/+2
|
* 5014Kartik Agaram2019-03-212-106/+30
|
* 5013Kartik Agaram2019-03-202-29/+201
|
* 5012Kartik Agaram2019-03-203-2/+61
| | | | Add a bounds-check to `next-word`.
* 5011Kartik Agaram2019-03-205-7/+7
| | | | | | | New convention: compare 'with' for asymmetric comparisons (greater or lesser than), and compare 'and' for symmetric comparisons. Worth making this distinction even though the opcodes are identical; when we compare 'with', the order of operands is significant.
* 5010Kartik Agaram2019-03-201-1/+1
|
* 5009Kartik Agaram2019-03-2010-27/+27
|
* 5008Kartik Agaram2019-03-173-6/+91
|
* 5007Kartik Agaram2019-03-171-3/+3
|
* 5006Kartik Agaram2019-03-162-9/+11
|
* 5005Kartik Agaram2019-03-141-18/+0
|
* 5004Kartik Agaram2019-03-145-5/+5
|
* 5003Kartik Agaram2019-03-131-0/+8
|
* 5002Kartik Agaram2019-03-132-0/+9
| | | | | | | | Bugfix in top-level prototype: commandline args were broken since commit 4266 last June. We still don't have automated tests for commandline args, but we'll add an example program that'll increase the odds of detecting issues there.
* 5001 - drop the :(scenario) DSLKartik Agaram2019-03-1285-11234/+13399
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I've been saying for a while[1][2][3] that adding extra abstractions makes things harder for newcomers, and adding new notations doubly so. And then I notice this DSL in my own backyard. Makes me feel like a hypocrite. [1] https://news.ycombinator.com/item?id=13565743#13570092 [2] https://lobste.rs/s/to8wpr/configuration_files_are_canary_warning [3] https://lobste.rs/s/mdmcdi/little_languages_by_jon_bentley_1986#c_3miuf2 The implementation of the DSL was also highly hacky: a) It was happening in the tangle/ tool, but was utterly unrelated to tangling layers. b) There were several persnickety constraints on the different kinds of lines and the specific order they were expected in. I kept finding bugs where the translator would silently do the wrong thing. Or the error messages sucked, and readers may be stuck looking at the generated code to figure out what happened. Fixing error messages would require a lot more code, which is one of my arguments against DSLs in the first place: they may be easy to implement, but they're hard to design to go with the grain of the underlying platform. They require lots of iteration. Is that effort worth prioritizing in this project? On the other hand, the DSL did make at least some readers' life easier, the ones who weren't immediately put off by having to learn a strange syntax. There were fewer quotes to parse, fewer backslash escapes. Anyway, since there are also people who dislike having to put up with strange syntaxes, we'll call that consideration a wash and tear this DSL out. --- This commit was sheer drudgery. Hopefully it won't need to be redone with a new DSL because I grow sick of backslashes.
* 5000Kartik Agaram2019-03-121-1/+1
| | | | Fix spurious errors in `test_layers` on non-Linux platforms.
* 4999Kartik Agaram2019-03-107-1/+3
| | | | | | | | Fix CI. pack.subx was passing in emulation but not natively. Commit 4954 on Feb 10 was a real dud. First I find I forgot to reclaim space for locals (commit 4996). Now I find I haven't been tracking registers properly either.
* 4998Kartik Agaram2019-03-091-0/+5
| | | | | | | Start running binaries natively in test_layers as well. CI is still broken; need to investigate where my SubX emulation has a discrepancy with native x86.
* 4997Kartik Agaram2019-03-094-32/+40
|
* 4996 - back on pack.subxKartik Agaram2019-03-0811-309/+412
| | | | | | | | | Yet another redrawing of responsibilities between convert and its helpers. In the process I discovered a bug in `write-stream-buffered` which ended up taking me through a detour to extract `browse_trace` into its own tool. It turns out just having long buffers is enough to need browse_trace. Simple operations like clearing a stream swamp a flat view of the trace.
* 4995Kartik Agaram2019-03-061-1/+2
| | | | | Thanks Peter van Hardenberg for causing me to run into this crash (the first time I tried to demo sandboxes in a long time).
* 4994Kartik Agaram2019-03-034-22/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bring back support for incrementally printing the trace to the screen (stderr). I previously thought I didn't need this as long as I'm always incrementally saving to the 'last_run' trace file. But I quickly ran into a use for it: when I want to see a complete trace including switching into the sandbox's trace and back out again. So there are now two separate commandline flags: --trace to save the trace to file --dump to print the trace to screen The former won't handle sandbox traces. But the latter will. I'm deemphasizing --dump in the help message since it should be rarely used. One other situation where I've used stderr in the past is for just raw convenience. But trying to always use the trace was a foolish consistency. Conclusion: a) For simple debugging, feel free to just use cout/cerr. Delete them before committing. b) If the prints get too complex, switch to the trace and browse_trace tool. c) If using nested sandboxes, emit to stderr, redirect to file, and browse_trace. I've gone back and forth on these questions in the past; now I'm trying to be a little more rigorous about capturing reasoning.
* 4993Kartik Agaram2019-03-032-4/+6
| | | | | Fix CI after commit 4987. And track stack depths more correctly inside sandboxes.
* 4992Kartik Agaram2019-02-272-0/+6
|
* 4991Kartik Agaram2019-02-251-3/+4
|
* 4990Kartik Agaram2019-02-251-1/+1
|
* 4989Kartik Agaram2019-02-2531-2038/+2136
|
* 4988Kartik Agaram2019-02-256-0/+0
|