mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-12-23 13:31:12 +00:00
Improved TODO
This commit is contained in:
parent
0d9a0a84f8
commit
7def3abf28
@ -18,15 +18,12 @@ Features
|
||||
- Add ability to call ASM code from KC.
|
||||
- Add ability to call KC code from ASM. (Maybe declare some functions external to ensure their interface is well defined. Maybe generate ASM call stubs.)
|
||||
- Add an export keyword ensuring that a function is generated even if it is never called. Maybe export can be handled by generating a call that can be used as stub.
|
||||
- Add inline ASM
|
||||
- Syntax asm( "asm...", "asm...", "asm..." ); - aligned with gcc
|
||||
- Better syntax: asm { asm... } - using real ASM syntax inline!
|
||||
- Allow inline ASM parameter expansion
|
||||
- Handle long branches
|
||||
- Optimize loops by unrolling them somewhat
|
||||
- Optimize loops with Strength reduction (https://en.wikipedia.org/wiki/Strength_reduction)
|
||||
- Remove unused functions.
|
||||
- Support calculated pointers eg. *(ptr+i)
|
||||
- Add syntax for encoded chars (eg. PETSCII instead of SCREEN)
|
||||
|
||||
Arrays / Strings / Inline data
|
||||
- New semantic: Arrays are always allocated inline (and must therefore have a size). Pointers are never.
|
||||
@ -36,6 +33,15 @@ Arrays / Strings / Inline data
|
||||
- Add support for empty / filled byte data arrays.
|
||||
- Add support for expressions in data initializers.
|
||||
|
||||
- Inline ASM
|
||||
- Add support for inline asm
|
||||
- Syntax asm( "asm...", "asm...", "asm..." ); - aligned with gcc
|
||||
- Better syntax: asm { asm... } - using real ASM syntax inline!
|
||||
- Allow inline ASM parameter expansion - eg lda line (where line is a variable)
|
||||
- Support ASM syntax check etc.
|
||||
- Also perform ASM clobber analysis when assigning registers.
|
||||
- Allow lda <var> or sta <var> to just perform a register copy if possible.
|
||||
|
||||
Assembler Improvements
|
||||
- Relabel blocks eliminating long labels such as b3_from_b11
|
||||
- Eliminate chained JMP's (replace by direct JMP) - example: loopsplit.asm
|
||||
|
Loading…
Reference in New Issue
Block a user