From 7995dd2bdf5b415aa14f5cfab10f54f2d37b3a54 Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 1 Jan 2026 16:09:21 +0100 Subject: [PATCH] feat: write plan for future dev --- TODO.md | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index a016314..61c7619 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,33 @@ -0. Define how many physical regs are available, which are caller-saved and callee-saved -1. Implement if-else and while statements +# Milestones + +## Clean codebase structure + +0. Prelude classes like FileIO, strings null-termination etc. +1. Diagnostic helper class for logging +2. Remove "void" valuehandle class and use it as ValueHandle::Type instead +3. Function multiple arguments support +4. Implement if-else and while statements + +## Types support in language + +## Stack based code generation + +0. Stack based codegen, i.e. for fasm x86_64 + +## IR Optimizations aka const folding, deadcode elimination + +## Register allocation + +## First beta assembly code generation with registers + +## ... + +------------------------------------------------- + + +# References for IR optimizations + 2. Find out what use[B] and def[B] are for each block 3. Define successors and predecessors of each block and make them accessible 4. Compute liveIn[B] and liveOut[B] for each block @@ -19,6 +46,7 @@ - Spill to stack slots - Add “CALL clobbers regs” rule +# References for register allocation function's reserved registers: EAX, ECX, EDX