about summary refs log tree commit diff stats
path: root/apps
Commit message (Collapse)AuthorAgeFilesLines
* .Kartik Agaram2019-08-252-1/+183
|
* Merge branch 'master' into desugarKartik Agaram2019-08-252-0/+62
|\
| * 5522 - example app: random number streamKartik Agaram2019-08-202-0/+62
| | | | | | | | Turns out Mu's kernel isn't populating /dev/random correctly.
* | desugar: more integration testsKartik Agaram2019-08-252-1/+206
| |
* | desugar: code-generation seems completeKartik Agaram2019-08-252-5/+291
| |
* | desugar: parsing seems completeKartik Agaram2019-08-252-37/+420
| |
* | parsing *(reg-disp)Kartik Agaram2019-08-252-0/+66
| |
* | parsing *(reg+reg)Kartik Agaram2019-08-252-21/+150
| | | | | | | | | | | | | | | | | | Turns out there's an ambiguity even in this simple one-line language: when you see 'base+' you don't know whether the next token is the index or displacement. (Whereas a '-' would be unambiguous but is still not handled.) Fixing this ambiguity adds 15 instructions worth of complexity.
* | parsing *(reg+disp)Kartik Agaram2019-08-243-8/+549
| |
* | .Kartik Agaram2019-08-241-1/+1
| |
* | integration tests for desugaring indirect modeKartik Agaram2019-08-242-2/+211
| | | | | | | | They caught a logic error.
* | integration tests for desugaring direct modeKartik Agaram2019-08-242-0/+212
| |
* | use the results of parsing in emit-indirect-modeKartik Agaram2019-08-242-60/+33
| |
* | parsing *(reg)Kartik Agaram2019-08-242-0/+121
| |
* | build out all variants for skipping whitespaceKartik Agaram2019-08-2411-0/+0
| | | | | | | | skip {whitespace, non-whitespace} x {from stream, from slice}
* | .Kartik Agaram2019-08-231-0/+68
| | | | | | | | This is pretty complex, but I may not need any more registers.
* | .Kartik Agaram2019-08-232-4/+14
| |
* | .Kartik Agaram2019-08-232-4/+12
| | | | | | | | | | Some reorg as I realize I may have painted myself into a corner in this function. I have no registers left for the actual parsing.
* | parsing *regKartik Agaram2019-08-232-2/+102
| | | | | | | | Isn't used yet, but baby steps.
* | another error messageKartik Agaram2019-08-232-1/+64
| |
* | .Kartik Agaram2019-08-231-3/+3
| |
* | lexing complex expressions inside '*(...)'Kartik Agaram2019-08-233-21/+442
| |
* | couple of helpers for parsing expressions in parensKartik Agaram2019-08-222-0/+330
| |
* | .Kartik Agaram2019-08-161-2/+2
| |
* | sketch of a plan to implement indirect modeKartik Agaram2019-08-162-2/+60
| |
* | desugar: code-generate *regKartik Agaram2019-08-162-1/+244
| |
* | plan for supporting indirect modeKartik Agaram2019-08-162-22/+28
| | | | | | | | | | | | | | | | | | | | | | It may superficially seem like there's a simpler approach: - emit '3/mod' or '0/mod' depending on whether the character is '%' or '*' - increment the start of word-slice - look up the register and emit the appropriate /rm32 But that won't work for 1/mod or 2/mod. We're doing a little bit of upfront planning.
* | .Kartik Agaram2019-08-161-4/+4
| |
* | .Kartik Agaram2019-08-161-1/+1
| |
* | add desugar to CIKartik Agaram2019-08-131-0/+0
| |
* | done implementing all variants of 'get'Kartik Agaram2019-08-1310-0/+0
| |
* | done with get-or-stopKartik Agaram2019-08-1310-0/+0
| |
* | half-done testing get-or-stopKartik Agaram2019-08-1310-0/+0
| | | | | | | | | | | | Probably not needed for desugar; I'm just working through what we may replace the calls to 'get-slice' with if and when we decide to start focusing error messages and so writing tests for them.
* | standardize test input/output/error streamsKartik Agaram2019-08-1314-170/+0
| |
* | .Kartik Agaram2019-08-1310-0/+0
| |
* | get desugar working on the commandlineKartik Agaram2019-08-133-7/+54
| |
* | .Kartik Agaram2019-08-1311-0/+0
| |
* | new variant: maybe-get-sliceKartik Agaram2019-08-1311-0/+0
| |
* | new variant: maybe-get returns null on failureKartik Agaram2019-08-1211-0/+0
| |
* | better error message when get abortsKartik Agaram2019-08-1213-9/+13
| |
* | extract table functions into their own layerKartik Agaram2019-08-115-921/+0
| |
* | table-based register conversionKartik Agaram2019-08-012-148/+176
| | | | | | | | | | | | | | Requires a change to the C++ translator: support string literals in all segments, not just the code segment. (The self-hosted translator already had this.)
* | .Kartik Agaram2019-08-012-26/+28
| | | | | | | | | | First step to cleaning up `desugar-register`: extract the common '%' to register literals.
* | desugar: code-generate %regKartik Agaram2019-07-312-25/+25
| | | | | | | | | | We're no longer just emitting the register code. We emit all arguments with appropriate metadata.
* | .Kartik Agaram2019-07-311-1/+8
| |
* | Merge branch 'master' into desugarKartik Agaram2019-07-3110-11/+11
|\|
| * 5499Kartik Agaram2019-07-3110-11/+11
| |
* | desugar: clean up top-level `convert`Kartik Agaram2019-07-314-43/+84
| | | | | | | | | | | | | | | | | | Model it on `dquotes` rather than `pack`, since it needs almost zero state across words. Manual testing: $ echo 'ab %eax' |subx run apps/desugar ab 0
* | Merge branch 'master' into desugarKartik Agaram2019-07-281-0/+378
|/
* 5485 - promote SubX to top-levelKartik Agaram2019-07-2722-0/+21254