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 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 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 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
|
- Handle long branches
|
||||||
- Optimize loops by unrolling them somewhat
|
- Optimize loops by unrolling them somewhat
|
||||||
- Optimize loops with Strength reduction (https://en.wikipedia.org/wiki/Strength_reduction)
|
- Optimize loops with Strength reduction (https://en.wikipedia.org/wiki/Strength_reduction)
|
||||||
- Remove unused functions.
|
- Remove unused functions.
|
||||||
- Support calculated pointers eg. *(ptr+i)
|
- Support calculated pointers eg. *(ptr+i)
|
||||||
|
- Add syntax for encoded chars (eg. PETSCII instead of SCREEN)
|
||||||
|
|
||||||
Arrays / Strings / Inline data
|
Arrays / Strings / Inline data
|
||||||
- New semantic: Arrays are always allocated inline (and must therefore have a size). Pointers are never.
|
- 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 empty / filled byte data arrays.
|
||||||
- Add support for expressions in data initializers.
|
- 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
|
Assembler Improvements
|
||||||
- Relabel blocks eliminating long labels such as b3_from_b11
|
- Relabel blocks eliminating long labels such as b3_from_b11
|
||||||
- Eliminate chained JMP's (replace by direct JMP) - example: loopsplit.asm
|
- Eliminate chained JMP's (replace by direct JMP) - example: loopsplit.asm
|
||||||
|
Loading…
Reference in New Issue
Block a user