From 78161561e742f4e7b028a3b41ed493ecbcb2558a Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Fri, 10 Jul 2026 22:35:44 +0300 Subject: [PATCH] =?UTF-8?q?sprinter-cc:=20--max-allocs=20100000=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87=D0=B0=D0=BD=D0=B8=D1=8E?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D1=81=D0=BA=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=BA=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Тот же приём, что во fast-библиотеках (786836e): агрессивная регистровая аллокация SDCC. --max-allocs N переопределяет (меньшее значение = быстрее компиляция). Замер (47 программ): mdview -235, banklocl -149, fbench -110, filetest -90, ls -81, solidt -69 и т.д.; 4 микро-роста (+1..+12 — другие развязки аллокатора, шум). Полная сборка ~2 мин -> ~4:15. MAME: filetest/bgitest/seek (с big.txt, скриншот пользователя) зелёные. Co-Authored-By: Claude Fable 5 --- bin/sprinter-cc | 12 +++++--- docs/size_baseline.tsv | 64 +++++++++++++++++++++--------------------- 2 files changed, 40 insertions(+), 36 deletions(-) diff --git a/bin/sprinter-cc b/bin/sprinter-cc index 2c5ecd6..21c1eac 100755 --- a/bin/sprinter-cc +++ b/bin/sprinter-cc @@ -34,9 +34,9 @@ # --bank N=FILE.c compile FILE.c as bank N; repeatable; pulls crt0_banked # automatically and adds -Wl-b_BANKN=0x{N}C000 # --mkexe FLAG extra mkexe flag (repeatable; e.g. --mkexe -p --mkexe 0) -# --max-allocs N SDCC --max-allocs-per-node (default: SDCC's 3000). -# Higher values give smaller/faster code at the cost of -# compile time; 10000..100000 is a reasonable range. +# --max-allocs N SDCC --max-allocs-per-node (default: 100000 — smaller/ +# faster code at the cost of compile time; pass a lower +# value, e.g. SDCC's own default 3000, to compile faster). # --debug enable runtime diagnostics — defines DEBUG_RT for both # sdcc (-DDEBUG_RT) and the crt0 assembly (prepended # `DEBUG_RT = 1`). Exposes runtime introspection symbols @@ -88,7 +88,11 @@ SOURCES=() LD_EXTRA=() MKEXE_EXTRA=() BANK_SPECS=() # entries like "1=engine.c" -MAX_ALLOCS="" # if set, passed to sdcc as --max-allocs-per-node +MAX_ALLOCS="100000" # sdcc --max-allocs-per-node; дефолт 100000 — агрессивная + # регистровая аллокация (медленнее компиляция, меньше/ + # быстрее код; как fast-сборки библиотек). --max-allocs N + # переопределяет (например 3000 = дефолт SDCC для скорости + # компиляции). GFX_MODE="" # "256" → link BGI graphics.h driver sprinter_gfx256.lib SAFE_LIBS=0 # if 1, prefer *_safe.lib variants (fallback to standard) diff --git a/docs/size_baseline.tsv b/docs/size_baseline.tsv index 25ed707..d913ca6 100644 --- a/docs/size_baseline.tsv +++ b/docs/size_baseline.tsv @@ -1,48 +1,48 @@ # Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update -accfill 3820 +accfill 3772 argv 3431 assrtest 3847 -attrprob 4088 +attrprob 4087 banked 1056 bankedbg 1067 -banklocl 4832 +banklocl 4683 banktest 3767 -bgi_img 6233 +bgi_img 6222 bgitest 3737 -bios_text 4460 -cat 915 -cblstream 6224 -cbltest 6354 -cblwav 6431 -conio 4631 -conio2 3954 +bios_text 4461 +cat 913 +cblstream 6217 +cbltest 6366 +cblwav 6434 +conio 4605 +conio2 3929 dec_test 860 errno 5966 -fbench 8195 -fdmax 6050 -filetest 10637 +fbench 8085 +fdmax 6023 +filetest 10547 gets 509 -gfx_dbuf 5062 -gfx_demo 4113 +gfx_dbuf 5032 +gfx_demo 4103 hello 4167 hello2 4244 -irqtest 5853 -ls 4916 -malloc 4462 -mdview 19113 +irqtest 5850 +ls 4835 +malloc 4461 +mdview 18878 mdview2 27031 -mem_test 4556 -mouse 4384 -openenv 6127 -ptime 5768 -rt_test 4905 -seek 4177 -simple 960 -solidt 11600 -stattest 7583 +mem_test 4555 +mouse 4382 +openenv 6124 +ptime 5744 +rt_test 4892 +seek 4188 +simple 955 +solidt 11531 +stattest 7549 stdlib 6643 stest2 3644 strtest 1340 -text_palette 5036 -timedir 5471 -winrest 4479 +text_palette 5024 +timedir 5454 +winrest 4459