# 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.