From 7def3abf28facbb436abd4df7981547a31c3f6ba Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Mon, 23 Oct 2017 01:29:39 +0200 Subject: [PATCH] Improved TODO --- src/main/java/dk/camelot64/kickc/TODO.txt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/dk/camelot64/kickc/TODO.txt b/src/main/java/dk/camelot64/kickc/TODO.txt index 2f6aecb34..2ff9d7e87 100644 --- a/src/main/java/dk/camelot64/kickc/TODO.txt +++ b/src/main/java/dk/camelot64/kickc/TODO.txt @@ -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 or sta 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