sprinter-cc: --max-allocs 100000 по умолчанию для пользовательского кода

Тот же приём, что во 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 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 22:35:44 +03:00
parent 786836e2e7
commit 78161561e7
2 changed files with 40 additions and 36 deletions
+8 -4
View File
@@ -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)
+32 -32
View File
@@ -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
1 # Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update
2 accfill
3 argv
4 assrtest
5 attrprob
6 banked
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
46 text_palette
47 timedir
48 winrest