d25f3795f5
Add basic unit tests to user-side compiler
2025-07-09 16:00:54 +02:00
83fdb01368
Add way to make binary test build of user-side compiler
2025-07-09 15:19:06 +02:00
7940298753
Add exported "interface" to user-side compiler
2025-07-09 15:18:04 +02:00
0f0ba054be
Add pre-assembly.lisp, which handles transformations needed for asm
2025-07-09 15:15:57 +02:00
09dc731444
Add code to populate asm function table using listing declarations
2025-07-08 12:53:18 +02:00
4d6ad30eae
Add some proper error handling to user-side compiler
2025-07-07 19:44:57 +02:00
54d2341ce3
Add code-generator.lisp to ASD
2025-07-03 10:30:14 +02:00
f1cf8ad488
Add alexandria dependency
2025-07-03 10:30:14 +02:00
a18c13a86e
Add value allocator (typically called register allocator)
...
It's unfinished and doesn't optimize space used by temporary
variables. Every temporary gets its own memory slot right now.
2025-07-01 13:38:31 +02:00
9e643e6c6d
Add compiler middle stage
...
The compiler middle stage takes high level nodes and produces code in
an intermediate representation more closely resembling assembly code.
Optimizations and the tools for making those are also included. It's
significantly easier to optimize IR than syntax trees or assembly.
Several things need cleaning up, in particular there are things in
jigs.lisp that really should be documented tools, not
jigs (specifically the compilation setup and finalization).
2025-06-26 13:41:43 +02:00
7703c71141
Add tool for quickly defining common PRINT-OBJECT methods
2025-06-26 12:44:43 +02:00
4011e3b0db
Reorder loading of high-level.lisp
2025-06-21 21:02:58 +02:00
928cdfd318
Add user-side compiler's parser
...
It ingests tokens via a "token stream", and feeds out a node
tree. It's a mostly handwritten recursive descent parser with the
occasional Lisp macros for convenience.
2025-05-22 13:14:55 +02:00
38406c80ee
Add various transformation rules
2025-05-22 13:14:55 +02:00
e6e2e94404
Add symbol table
2025-05-16 21:00:57 +02:00
5d0f4b4767
Move definition of REFERENCE classes to its own file
...
Dereferencing is still defined in high-level.lisp, this might change
in the future since I'm sort of restructuring a little bit.
2025-05-16 21:00:14 +02:00
e88e966521
Add mechanism for transforming objects to different types
2025-05-16 21:00:14 +02:00
3211f6d441
Add primitive tokenizer for USC
2025-05-16 12:31:18 +02:00
41bd413b4c
Add LABEL class and replace uses of temporary strings with it
2025-05-08 19:10:38 +02:00
0a3675feac
Turn the user-side compiler into a proper ASDF system
2025-05-03 12:22:56 +02:00