Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | 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 | 1 | -4/+16 |
| | |||||
* | Fix stack on procedure call return | Bad Diode | 2021-11-15 | 1 | -22/+58 |
| | |||||
* | Add support for accessing procedure parameters | Bad Diode | 2021-11-10 | 1 | -3/+14 |
| | |||||
* | Add locals for lambda procedures | Bad Diode | 2021-11-10 | 1 | -3/+9 |
| | |||||
* | Add initial local definition/access | Bad Diode | 2021-11-10 | 1 | -4/+35 |
| | |||||
* | Change Environment to store locals in array | Bad Diode | 2021-11-10 | 1 | -0/+2 |
| | | | | 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 | 1 | -7/+10 |
| | |||||
* | Add initial procedure calls for lambdas | Bad Diode | 2021-11-09 | 1 | -10/+35 |
| | |||||
* | Add compilation context | Bad Diode | 2021-11-09 | 1 | -141/+201 |
| | | | | This prepares the compiler for the compilation of lambdas/procedures. | ||||
* | Add support for compiling string literals | Bad Diode | 2021-11-09 | 1 | -22/+108 |
| | |||||
* | Change heap register to `r15` from `rsi` to avoid conflicts | Bad Diode | 2021-11-04 | 1 | -58/+62 |
| | |||||
* | Add `cons`, `car` and `cdr` primitives | Bad Diode | 2021-11-04 | 1 | -7/+65 |
| | |||||
* | 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 | 1 | -0/+19 |
| | |||||
* | Add type predicate primitive procedures | Bad Diode | 2021-11-01 | 1 | -23/+87 |
| | | | | Added: nil?, zero?, bool?, fixnum? | ||||
* | Add support for immediate constants | Bad Diode | 2021-11-01 | 1 | -7/+39 |
| | | | | | | - 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 | 1 | -0/+115 |