Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Add support for captured loads inside lambdasir | Bad Diode | 2022-01-09 | 2 | -13/+13 |
| | |||||
* | Add `compile_symbol` for ir | Bad Diode | 2022-01-09 | 1 | -31/+82 |
| | |||||
* | Add some comments for later | Bad Diode | 2022-01-03 | 2 | -1/+16 |
| | |||||
* | Ensure new procedures are compiled only once | Bad Diode | 2021-12-30 | 2 | -2/+51 |
| | |||||
* | Add WIP compilation of lambdas | Bad Diode | 2021-12-30 | 1 | -57/+116 |
| | |||||
* | Add `def` builtin and local var load/store ops | Bad Diode | 2021-12-30 | 1 | -4/+40 |
| | |||||
* | Fix warnings on macos | Bad Diode | 2021-12-23 | 2 | -19/+25 |
| | |||||
* | Add `if` compilation for ir | Bad Diode | 2021-12-23 | 1 | -4/+24 |
| | |||||
* | Add compilation of numerical comparison ops for ir | Bad Diode | 2021-12-23 | 1 | -0/+69 |
| | |||||
* | Add compilation of `or` builtin for the ir | Bad Diode | 2021-12-23 | 1 | -1/+15 |
| | |||||
* | Add `not` and `and` builtins for ir compilation | Bad Diode | 2021-12-23 | 2 | -13/+89 |
| | |||||
* | Add print to ir compilation | Bad Diode | 2021-12-22 | 1 | -0/+14 |
| | |||||
* | Fix typo in enum name | Bad Diode | 2021-12-22 | 2 | -8/+8 |
| | |||||
* | Integrate builtin text into objects | Bad Diode | 2021-12-22 | 2 | -45/+35 |
| | |||||
* | Add builtin object type | Bad Diode | 2021-12-22 | 3 | -38/+108 |
| | |||||
* | Add IR generation for arithmetic ops | Bad Diode | 2021-12-22 | 1 | -2/+43 |
| | |||||
* | Start refactoring of compiler to stack-ir | Bad Diode | 2021-12-22 | 3 | -7/+161 |
| | |||||
* | Fix local variables on recursive calls | Bad Diode | 2021-11-17 | 1 | -8/+26 |
| | |||||
* | Add tail call optimization for function calls | Bad Diode | 2021-11-16 | 1 | -30/+52 |
| | |||||
* | Move ret pointer before closed vars in proc calls | Bad Diode | 2021-11-16 | 1 | -6/+14 |
| | | | | | | | | | | | | | | | The previous call convention we had the following before the function call: [ PROC_ADDR | CLOSED_VARS | ARGS | RP ] This was made to be compatible with the `call` instruction and the `cdecl` calling convention. This commit changes the structure to: [ RP | PROC_ADDR | CLOSED_VARS | ARGS ] With this convention, the stack frame can be discarded in its entirety if we have a tail optimized procedure. | ||||
* | Replace `call` with `jmp` in preparation for TCO | Bad Diode | 2021-11-16 | 1 | -3/+8 |
| | |||||
* | Add proper function calls with closed variables | Bad Diode | 2021-11-16 | 1 | -12/+43 |
| | |||||
* | Add workaround for `void` return in function calls | Bad Diode | 2021-11-15 | 1 | -3/+11 |
| | |||||
* | Add initial boilerplate for closure capture | Bad Diode | 2021-11-15 | 3 | -5/+48 |
| | |||||
* | Fix stack on procedure call return | Bad Diode | 2021-11-15 | 3 | -24/+65 |
| | |||||
* | Fix bug on parameter detection for named functions | Bad Diode | 2021-11-10 | 2 | -4/+9 |
| | |||||
* | Add support for accessing procedure parameters | Bad Diode | 2021-11-10 | 3 | -8/+38 |
| | |||||
* | Add locals for lambda procedures | Bad Diode | 2021-11-10 | 1 | -3/+9 |
| | |||||
* | Add initial local definition/access | Bad Diode | 2021-11-10 | 3 | -7/+39 |
| | |||||
* | Change Environment to store locals in array | Bad Diode | 2021-11-10 | 4 | -25/+42 |
| | | | | This will help directly translate the locals to assembly. | ||||
* | Add support for args in function calls | Bad Diode | 2021-11-10 | 1 | -2/+22 |
| | |||||
* | Add display functionality for lambda objects | Bad Diode | 2021-11-09 | 2 | -7/+28 |
| | |||||
* | Add initial procedure calls for lambdas | Bad Diode | 2021-11-09 | 2 | -11/+36 |
| | |||||
* | Add compilation context | Bad Diode | 2021-11-09 | 2 | -149/+204 |
| | | | | This prepares the compiler for the compilation of lambdas/procedures. | ||||
* | Add support for compiling string literals | Bad Diode | 2021-11-09 | 3 | -30/+128 |
| | |||||
* | Change heap register to `r15` from `rsi` to avoid conflicts | Bad Diode | 2021-11-04 | 2 | -60/+64 |
| | |||||
* | Add `cons`, `car` and `cdr` primitives | Bad Diode | 2021-11-04 | 4 | -8/+76 |
| | |||||
* | Add `if` compilation | Bad Diode | 2021-11-03 | 1 | -0/+22 |
| | |||||
* | Fix behaviour of numerical comparisons | Bad Diode | 2021-11-03 | 1 | -29/+19 |
| | |||||
* | Fix behaviour of logic comparisons | Bad Diode | 2021-11-03 | 1 | -41/+55 |
| | |||||
* | Add a function to generate labels | Bad Diode | 2021-11-02 | 1 | -0/+13 |
| | |||||
* | Add numerical comparison operations (binary only) | Bad Diode | 2021-11-02 | 1 | -10/+58 |
| | |||||
* | Add `and` / `or` primitive procedures | Bad Diode | 2021-11-02 | 1 | -15/+37 |
| | |||||
* | Add `not` primitive procedure | Bad Diode | 2021-11-02 | 1 | -60/+93 |
| | |||||
* | Add compilation of `display` primitive | Bad Diode | 2021-11-02 | 4 | -32/+44 |
| | |||||
* | Add type predicate primitive procedures | Bad Diode | 2021-11-01 | 2 | -23/+88 |
| | | | | Added: nil?, zero?, bool?, fixnum? | ||||
* | Add support for immediate constants | Bad Diode | 2021-11-01 | 3 | -53/+143 |
| | | | | | | - Fixnums are tagged with a zero on the LSB. - The nil value is equal to exactly 1. - Boolean values have a 11 tag. A value of 111 is true and 011 false. | ||||
* | Add x86_64 compilation for arithmetic expressionsv0.10 | Bad Diode | 2021-11-01 | 6 | -2/+191 |
| | |||||
* | Add protection for buffer overflow of tokens | Bad Diode | 2021-10-31 | 1 | -6/+6 |
| | |||||
* | Add a couple of EOF checks | Bad Diode | 2021-10-31 | 1 | -0/+29 |
| |