about summary refs log tree commit diff stats
path: root/apps
Commit message (Collapse)AuthorAgeFilesLines
* 5752Kartik Agaram2019-11-1816-93/+97
| | | | | | | Support binary operations with reg/mem and reg operands. Everything is passing. However, the self-hosting translator now generates some discrepancies compared to the C++ translator :(
* 5751 - start of table of Mu primitivesKartik Agaram2019-11-182-0/+168
| | | | | So far this is just the same as our most recent tests. But now we have a 'DSL' for adding more primitives.
* 5750Kartik Agaram2019-11-172-25/+411
| | | | | We can now compile primitive statements while selecting the right template to code-gen each one from. Even when multiple templates have the same name.
* 5746Kartik Agaram2019-11-152-37/+336
| | | | | | | | | | | | | | | | After much struggle, one more test: emitting a primitive with a register operand. The following two instructions have the same name: reg <- increment increment var and they emit the same opcodes: ff 0/subop But they're considered distinct policies in the code-generation 'table', one for incrementing variables on the stack and the other for incrementing variables in a register.
* 5745Kartik Agaram2019-11-142-35/+71
| | | | | | I've been under-estimating the complexity of translating primitive statements. We need to separately track information for each primitive about operands for both the source and emitted SubX notation.
* 5744Kartik Agaram2019-11-141-9/+5
|
* 5743Kartik Agaram2019-11-142-1/+1
|
* 5742Kartik Agaram2019-11-141-7/+5
| | | | No, let's represent register as just a string to save a translation.
* 5741Kartik Agaram2019-11-142-9/+19
| | | | | Support variables at positive stack offsets (formal parameters for functions), and also an indicator for 'any register' for primitive operations.
* 5740Kartik Agaram2019-11-141-4/+0
|
* 5739Kartik Agaram2019-11-101-0/+0
| | | | Add mu.subx to CI.
* 5737 - first 2 Mu statements translating to SubXKartik Agaram2019-11-101-15/+64
|
* 5736Kartik Agaram2019-11-101-47/+69
| | | | | | | | Rethink how vars are organized. We need separate aggregates for vars in the definition stack, defined in function headers, and used by statement operands. So now vars have no 'next' fields themselves. The definition stack will be a real stack, while the function headers and statement operands will have separate 'next' fields.
* 5735Kartik Agaram2019-11-091-17/+44
| | | | Switching gears to emitting function calls. The function name is working now.
* 5734Kartik Agaram2019-11-091-13/+49
| | | | No, we need to handle primitives and calls separately.
* 5733Kartik Agaram2019-11-091-11/+60
|
* 5732Kartik Agaram2019-11-091-56/+29
|
* 5731Kartik Agaram2019-11-091-11/+0
|
* 5729Kartik Agaram2019-11-091-16/+155
| | | | Just a random snapshot of mu.subx. The two new tests aren't passing yet.
* 5728Kartik Agaram2019-11-081-7/+153
|
* 5727Kartik Agaram2019-11-081-6/+157
|
* 5726Kartik Agaram2019-11-031-6/+6
|
* 5725Kartik Agaram2019-10-301-1/+4
|
* 5724Kartik Agaram2019-10-291-0/+1
|
* 5722Kartik Agaram2019-10-291-0/+47
| | | | Already http://akkartik.name/post/mu-2019-2 is out of date.
* 5721Kartik Agaram2019-10-291-6/+11
|
* 5720 - start of Mu's eponymous level-2 languageKartik Agaram2019-10-291-0/+565
| | | | http://akkartik.name/post/mu-2019-2
* 5719Kartik Agaram2019-10-291-1/+1
|
* 5715Kartik Agaram2019-10-2610-44/+39
| | | | | | | Clean up pseudocode to match planned syntax for the type- and memory-safe level-2 Mu language. http://akkartik.name/post/mu-2019-2 is already out of date.
* 5714Kartik Agaram2019-10-2523-637/+295
| | | | Replace calculations of constants with labels.
* 5708Kartik Agaram2019-10-191-1/+1
|
* 5707Kartik Agaram2019-10-193-0/+12
|
* 5706 - example at different levels of syntax sugarKartik Agaram2019-10-193-0/+275
| | | | | Thanks Mateusz Czapliński for the feedback: https://lobste.rs/s/xtxlec/mu_minimal_hobbyist_computing_stack#c_1mzq94
* 5700Kartik Agaram2019-10-1712-27/+27
|
* 5698Kartik Agaram2019-10-1514-446/+446
| | | | Thanks Andrew Owen for reporting this typo.
* 5696Kartik Agaram2019-10-032-1/+1
|
* 5695Kartik Agaram2019-10-031-1/+1
|
* 5687Kartik Agaram2019-09-2314-274/+0
| | | | | | | | | Move stack operations to a layer of their own. It was some short-term pain to take out the syntax sugar from it, but we need access to this layer from braces, which can't depend on sugar since it's part of sugar. Just simpler to keep one clear line and not have to build sometimes with some sugar but not others.
* 5686Kartik Agaram2019-09-221-1/+1
| | | | Get mulisp reflecting whatever's typed in again.
* 5685 - back tinkering with mulispKartik Agaram2019-09-221-35/+41
|
* 5682Kartik Agaram2019-09-201-1/+1
|
* 5679 - braces seem doneKartik Agaram2019-09-202-14/+331
|
* 5678Kartik Agaram2019-09-195-123/+123
|
* 5676Kartik Agaram2019-09-1914-410/+0
|
* 5675 - move helpers from subx-common into layersKartik Agaram2019-09-1925-2267/+1684
| | | | | | | | | | | | | | | | This undoes 5672 in favor of a new plan: Layers 000 - 099 are for running without syntax sugar. We use them for building syntax-sugar passes. Layers 100 and up are for running with all syntax sugar. The layers are arranged in approximate order so more phases rely on earlier layers than later ones. I plan to not use intermediate syntax sugar (just sigils without calls, or sigils and calls without braces) anywhere except in the specific passes implementing them.
* 5673 - standardize a few knobsKartik Agaram2019-09-1919-30/+10
|
* 5672 - move hex out of appsKartik Agaram2019-09-1915-1487/+17
|
* 5669Kartik Agaram2019-09-1913-0/+0
|
* 5668 - start reorg to permit syntax sugar in layersKartik Agaram2019-09-1919-35/+21
| | | | | | | | | | | | | | | | | | | Right now we always build the library before any apps. Apps are where our syntax sugar translators (sigils, calls, braces) live. So we can't use sugar in the standard library. New idea: move all code for SubX phases into the top-level. Perhaps we should also just build a single file rather than pipeline stages. But for now we'll build each phase by building up to some specific layer. This will simplify test_apps and move lots of one-off logic to a more standard form in test_layers. I'm also going to reorg existing layers so that we introduce each phase at a point where it mostly only gets the helpers it needs. This commit itself is just cleaning up some common strings. Using explicit names for them streamlines binaries a bit.
* 5667Kartik Agaram2019-09-191-2/+0
|