feat: write plan for future dev
This commit is contained in:
32
TODO.md
32
TODO.md
@@ -1,6 +1,33 @@
|
|||||||
|
|
||||||
0. Define how many physical regs are available, which are caller-saved and callee-saved
|
# Milestones
|
||||||
1. Implement if-else and while statements
|
|
||||||
|
## 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
|
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
|
3. Define successors and predecessors of each block and make them accessible
|
||||||
4. Compute liveIn[B] and liveOut[B] for each block
|
4. Compute liveIn[B] and liveOut[B] for each block
|
||||||
@@ -19,6 +46,7 @@
|
|||||||
- Spill to stack slots
|
- Spill to stack slots
|
||||||
- Add “CALL clobbers regs” rule
|
- Add “CALL clobbers regs” rule
|
||||||
|
|
||||||
|
# References for register allocation
|
||||||
|
|
||||||
function's reserved registers:
|
function's reserved registers:
|
||||||
EAX, ECX, EDX
|
EAX, ECX, EDX
|
||||||
|
|||||||
Reference in New Issue
Block a user