931af90789
- implemented type parsing including custom types and generics (useless for now as we do no semantic analysis) - implemented struct literal parsing - implemented struct definition parsing (no generics yet) - implemented tuple parsing - registers are now allocated starting from zero - updated to-dos
27 lines
1.4 KiB
Markdown
27 lines
1.4 KiB
Markdown
# General TODO's
|
|
|
|
# Bugfixes
|
|
- [x] [EASY] Investigate logical and operator not compiling - either a lexer or parser issue.
|
|
- **note**: this was a parser issue.
|
|
|
|
# Missing features
|
|
- [x] [MEDIUM] Get shift operations working correctly.
|
|
- [ ] [MEDIUM] proper prefix/postfix inc/dec implementation. slightly more complex as we need to check for a variable and modify it in place
|
|
- [ ] [EASY] Add multiply and divide operations to code generation
|
|
- **note**: very easy to do but our division algorithm is hopelessly slow so not worth doing for now.
|
|
|
|
# Performance Improvements
|
|
- [ ] [MEDIUM] implement a proper div/mod library that's not slow af.
|
|
- [ ] [HARD] Immediate operations for values that support it (up to +/- u16::max for addi and subi respectively)
|
|
- this requires significant complexity in code generation as we need to traverse down the tree when we come across these operations to prevent additional register allocations.
|
|
|
|
# Compiler optimisations
|
|
|
|
# Codegen improvements
|
|
- [ ] [MEDIUM / time consuming] Add scoping to code generation
|
|
- [ ] [MEDIUM / time consuming] Rewrite entire codegen to imrpove code quality and make the code more readable.
|
|
- [ ] type-safe instruction builder
|
|
- [ ] Instruction & Register enums
|
|
- [ ] Instruction builder helper fns eg `fn add(left: &Register, right: &Register, dest: &Register) -> Instruction`
|
|
- [ ] Instruction Block types.
|