about summary refs log tree commit diff stats
path: root/subx
Commit message (Collapse)AuthorAgeFilesLines
* 5057Kartik Agaram2019-04-051-1/+35
|
* 5056Kartik Agaram2019-04-057-2/+144
|
* 5055 - new phase: merge fragment of segmentsKartik Agaram2019-04-041-0/+1102
|
* 5054Kartik Agaram2019-04-032-4/+3
|
* 5053Kartik Agaram2019-04-039-154/+266
| | | | | | write-stream-buffered isn't a clean abstraction. Ignoring the 'read' index of a stream is a hack. It's just saving us the trouble of a rewind-stream. So make it a helper of pack.subx rather than part of the standard library.
* 5052Kartik Agaram2019-04-022-99/+127
|
* 5051 - done compiling SIB operandsKartik Agaram2019-04-022-3/+671
| | | | Done with pack.subx?!
* 5050 - compile ModR/M operandsKartik Agaram2019-04-023-3/+809
|
* 5049Kartik Agaram2019-04-021-100/+196
|
* 5048Kartik Agaram2019-04-011-12/+12
|
* 5047Kartik Agaram2019-04-011-3/+3
|
* 5046Kartik Agaram2019-04-012-72/+52
|
* 5045Kartik Agaram2019-04-011-8/+8
|
* 5044Kartik Agaram2019-04-012-3/+248
|
* 5043Kartik Agaram2019-04-011-0/+3
|
* 5042Kartik Agaram2019-03-312-33/+35
|
* 5041 - compile displacement operandsKartik Agaram2019-03-312-13/+565
|
* 5040 - compile immediate operandsKartik Agaram2019-03-302-16/+556
|
* 5039 - compile opcodesKartik Agaram2019-03-302-6/+1011
|
* 5038Kartik Agaram2019-03-292-11/+181
|
* 5037Kartik Agaram2019-03-2910-32/+32
|
* 5036Kartik Agaram2019-03-292-34/+65
|
* 5034Kartik Agaram2019-03-292-50/+225
|
* 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
|
* 5006Kartik Agaram2019-03-161-0/+1
|
* 5001 - drop the :(scenario) DSLKartik Agaram2019-03-1219-2052/+3144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.