From bde84544493bf4ca72fe59eacaecc847a4e54db8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20van=20Dorst?= Date: Sun, 7 Sep 2025 17:04:46 +0200 Subject: [PATCH] isletter(): optimized version Less instructions and jumps. Saves 39 bytes. ```patch 1634,1651c1621,1628 < mov r7,a < mov r6,a < ; cmd_parser.c:63: return (l >= 'a' && l <= 'z') || (l >= 'A' && l <= 'Z'); < cjne r7,#0x61,00326$ < 00326$: < mov _parse_vlan_sloc0_1_0,c < jc 00153$ < mov a,r7 < add a,#0xff - 0x7a < mov _parse_vlan_sloc0_1_0,c < jnc 00149$ < 00153$: < cjne r6,#0x41,00329$ < 00329$: < mov _parse_vlan_sloc0_1_0,c < jc 00132$ < mov a,r6 < add a,#0xff - 0x5a --- > ; cmd_parser.c:66: l |= 0x20; > ; cmd_parser.c:67: l -= 'A'; > orl a,#0x20 > ; cmd_parser.c:68: return (l <= ('Z'-'A')); > add a,#0xbf > add a,#0xff - 0x19 > cpl c > ; cmd_parser.c:245: if (cmd_words_b[2] > 0 && isletter(cmd_buffer[cmd_words_b[2]])) { 1653,1654c1630 < jc 00132$ < 00149$: --- > jnc 00132$ ``` --- cmd_parser.c | 7 ++++++- rtlplayground.mem | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cmd_parser.c b/cmd_parser.c index 27eb596..bf09cdf 100644 --- a/cmd_parser.c +++ b/cmd_parser.c @@ -60,7 +60,12 @@ __code uint8_t phys_to_log_port[6] = { inline uint8_t isletter(uint8_t l) { - return (l >= 'a' && l <= 'z') || (l >= 'A' && l <= 'Z'); + // return (l >= 'a' && l <= 'z') || (l >= 'A' && l <= 'Z'); + + // Make it upper case + l |= 0x20; + l -= 'A'; + return (l <= ('Z'-'A')); } diff --git a/rtlplayground.mem b/rtlplayground.mem index 7626c2d..cc92f39 100644 --- a/rtlplayground.mem +++ b/rtlplayground.mem @@ -26,4 +26,4 @@ Other memory: ---------------- -------- -------- -------- -------- PAGED EXT. RAM 0 256 EXTERNAL RAM 0x0001 0x1ae8 6888 16777216 - ROM/EPROM/FLASH 0x0000 0x1c71b 47003 16777216 + ROM/EPROM/FLASH 0x0000 0x1c6f2 46962 16777216