about summary refs log tree commit diff stats
path: root/subx/apps
Commit message (Collapse)AuthorAgeFilesLines
* 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-295-20/+20
|
* 5036Kartik Agaram2019-03-292-34/+65
|
* 5034Kartik Agaram2019-03-292-50/+225
|
* 5029Kartik Agaram2019-03-281-49/+119
|
* 5028Kartik Agaram2019-03-281-5/+5
|
* 5027Kartik Agaram2019-03-277-11/+330
| | | | | | | | | 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
|
* 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.
* 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
|
* 5014Kartik Agaram2019-03-212-106/+30
|
* 5013Kartik Agaram2019-03-202-29/+201
|
* 5012Kartik Agaram2019-03-202-1/+56
| | | | Add a bounds-check to `next-word`.
* 5010Kartik Agaram2019-03-201-1/+1
|
* 5009Kartik Agaram2019-03-204-18/+18
|
* 4999Kartik Agaram2019-03-106-0/+0
| | | | | | | | 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.
* 4996 - back on pack.subxKartik Agaram2019-03-087-233/+383
| | | | | | | | | 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.
* 4988Kartik Agaram2019-02-256-0/+0
|
* 4983Kartik Agaram2019-02-223-39/+39
| | | | | | | Standardize name for 'end of file' sentinel. `eof` seems like an ordinary variable, and `EOF` looks too much like a register (particularly in code like `if (EAX == EOF)`), so we'll go with `Eof`. Consistent capitalization for globals, and constants are globals too.
* 4981 - no, go back to 3 phasesKartik Agaram2019-02-1813-49/+17
| | | | | | | | | | | | | Considering how much trouble a merge phase would be (commit 4978), it seems simpler to just add the extra syntax for controlling the entry point of the generated ELF binary. But I wouldn't have noticed this if I hadn't taken the time to write out the commit messages of 4976 and 4978. Even if we happened to already have linked list primitives built, this may still be a good idea considering that I'm saving quite a lot of code in duplicated entrypoints.
* 4978 - maybe we need another phaseKartik Agaram2019-02-171-0/+36
| | | | | | | | | | | | | | Phase 1: coalesce different instances/fragments for each segment, correctly prepending later fragments. Phase 2: pack bitfields into bytes. Phase 3: compute addresses for labels, compute the ELF header. Phase 4: convert hex bytes to binary. But ugh, phase 1 involves linked lists and I'll have to go down a rabbit hole building up more standard library functions.
* 4975 - new plan for Phase 2Kartik Agaram2019-02-161-4/+36
| | | | | | So far I've been assuming that I'd just statelessly convert each line in a .subx file. But over the past week or so of constant interruptions I gradually realized that code and data need different parsers.
* 4973Kartik Agaram2019-02-154-29/+29
| | | | | Support immediate operands in the data segment in all the ways we support them in the code segment.
* 4969Kartik Agaram2019-02-151-2/+2
|
* 4968Kartik Agaram2019-02-146-0/+0
|
* 4966Kartik Agaram2019-02-142-12/+10
| | | | Standardize how we show register allocation decisions.
* 4965Kartik Agaram2019-02-146-0/+0
|
* 4961Kartik Agaram2019-02-1411-48/+48
|
* 4960Kartik Agaram2019-02-132-8/+6
| | | | | I think I don't need to special-case packing for different segments. That should massively cut down on the number of tests.
* 4956Kartik Agaram2019-02-112-1/+69
|
* 4955Kartik Agaram2019-02-107-20/+373
| | | | Starting to build up Phase 2 (apps/pack) out of recently designed primitives.
* 4954Kartik Agaram2019-02-106-0/+0
|
* 4952Kartik Agaram2019-02-056-0/+0
|
* 4951Kartik Agaram2019-02-036-0/+0
| | | | Cleaner way to compare streams in tests.
* 4949Kartik Agaram2019-02-026-0/+0
|
* 4948Kartik Agaram2019-02-022-6/+341
| | | | | This seems like the final helper we need for Phase 2. Now to build the business logic itself.
* 4947Kartik Agaram2019-02-012-0/+2
| | | | | | | | Bugfix: has-metadata? was corrupting registers Seems uneconomic to write tests for stuff like this. Assembly is just not the right layer to try to come up with a general solution or process. Keep running your code and wait to find signs of breakage.
* 4946Kartik Agaram2019-02-012-2/+66
|
* 4945Kartik Agaram2019-02-016-0/+0
|