diff --git a/handoff/BLOCKMAP_529fe0.md b/handoff/BLOCKMAP_529fe0.md index 5c75b49..edb7f4d 100644 --- a/handoff/BLOCKMAP_529fe0.md +++ b/handoff/BLOCKMAP_529fe0.md @@ -615,3 +615,56 @@ 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 матчит аудио.