about summary refs log tree commit diff stats
path: root/apps
Commit message (Collapse)AuthorAgeFilesLines
* 5890Kartik Agaram2020-01-141-0/+0
|
* 5887 - reorganize libraryKartik Agaram2020-01-1414-0/+0
| | | | | | | Layers 0-89 are used in self-hosting SubX. Layers 90-99 are not needed for self-hosting SubX, and therefore could use transitional levels of syntax sugar. Layers 100 and up use all SubX syntax sugar.
* 5885Kartik Agaram2020-01-122-62/+231
| | | | Finalize design for type trees.
* 5883 - drop the `ref` keywordKartik Agaram2020-01-1214-229/+229
| | | | | | | | | | 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.
* 5882Kartik Agaram2020-01-101-3/+1
|
* 5880Kartik Agaram2020-01-108-8/+8
|
* 5879Kartik Agaram2020-01-102-10/+99
|
* 5877Kartik Agaram2020-01-031-2/+2
|
* 5876 - address -> addrKartik Agaram2020-01-0316-182/+182
|
* 5872Kartik Agaram2020-01-022-1/+14
|
* 5868Kartik Agaram2020-01-021-0/+0
| | | | | Follow stupid GNU convention, because why not: https://www.gnu.org/prep/standards/html_node/Releases.html
* 5860Kartik Agaram2020-01-011-0/+17
|
* 5856Kartik Agaram2020-01-0125-2/+877
|
* 5849 - more integration testing of function callsKartik Agaram2020-01-012-7/+98
| | | | | | | | | | | | | | | | I can now run this program: fn main -> result/ebx: int { result <- do-add 3 4 } fn do-add a: int, b: int -> result/ebx: int { result <- copy a result <- add b } We still can't define local variables, but can write any programs involving ints by passing in enough arguments for temporaries.
* 5848Kartik Agaram2020-01-011-5/+5
|
* 5847 - literal inputsKartik Agaram2019-12-3115-1/+207
|
* 5846Kartik Agaram2019-12-301-10/+10
|
* 5845Kartik Agaram2019-12-301-0/+3
|
* 5844Kartik Agaram2019-12-301-3/+3
| | | | | Let's start putting r32 first in compare instructions that need it. Ordering there is quite subtle and of great import.
* 5834Kartik Agaram2019-12-272-3/+4
| | | | Bugfix.
* 5833Kartik Agaram2019-12-271-1/+1
|
* 5832 - support for function outputsKartik Agaram2019-12-272-14/+138
| | | | | | | | | | | We haven't implemented it yet, but there's now a design for how we check whether a function has written its output correctly. Functions must write to each output at the top level at least once, and never overwrite an output register in the top-level once it's been defined. This is conservative (it can be perfectly reasonable for functions to write the output, reuse the register for a temporary, and then write the output again) but easy to check.
* 5831Kartik Agaram2019-12-272-27/+38
|
* 5830Kartik Agaram2019-12-262-1/+5
| | | | | Bugfix: statements defining a new register variable require an initializer instruction.
* 5828 - copy (mov) instructionsKartik Agaram2019-12-262-22/+144
|
* 5827 - give primitives one more bit of metadataKartik Agaram2019-12-262-4/+59
| | | | | Copy (mov) instructions are unlike instructions we've encoded so far, in that their destination is not read.
* 5826 - done with basic binary opsKartik Agaram2019-12-262-0/+197
|
* 5825 - code-generation for add opcodesKartik Agaram2019-12-262-26/+158
|
* 5824 - code-generation for all inc/dec opcodesKartik Agaram2019-12-262-2/+199
|
* 5823Kartik Agaram2019-12-222-0/+55
|
* 5821 - now translating function argumentsKartik Agaram2019-12-222-110/+156
| | | | See test-convert-function-with-arg-and-body.
* 5820Kartik Agaram2019-12-221-38/+177
| | | | | | | | | | | One test failing. It took enough debugging just to get to the expected failure that it seems worth saving this snapshot. Saw some signs that I have to remember to zero-out allocated memory. We need a scalable solution for this. I think parse-var-with-type needs to be rewritten. Just added a test and a hacky fix for now.
* 5809Kartik Agaram2019-12-093-8/+9
|
* 5804Kartik Agaram2019-12-0829-619/+631
| | | | | Try to make the comments consistent with the type system we'll eventually have.
* 5803Kartik Agaram2019-12-0714-0/+0
|
* 5795Kartik Agaram2019-12-071-1/+5
|
* 5794Kartik Agaram2019-12-061-43/+43
| | | | | | | | | Rather surprisingly, all the treeshake tooling is done in just about 2 hours of work. From now on it'll be easier to update stats.txt. Observations: a) Binaries are tiny compared to conventional stacks. Tens of KB. b) ~80% of binaries are tests and unused libraries in all my apps. c) ~75% of LoC in SubX sources are tests or comments.
* 5792Kartik Agaram2019-12-0514-0/+0
| | | | | Fix a bug in one test: it checks eax when the component under test returns nothing. It's been just accidentally passing all these months.
* 5790Kartik Agaram2019-12-0511-318/+318
| | | | | | Standardize conventions for labels within objects in the data segment. We're going to use this in a new tool.
* 5785 - initial skeleton for parsing fn bodiesKartik Agaram2019-11-302-5/+21
| | | | | All tests passing again. We have big gaping holes for type- and var-management. We're going to work on the latter first.
* 5784Kartik Agaram2019-11-302-7/+27
| | | | | Lots of debugging to add two curly braces. I need tests for populate-mu-function-body, or even parse-mu-block.
* 5782 - fix a widespread bug with Heap-sizeKartik Agaram2019-11-3028-14/+14
|
* 5781Kartik Agaram2019-11-302-3/+194
| | | | | parse-mu-stmt now working, though we'll need to go back and stop creating a new var for every instance of a variable in a scope.
* 5780Kartik Agaram2019-11-291-43/+50
|
* 5779Kartik Agaram2019-11-291-100/+308
| | | | | Snapshot with new skeleton for parsing function body. New test still failing, but only in the one expected place.
* 5778Kartik Agaram2019-11-2915-19/+19
|
* 5777Kartik Agaram2019-11-292-3/+159
|
* 5776Kartik Agaram2019-11-292-34/+48
|
* 5775Kartik Agaram2019-11-292-9/+105
|
* 5774Kartik Agaram2019-11-291-26/+82
| | | | Function headers seem to be parsing right.