
Сообщение от
alone
Что если у нас есть ветка, которая вставляет L байтов (i=0..L-1) следующим образом:
mem[pointer+i] = mem[pointer+i-disp] xor <data[i]>
Где <data[i]> - только младшие N битов, причём N вычисляется так (вариация на тему DAKX):
N=curN[L]
Читаем из потока биты и считаем число единиц M - до первого нуля или пока N+M-1 < 8
N=N+M-1
curN[pointer mod disp]=N
Такое кодирование может оптимизировать много вызовов типа:
ld hl,nn
ld a,n
call nn
или развёрнутых лупов типа
add hl,bc
ld a,h
ld e,n
ld (de),a
В последнем случае L=disp.