I am merely pointing out things that would make the generated code smaller. The 25-50% more code that GCBASIC generates is currently the remaining hurdle for me to drop BASCOM and adopt GCBASIC.
Table Asciitab 0x00,0x00,0x00,0x00,0x00 ' 32 space 0x00,0x06,0x5F,0x06,0x00 ' 33 ! 0x07,0x03,0x00,0x07,0x03 ' 34 double quote 0x24,0x7E,0x24,0x7E,0x24 ' 35 # 0x24,0x2B,0x6A,0x12,0x00 ' 36 $ 0x63,0x13,0x08,0x64,0x63 ' 37 % 0x36,0x49,0x56,0x20,0x50 ' 38 & 0x00,0x07,0x03,0x00,0x00 ' 39 ' 0x00,0x3E,0x41,0x00,0x00 ' 40 ( 0x00,0x41,0x3E,0x00,0x00 ' 41 ) 0x08,0x3E,0x1C,0x3E,0x08 ' 42 * 0x08,0x08,0x3E,0x08,0x08 ' 43 + 0x00,0xE0,0x60,0x00,0x00 ' 44 , 0x08,0x08,0x08,0x08,0x08 ' 45 - 0x00,0x60,0x60,0x00,0x00...
For regular numeric tables, for example for the font table I am using, I see in the assembler this section: ASCIITAB_H: mov SysWORDTempA,SYSSTRINGA mov SysWORDTempA_H,SYSSTRINGA_H ldi SysWORDTempB,1 ldi SysWORDTempB_H,0 rcall SYSCOMPLESSTHAN16 sbrs SysByteTempX,0 ret ldi SysReadA, low(TABLEASCIITAB_H<<1) ldi SysReadA_H, high(TABLEASCIITAB_H<<1) add SysReadA, SysStringA adc SysReadA_H, SysStringA_H lpm ret TABLEASCIITAB_H: .DB 1 However, this appears to be unused. Nothing jumps to the ASCIITAB_H label...
You can now consider changing the dozens, if not hundreds, of instances of "SET C OFF : ROTATE" to "SHIFT" in all the .h and library files. Casually browsing through some of them I saw many. This will improve the emitted assembler code for microcontrollers that have a native shift instruction. At least on AVRs this will make a noticeable difference. Shifting is used in many places. Think about all the serial communication where bytes have to be shifted out and in. Think about all the multiplications...
Yes, zip file on Onedrive works for me.
Wonderful! Can't wait to test it on some of my applications. I use SHIFT often in my coding.
Thanks. Compilation works without errors. Will do functional testing in silicon over the next days.
Out of curiosity, does GCBASIC use an existing lexer/parser (ex. lex and yacc) and then only defines the syntax with rules, or is this all custom coded.