Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | 5981 - decompose block cleanup into two traversals | Kartik Agaram | 2020-02-02 | 1 | -35/+113 |
| | | | | | Momentarily less efficient, but we will soon need the ability to emit cleanup code without losing all our state. | ||||
* | 5980 | Kartik Agaram | 2020-02-02 | 1 | -3/+3 |
| | |||||
* | 5979 | Kartik Agaram | 2020-02-02 | 1 | -2/+3 |
| | | | | | | | Continuing to think about how to translate vars in a block when they're followed by early exits. To clean up everything between a statement and a target label, we need to know somehow the depth the target is defined at. | ||||
* | 5978 | Kartik Agaram | 2020-02-02 | 1 | -1/+4 |
| | |||||
* | 5977 | Kartik Agaram | 2020-02-02 | 1 | -4/+5 |
| | |||||
* | 5974 - support for simple early exits | Kartik Agaram | 2020-02-02 | 1 | -1/+84 |
| | | | | | | | | | | | | | | | So far we only handle unlabeled break instructions correctly. That part is elegance itself. But the rest will need more work: a) For labeled breaks we need to insert code to unwind all intervening blocks. b) For unlabeled loops we need to insert code to unwind the current block and then loop. c) For labeled loops we need to insert code to unwind all intervening blocks and then loop. Is this even worth doing? I think so. It's pretty common for a conditional block inside a loop to 'continue'. That requires looping to somewhere non-local. | ||||
* | 5973 | Kartik Agaram | 2020-02-02 | 1 | -369/+1 |
| | |||||
* | 5971 - emit code with indentation | Kartik Agaram | 2020-02-01 | 1 | -256/+309 |
| | | | | This is easy now that we're tracking block depths everywhere. | ||||
* | 5970 - support block-scoped variables | Kartik Agaram | 2020-02-01 | 1 | -6/+186 |
| | |||||
* | 5966 - document all supported Mu instructions | Kartik Agaram | 2020-01-31 | 1 | -9/+9 |
| | |||||
* | 5962 - string literals | Kartik Agaram | 2020-01-30 | 1 | -6/+43 |
| | |||||
* | 5961 | Kartik Agaram | 2020-01-30 | 1 | -3/+2 |
| | |||||
* | 5953 - 'multiply' instruction | Kartik Agaram | 2020-01-29 | 1 | -0/+13 |
| | |||||
* | 5951 - 'compare' instructions | Kartik Agaram | 2020-01-29 | 1 | -9/+376 |
| | |||||
* | 5948 - branching to named blocks | Kartik Agaram | 2020-01-29 | 1 | -13/+415 |
| | |||||
* | 5947 - add a new field to primitives | Kartik Agaram | 2020-01-29 | 1 | -4/+92 |
| | | | | For supporting branches with a target. | ||||
* | 5946 | Kartik Agaram | 2020-01-29 | 1 | -6/+6 |
| | |||||
* | 5945 - branches | Kartik Agaram | 2020-01-28 | 1 | -0/+285 |
| | |||||
* | 5943 - initial support for named blocks | Kartik Agaram | 2020-01-28 | 1 | -132/+245 |
| | |||||
* | 5942 - initial support for blocks | Kartik Agaram | 2020-01-28 | 1 | -8/+77 |
| | | | | This was too easy. But there are dragons ahead. | ||||
* | 5940 - local vars in registers starting to work | Kartik Agaram | 2020-01-27 | 1 | -31/+151 |
| | |||||
* | 5939 | Kartik Agaram | 2020-01-27 | 1 | -3/+0 |
| | |||||
* | 5938 | Kartik Agaram | 2020-01-27 | 1 | -0/+1 |
| | |||||
* | 5936 - permit commas everywhere | Kartik Agaram | 2020-01-27 | 1 | -11/+51 |
| | |||||
* | 5931 | Kartik Agaram | 2020-01-27 | 1 | -1/+1 |
| | |||||
* | 5929 - local variables kinda working | Kartik Agaram | 2020-01-27 | 1 | -6/+171 |
| | |||||
* | 5928 | Kartik Agaram | 2020-01-27 | 1 | -4/+2 |
| | |||||
* | 5927 | Kartik Agaram | 2020-01-27 | 1 | -15/+15 |
| | |||||
* | 5924 | Kartik Agaram | 2020-01-27 | 1 | -224/+224 |
| | |||||
* | 5923 - start work on code-generation for 'var' | Kartik Agaram | 2020-01-27 | 1 | -3/+45 |
| | |||||
* | 5921 | Kartik Agaram | 2020-01-26 | 1 | -5/+130 |
| | |||||
* | 5920 | Kartik Agaram | 2020-01-26 | 1 | -29/+57 |
| | |||||
* | 5919 | Kartik Agaram | 2020-01-26 | 1 | -24/+0 |
| | |||||
* | 5918 | Kartik Agaram | 2020-01-26 | 1 | -22/+11 |
| | |||||
* | 5916 | Kartik Agaram | 2020-01-22 | 1 | -3/+3 |
| | |||||
* | 5913 | Kartik Agaram | 2020-01-20 | 1 | -6/+0 |
| | |||||
* | 5911 - support for compound types | Kartik Agaram | 2020-01-20 | 1 | -15/+13 |
| | |||||
* | 5909 | Kartik Agaram | 2020-01-20 | 1 | -18/+62 |
| | | | | Draft 5. | ||||
* | 5908 | Kartik Agaram | 2020-01-20 | 1 | -4/+6 |
| | | | | | Now parse-type passes, but some outer test is failing. The result is not being consumed right by `type-equal?`. | ||||
* | 5907 | Kartik Agaram | 2020-01-20 | 1 | -10/+24 |
| | | | | | | Draft 3. Getting close. Now the tree structure seems right. | ||||
* | 5906 | Kartik Agaram | 2020-01-20 | 1 | -3/+35 |
| | | | | Draft 2. | ||||
* | 5905 | Kartik Agaram | 2020-01-20 | 1 | -84/+329 |
| | | | | | | | Draft of my first, incorrect attempt at parsing s-expressions. No matter how many times I've done this, I never get it right the first time. | ||||
* | 5904 | Kartik Agaram | 2020-01-19 | 1 | -3/+3 |
| | |||||
* | 5902 | Kartik Agaram | 2020-01-19 | 1 | -6/+6 |
| | |||||
* | 5897 - rename comparison instructions | Kartik Agaram | 2020-01-16 | 1 | -110/+110 |
| | | | | | | | Signed and unsigned don't quite capture the essence of what the different combinations of x86 flags are doing for SubX. The crucial distinction is that one set of comparison operators is for integers and the second is for addresses. | ||||
* | 5894 | Kartik Agaram | 2020-01-16 | 1 | -5/+5 |
| | |||||
* | 5885 | Kartik Agaram | 2020-01-12 | 1 | -62/+231 |
| | | | | Finalize design for type trees. | ||||
* | 5883 - drop the `ref` keyword | Kartik Agaram | 2020-01-12 | 1 | -112/+112 |
| | | | | | | | | | | When I created it I was conflating two things: a) needing to refer to just the start, rather than the whole, and b) counting indirections. Both are kinda ill-posed. Now Mu will have just `addr` and `handle` types. Normal types will translate implicitly to `addr` types, while `handle` will always require explicit handling. | ||||
* | 5882 | Kartik Agaram | 2020-01-10 | 1 | -3/+1 |
| | |||||
* | 5880 | Kartik Agaram | 2020-01-10 | 1 | -1/+1 |
| |