Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | parsing *(reg-disp) | Kartik Agaram | 2019-08-25 | 1 | -0/+0 |
| | |||||
* | parsing *(reg+reg) | Kartik Agaram | 2019-08-25 | 1 | -0/+0 |
| | | | | | | | | | 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 Agaram | 2019-08-24 | 1 | -0/+0 |
| | |||||
* | integration tests for desugaring indirect mode | Kartik Agaram | 2019-08-24 | 1 | -0/+0 |
| | | | | They caught a logic error. | ||||
* | integration tests for desugaring direct mode | Kartik Agaram | 2019-08-24 | 1 | -0/+0 |
| | |||||
* | use the results of parsing in emit-indirect-mode | Kartik Agaram | 2019-08-24 | 1 | -0/+0 |
| | |||||
* | parsing *(reg) | Kartik Agaram | 2019-08-24 | 1 | -0/+0 |
| | |||||
* | build out all variants for skipping whitespace | Kartik Agaram | 2019-08-24 | 1 | -0/+0 |
| | | | | skip {whitespace, non-whitespace} x {from stream, from slice} | ||||
* | . | Kartik Agaram | 2019-08-23 | 1 | -0/+0 |
| | |||||
* | . | Kartik Agaram | 2019-08-23 | 1 | -0/+0 |
| | | | | | 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 *reg | Kartik Agaram | 2019-08-23 | 1 | -0/+0 |
| | | | | Isn't used yet, but baby steps. | ||||
* | another error message | Kartik Agaram | 2019-08-23 | 1 | -0/+0 |
| | |||||
* | lexing complex expressions inside '*(...)' | Kartik Agaram | 2019-08-23 | 1 | -0/+0 |
| | |||||
* | couple of helpers for parsing expressions in parens | Kartik Agaram | 2019-08-22 | 1 | -0/+0 |
| | |||||
* | sketch of a plan to implement indirect mode | Kartik Agaram | 2019-08-16 | 1 | -0/+0 |
| | |||||
* | desugar: code-generate *reg | Kartik Agaram | 2019-08-16 | 1 | -0/+0 |
| | |||||
* | plan for supporting indirect mode | Kartik Agaram | 2019-08-16 | 1 | -0/+0 |
| | | | | | | | | | | | 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. | ||||
* | add desugar to CI | Kartik Agaram | 2019-08-13 | 1 | -0/+0 |
| | |||||
* | get desugar working on the commandline | Kartik Agaram | 2019-08-13 | 1 | -0/+0 |
| | |||||
* | . | Kartik Agaram | 2019-08-13 | 1 | -0/+0 |
| | |||||
* | new variant: maybe-get-slice | Kartik Agaram | 2019-08-13 | 1 | -0/+0 |
| | |||||
* | new variant: maybe-get returns null on failure | Kartik Agaram | 2019-08-12 | 1 | -0/+0 |
| | |||||
* | better error message when get aborts | Kartik Agaram | 2019-08-12 | 1 | -0/+0 |
| | |||||
* | table-based register conversion | Kartik Agaram | 2019-08-01 | 1 | -0/+0 |
| | | | | | | | 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 Agaram | 2019-08-01 | 1 | -0/+0 |
| | | | | | First step to cleaning up `desugar-register`: extract the common '%' to register literals. | ||||
* | desugar: code-generate %reg | Kartik Agaram | 2019-07-31 | 1 | -0/+0 |
| | | | | | We're no longer just emitting the register code. We emit all arguments with appropriate metadata. | ||||
* | desugar: clean up top-level `convert` | Kartik Agaram | 2019-07-31 | 1 | -0/+0 |
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 |