c64-livecoding/wip-duuqnd/user-side-compiler
John Lorentzson c41fb46457 Make assembly program representation smarter
Storing assembly instructions in a list felt nice since that lets me
just fire and forget, but if we want to properly optimize short
branches (i.e. branches that do not require a full JMP) we'll need to
be able to rewrite assembly after linking, and I feel that's best done
by making assembly instructions hold a NEXT rather than poking at a
list clumsily.

The first linking pass was also moved out to a separate function since
we may want to run the first pass twice, first after the initial
assembling and second after expanding optimistic short branches (those
that turned out to be longer branches than 127/128 bytes) into a long
branch snippet (branch with inverted condition skipping over a JMP).
2025-07-03 10:30:14 +02:00
..
backend Make assembly program representation smarter 2025-07-03 10:30:14 +02:00
middle Add more optimization passes to a test snippet 2025-07-01 13:27:24 +02:00
asm-function.lisp Add stub ASM-FUNCTION class 2025-05-22 13:14:55 +02:00
bytesquash.lisp Add bytesquashing (turning instructions etc. into dead bytes) 2025-05-08 22:18:57 +02:00
example-0.c6l Move and rename syntax-example.txt 2025-05-22 13:14:55 +02:00
example-1.c6l Add two more code examples 2025-05-22 13:14:55 +02:00
example-2.c6l Add two more code examples 2025-05-22 13:14:55 +02:00
high-level.lisp Move NODE-CONDITIONAL definition to proper place 2025-06-19 15:07:23 +02:00
instruction-list.txt Replace the text assembly in high-level with instruction objects 2025-05-08 17:11:57 +02:00
instruction.lisp Add missing RELATIVE-MIXIN 2025-05-16 12:31:18 +02:00
label.lisp Add offset label class 2025-05-08 22:18:57 +02:00
package.lisp Add tool for quickly defining common PRINT-OBJECT methods 2025-06-26 12:44:43 +02:00
parser.lisp Reorder parsing so calls get properly parsed inside expressions 2025-06-21 21:04:26 +02:00
reference.lisp Add various transformation rules 2025-05-22 13:14:55 +02:00
s-print.lisp Add user-side compiler's parser 2025-05-22 13:14:55 +02:00
symbol-table.lisp Add symbol table 2025-05-16 21:00:57 +02:00
test-programs.lisp Add a USC test program 2025-05-16 10:39:03 +02:00
tokenizer.lisp Add PRINT-OBJECT method to TOKEN-NUMBER 2025-05-22 13:14:55 +02:00
toolkit.lisp Add tool for quickly defining common PRINT-OBJECT methods 2025-06-26 12:44:43 +02:00
transform.lisp Make TRANSFORM return OBJ if it's already TO-TYPE 2025-05-22 13:14:55 +02:00
user-side-compiler.asd Add value allocator (typically called register allocator) 2025-07-01 13:38:31 +02:00