Compare commits
2
Commits
a79c8f4934
...
d97dcffaa7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d97dcffaa7 | ||
|
|
e9125d4024 |
@@ -615,3 +615,86 @@ err = 1 − q·A
|
||||
52b3a0/52b3aa: 140a40(exp-var)/140b00 — пост-17
|
||||
52b716/52b71d: 140b30(кривая-float)/140aa0 — FIR-секция
|
||||
```
|
||||
|
||||
## ДОПОЛНЕНИЕ 24mm5: ПОЛНАЯ КАРТА ТРАКТА — буферы каждого шага; design = conv-тело 22z
|
||||
|
||||
### Полоса-цикл (float-путь), трасса регистров 52a580–52b3cd
|
||||
```
|
||||
пре: [678i] *= скаляры (s888-цепь, xmm7·[540870]·[54088c])
|
||||
LOG#1 (140980!) на [678i] ; 52a63a — В ЛОГ-ДОМЕН заранее
|
||||
combine 52d650([678i],[6f8])
|
||||
шаг 9a: vec698@698 *= (1−[54087c]) ; zero
|
||||
шаг 9b: vec6f8@6f8 += [54087c]·0.8
|
||||
шаг 9c: DIVIDE dst=[678i]: A=arg(rcx)=[678i], B=arg(rdx)=[6f8]
|
||||
⇒ [678i] = vec6f8 / bands_curve ; in-place
|
||||
шаг 10: dc40: rcx=ACC_i(@7c8+i!), rdx=[678i], r8=[6f8]
|
||||
⇒ vec6f8 = bands_curve − ACC_i ; ACC — таблица указателей 7c8
|
||||
шаг 11: fma ATT(@6c8)/REL(@6e8) — пары вызовов 1fa0/1940
|
||||
шаг 12: COPY 1b80/1d60 c [678i]
|
||||
шаг 13: зеркало 9a/9b + оп 1eb0(cbe0)([678i],[6f8])
|
||||
шаг 14: EXP#1 (1409e0=expf) на [678i]; затем += (−1)
|
||||
шаг 15: array-mul: X[rsp+0x40] *= [678i] ; НЕ bands*=track!
|
||||
шаг 16: [678i] *= kWarp@[5406a8]
|
||||
LOG#2 (140980) на [678i] ; 52aefd — возврат в лог!
|
||||
IIR4 ×2 бидир ; ~52af09–52b2b6, СПЕКТРАЛЬНОЕ
|
||||
; СМЕШЕНИЕ В ЛОГ-ДОМЕНЕ
|
||||
скаляры xmm14(−0.7)/xmm15(−0.5)-класс
|
||||
шаг 17: EXP#2 (1409e0) на [678i]; += scalar; exp-var 140a40 финал
|
||||
→ bands_final @678i
|
||||
```
|
||||
|
||||
### FIR-секция (52b3cd–52b94a)
|
||||
```
|
||||
bands_final *= s888, *= [540888]; += xmm7 (скаляр с expf(−ln1000)=0.001)
|
||||
DESIGN: call 535a70(rcx=scratch@628, rdx=bands)
|
||||
535a70 = диспетчер СО СВОПОМ аргументов → ILT 140a10/140a70 →
|
||||
→ РЕЗОЛВ: float=1802a24c0 (!!!), double=1802fa420
|
||||
⚡ ЭТО ТЕЛО FFT-CONV ИЗ ОТКРЫТОГО ВОПРОСА 22z («conv_float_a24c0.dis»,
|
||||
184K AVX2). Дизайн детектора == недекодированный conv. Пазл склеен.
|
||||
дальше: copy th2210; complex-op th2180/th1bb0 с твидл-буферами
|
||||
548/550/598; знак −1 (52d920); EXP 140b30(=1803831c0);
|
||||
окно 52d990(WINfreq); pair-scalar 1880/1ca0; *= wet[540888];
|
||||
финал df0(FIR, track_i)
|
||||
```
|
||||
|
||||
### Где γ=1.760561
|
||||
mask = bands_final^γ точно ⇒ γ возникает между scratch=log(bands_final)
|
||||
и финальной маской: либо ВНУТРИ design 1802a24c0 (масштаб на выходе),
|
||||
либо в комплекс-op цепочке 52b644–52b716 перед EXP 140b30. Обе точки
|
||||
локализованы до ~десятка инструкций — декод следующего раунда.
|
||||
|
||||
### Исправление понимания слотов
|
||||
- 688 = exp(628) тривиально: 628 — копия лога bands_final (design),
|
||||
688 — сами bands_final (или их exp-копия). «track» — имя рендерснапа.
|
||||
- 678 ПОСЛЕ цикла = bands_final; применённая маска перезаписывает
|
||||
поверх (финальный combine) — поэтому захваченный 678 матчит аудио.
|
||||
|
||||
## ДОПОЛНЕНИЕ 24mm6: ПЕРЕД EXP В FIR — УМНОЖЕНИЕ НА 2.0 (не −1!); гипотеза γ=2·k_design
|
||||
|
||||
### Точная последовательность 52b60c–52b720 (проверено, без пропусков)
|
||||
```
|
||||
rcx=[540628](scratch), rdx=[r15](источник design — уточнить r15!)
|
||||
call 535a70 → swap → 1802a24c0(scratch ← DESIGN(src))
|
||||
th2210: FIR(@540668) ← scratch (copy, edx=0)
|
||||
opB: th2180(FIR, buf548|550, buf598) ; complex pass
|
||||
FIR[n]=0
|
||||
FIR[1 .. n/2] *= xmm13 = 2.0 @1824c41e0 ; 52d920, БЫЛО «−1» в 24l — НЕВЕРНО
|
||||
FIR[n/2+1 .. n-1] *= xmm9 (=0) ; 52db50
|
||||
opC: th1a90(FIR, buf548|550, buf598) ; complex pass
|
||||
EXP in-place 140b30 (float) / 140aa0 (double)
|
||||
```
|
||||
xmm13/xmm9 не перезаписываются между 52b3d6 и использованием (проверено).
|
||||
|
||||
### Гипотеза источника γ
|
||||
Если opB/opC сохраняют пропорциональность (упаковка real-FFT), то
|
||||
mask = exp(2 · scratch) ⇒ γ = 2·k, где k — масштаб выхода design
|
||||
1802a24c0 относительно ln(bands): k = 1.760561/2 = 0.8802805.
|
||||
Альтернатива: k=1, а opB/opC суммарно дают множитель 0.88028.
|
||||
|
||||
### Открытые микровопросы (следующий раунд, всё локализовано)
|
||||
1. Что такое [r15] на входе design (bands_final@678 или иной буфер)?
|
||||
2. Семантика opB/opC (th2180/th1bb0/th1a90/th19d0 + твидлы 548/550/598)
|
||||
— вероятно упаковка/развёртка real-FFT.
|
||||
3. Масштаб выхода design: декод хвоста 1802a24c0 (файл уже есть:
|
||||
nls_dasm/conv_float_a24c0.dis, 184K).
|
||||
4. Согласование с identity-фазой захватов (гонка финального combine).
|
||||
|
||||
Reference in New Issue
Block a user