aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add support for captured loads inside lambdasirBad Diode2022-01-092-13/+13
|
* Add `compile_symbol` for irBad Diode2022-01-091-31/+82
|
* Add some comments for laterBad Diode2022-01-032-1/+16
|
* Ensure new procedures are compiled only onceBad Diode2021-12-302-2/+51
|
* Add WIP compilation of lambdasBad Diode2021-12-301-57/+116
|
* Add `def` builtin and local var load/store opsBad Diode2021-12-301-4/+40
|
* Fix warnings on macosBad Diode2021-12-232-19/+25
|
* Add `if` compilation for irBad Diode2021-12-231-4/+24
|
* Add compilation of numerical comparison ops for irBad Diode2021-12-231-0/+69
|
* Add compilation of `or` builtin for the irBad Diode2021-12-231-1/+15
|
* Add `not` and `and` builtins for ir compilationBad Diode2021-12-232-13/+89
|
* Add print to ir compilationBad Diode2021-12-221-0/+14
|
* Fix typo in enum nameBad Diode2021-12-222-8/+8
|
* Integrate builtin text into objectsBad Diode2021-12-222-45/+35
|
* Add builtin object typeBad Diode2021-12-223-38/+108
|
* Add IR generation for arithmetic opsBad Diode2021-12-221-2/+43
|
* Start refactoring of compiler to stack-irBad Diode2021-12-223-7/+161
|
* Fix local variables on recursive callsBad Diode2021-11-171-8/+26
|
* Add tail call optimization for function callsBad Diode2021-11-161-30/+52
|
* Move ret pointer before closed vars in proc callsBad Diode2021-11-161-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 TCOBad Diode2021-11-161-3/+8
|
* Add proper function calls with closed variablesBad Diode2021-11-161-12/+43
|
* Add workaround for `void` return in function callsBad Diode2021-11-151-3/+11
|
* Add initial boilerplate for closure captureBad Diode2021-11-153-5/+48
|
* Fix stack on procedure call returnBad Diode2021-11-153-24/+65
|
* Fix bug on parameter detection for named functionsBad Diode2021-11-102-4/+9
|
* Add support for accessing procedure parametersBad Diode2021-11-103-8/+38
|
* Add locals for lambda proceduresBad Diode2021-11-101-3/+9
|
* Add initial local definition/accessBad Diode2021-11-103-7/+39
|
* Change Environment to store locals in arrayBad Diode2021-11-104-25/+42
| | | | This will help directly translate the locals to assembly.
* Add support for args in function callsBad Diode2021-11-101-2/+22
|
* Add display functionality for lambda objectsBad Diode2021-11-092-7/+28
|
* Add initial procedure calls for lambdasBad Diode2021-11-092-11/+36
|
* Add compilation contextBad Diode2021-11-092-149/+204
| | | | This prepares the compiler for the compilation of lambdas/procedures.
* Add support for compiling string literalsBad Diode2021-11-093-30/+128
|
* Change heap register to `r15` from `rsi` to avoid conflictsBad Diode2021-11-042-60/+64
|
* Add `cons`, `car` and `cdr` primitivesBad Diode2021-11-044-8/+76
|
* Add `if` compilationBad Diode2021-11-031-0/+22
|
* Fix behaviour of numerical comparisonsBad Diode2021-11-031-29/+19
|
* Fix behaviour of logic comparisonsBad Diode2021-11-031-41/+55
|
* Add a function to generate labelsBad Diode2021-11-021-0/+13
|
* Add numerical comparison operations (binary only)Bad Diode2021-11-021-10/+58
|
* Add `and` / `or` primitive proceduresBad Diode2021-11-021-15/+37
|
* Add `not` primitive procedureBad Diode2021-11-021-60/+93
|
* Add compilation of `display` primitiveBad Diode2021-11-024-32/+44
|
* Add type predicate primitive proceduresBad Diode2021-11-012-23/+88
| | | | Added: nil?, zero?, bool?, fixnum?
* Add support for immediate constantsBad Diode2021-11-013-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.10Bad Diode2021-11-016-2/+191
|
* Add protection for buffer overflow of tokensBad Diode2021-10-311-6/+6
|
* Add a couple of EOF checksBad Diode2021-10-311-0/+29
|