libc+libbgi: fast-версии собираются с --max-allocs-per-node 100000

Идея из 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 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 22:24:50 +03:00
parent 9f8aa6fc28
commit 786836e2e7
3 changed files with 23 additions and 23 deletions
+20 -20
View File
@@ -1,5 +1,5 @@
# Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update # Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update
accfill 3963 accfill 3820
argv 3431 argv 3431
assrtest 3847 assrtest 3847
attrprob 4088 attrprob 4088
@@ -7,39 +7,39 @@ banked 1056
bankedbg 1067 bankedbg 1067
banklocl 4832 banklocl 4832
banktest 3767 banktest 3767
bgi_img 6572 bgi_img 6233
bgitest 4053 bgitest 3737
bios_text 4460 bios_text 4460
cat 915 cat 915
cblstream 6277 cblstream 6224
cbltest 6407 cbltest 6354
cblwav 6486 cblwav 6431
conio 4631 conio 4631
conio2 3954 conio2 3954
dec_test 860 dec_test 860
errno 6145 errno 5966
fbench 8656 fbench 8195
fdmax 6328 fdmax 6050
filetest 11143 filetest 10637
gets 509 gets 509
gfx_dbuf 5378 gfx_dbuf 5062
gfx_demo 4286 gfx_demo 4113
hello 4167 hello 4167
hello2 4244 hello2 4244
irqtest 5881 irqtest 5853
ls 4916 ls 4916
malloc 4462 malloc 4462
mdview 19115 mdview 19113
mdview2 27033 mdview2 27031
mem_test 4558 mem_test 4556
mouse 4384 mouse 4384
openenv 6127 openenv 6127
ptime 5896 ptime 5768
rt_test 4906 rt_test 4905
seek 4177 seek 4177
simple 960 simple 960
solidt 12107 solidt 11600
stattest 7700 stattest 7583
stdlib 6643 stdlib 6643
stest2 3644 stest2 3644
strtest 1340 strtest 1340
1 # Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update
2 accfill
3 argv
4 assrtest
5 attrprob
7 bankedbg
8 banklocl
9 banktest
10 bgi_img
11 bgitest
12 bios_text
13 cat
14 cblstream
15 cbltest
16 cblwav
17 conio
18 conio2
19 dec_test
20 errno
21 fbench
22 fdmax
23 filetest
24 gets
25 gfx_dbuf
26 gfx_demo
27 hello
28 hello2
29 irqtest
30 ls
31 malloc
32 mdview
33 mdview2
34 mem_test
35 mouse
36 openenv
37 ptime
38 rt_test
39 seek
40 simple
41 solidt
42 stattest
43 stdlib
44 stest2
45 strtest
+2 -2
View File
@@ -47,11 +47,11 @@ safe: $(LIB_SAFE)
$(BUILD)/fast/common/%.rel: $(CURDIR)/common/%.c $(BUILD)/fast/common/%.rel: $(CURDIR)/common/%.c
@mkdir -p $(dir $@) @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 $(BUILD)/fast/bgi256/%.rel: $(CURDIR)/bgi256/%.c
@mkdir -p $(dir $@) @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'и включены (по умолчанию) --- # --- Safe version: guard'и включены (по умолчанию) ---
+1 -1
View File
@@ -72,7 +72,7 @@ safe: $(LIB_SAFE)
# --- Fast: -DLIBC_NOCHECK (параметр-валидации выключены) ------------ # --- Fast: -DLIBC_NOCHECK (параметр-валидации выключены) ------------
$(BUILD)/fast/%.rel: $(CURDIR)/%.c $(BUILD)/fast/%.rel: $(CURDIR)/%.c
@mkdir -p $(dir $@) @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 $(BUILD)/fast/%.rel: $(PROJ_ROOT)/runtime/%.s
@mkdir -p $(dir $@) @mkdir -p $(dir $@)