From 786836e2e7598b641a40fbf68aab6904487065b9 Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Fri, 10 Jul 2026 22:24:50 +0300 Subject: [PATCH] =?UTF-8?q?libc+libbgi:=20fast-=D0=B2=D0=B5=D1=80=D1=81?= =?UTF-8?q?=D0=B8=D0=B8=20=D1=81=D0=BE=D0=B1=D0=B8=D1=80=D0=B0=D1=8E=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D1=81=20--max-allocs-per-node=20100000?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Идея из mdview2 (memory/mdview2_size_budget): большее время компиляции покупает более агрессивную регистровую аллокацию SDCC. Применено к fast-вариантам обеих библиотек (sprinter.lib, bgi256.lib); safe-версии остаются на дефолте — быстрая пересборка для отладки. Замер (47 программ, роста нет): solidt -507, filetest -506, fbench -461, bgi_img -339, bgitest -316, gfx_dbuf -316, fdmax -278, errno -179, gfx_demo -173, accfill -143, ptime -128, stattest -117, cbl* -53, остальные до -28. Время сборки: libc fast 17с -> 68с, libbgi 43с (обе) — терпимо. MAME: filetest + bgitest зелёные. Co-Authored-By: Claude Fable 5 --- docs/size_baseline.tsv | 40 ++++++++++++++++++++-------------------- libbgi/Makefile | 4 ++-- libc/Makefile | 2 +- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/size_baseline.tsv b/docs/size_baseline.tsv index 722c599..25ed707 100644 --- a/docs/size_baseline.tsv +++ b/docs/size_baseline.tsv @@ -1,5 +1,5 @@ # Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update -accfill 3963 +accfill 3820 argv 3431 assrtest 3847 attrprob 4088 @@ -7,39 +7,39 @@ banked 1056 bankedbg 1067 banklocl 4832 banktest 3767 -bgi_img 6572 -bgitest 4053 +bgi_img 6233 +bgitest 3737 bios_text 4460 cat 915 -cblstream 6277 -cbltest 6407 -cblwav 6486 +cblstream 6224 +cbltest 6354 +cblwav 6431 conio 4631 conio2 3954 dec_test 860 -errno 6145 -fbench 8656 -fdmax 6328 -filetest 11143 +errno 5966 +fbench 8195 +fdmax 6050 +filetest 10637 gets 509 -gfx_dbuf 5378 -gfx_demo 4286 +gfx_dbuf 5062 +gfx_demo 4113 hello 4167 hello2 4244 -irqtest 5881 +irqtest 5853 ls 4916 malloc 4462 -mdview 19115 -mdview2 27033 -mem_test 4558 +mdview 19113 +mdview2 27031 +mem_test 4556 mouse 4384 openenv 6127 -ptime 5896 -rt_test 4906 +ptime 5768 +rt_test 4905 seek 4177 simple 960 -solidt 12107 -stattest 7700 +solidt 11600 +stattest 7583 stdlib 6643 stest2 3644 strtest 1340 diff --git a/libbgi/Makefile b/libbgi/Makefile index 9c8d4eb..1fbf39b 100644 --- a/libbgi/Makefile +++ b/libbgi/Makefile @@ -47,11 +47,11 @@ safe: $(LIB_SAFE) $(BUILD)/fast/common/%.rel: $(CURDIR)/common/%.c @mkdir -p $(dir $@) - $(SDCC) -mz80 --no-std-crt0 --std-c99 --opt-code-size -DGFX_NOCHECK $(INC) -c -o $@ $< + $(SDCC) -mz80 --no-std-crt0 --std-c99 --opt-code-size -DGFX_NOCHECK --max-allocs-per-node 100000 $(INC) -c -o $@ $< $(BUILD)/fast/bgi256/%.rel: $(CURDIR)/bgi256/%.c @mkdir -p $(dir $@) - $(SDCC) -mz80 --no-std-crt0 --std-c99 --opt-code-size -DGFX_NOCHECK $(INC) -c -o $@ $< + $(SDCC) -mz80 --no-std-crt0 --std-c99 --opt-code-size -DGFX_NOCHECK --max-allocs-per-node 100000 $(INC) -c -o $@ $< # --- Safe version: guard'и включены (по умолчанию) --- diff --git a/libc/Makefile b/libc/Makefile index 2e34ecd..5723e50 100644 --- a/libc/Makefile +++ b/libc/Makefile @@ -72,7 +72,7 @@ safe: $(LIB_SAFE) # --- Fast: -DLIBC_NOCHECK (параметр-валидации выключены) ------------ $(BUILD)/fast/%.rel: $(CURDIR)/%.c @mkdir -p $(dir $@) - $(SDCC) $(CC_FLAGS) -DLIBC_NOCHECK -c -o $@ $< + $(SDCC) $(CC_FLAGS) -DLIBC_NOCHECK --max-allocs-per-node 100000 -c -o $@ $< $(BUILD)/fast/%.rel: $(PROJ_ROOT)/runtime/%.s @mkdir -p $(dir $@)