Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | 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 |
| | |||||
* | Replace string/symbol text field with StringView | Bad Diode | 2021-10-31 | 3 | -22/+8 |
| | | | | | This will avoid unnecessary allocations, since we always keep the original text file open until the end of the processing. | ||||
* | Change permissions for text files to 644 | Bad Diode | 2021-10-31 | 11 | -0/+0 |
| | |||||
* | Unify semantic analysis actions under a single function | Bad Diode | 2021-10-31 | 1 | -111/+49 |
| | |||||
* | Add number of arguments check in function calls | Bad Diode | 2021-10-31 | 2 | -12/+73 |
| | |||||
* | Ensure lambdas wrap their env tables | Bad Diode | 2021-10-31 | 2 | -7/+10 |
| | |||||
* | Add dead code elimination to AST tree | Bad Diode | 2021-10-30 | 2 | -3/+75 |
| | |||||
* | Update vim syntax to handle set! | Bad Diode | 2021-10-30 | 1 | -1/+2 |
| | |||||
* | Add symbol declaration error checking | Bad Diode | 2021-10-30 | 1 | -6/+75 |
| | |||||
* | Prepare for scope check | Bad Diode | 2021-10-30 | 2 | -14/+48 |
| | |||||
* | Add hashtable for Environment tracking | Bad Diode | 2021-10-30 | 3 | -0/+240 |
| | |||||
* | Add minimal syntax file for vim | Bad Diode | 2021-10-30 | 3 | -6/+22 |
| | |||||
* | Add parsing for fun expressionsv0.9 | Bad Diode | 2021-10-30 | 3 | -0/+46 |
| | |||||
* | Add parsing for def/set! expressions | Bad Diode | 2021-10-30 | 4 | -15/+99 |
| | |||||
* | Add parsing of if expressions | Bad Diode | 2021-10-30 | 5 | -9/+95 |
| | |||||
* | Add parsing of lambda expression | Bad Diode | 2021-10-30 | 5 | -29/+125 |
| |