* /
я есть небольшой 8-битный процессор, в некоторых выходных линиях которого есть декодер N-to-M - например, для случая 5–32 бит я записываю 00101, а бит 5 изменяет состояние. Единственный интерфейс к выходу - состояние изменения, нет никакого обратного чтения.
Устройство подсчитывает быстро (но случайным образом) происходящие события и должно предоставлять этот счет в виде кода «однобитовых изменений» для другого устройства. Выходные контакты считываются параллельно другим устройством и могут считываться так же быстро или с той же скоростью, что и другое устройство, поэтому подсчет необходим.
Мне НЕ нужно использовать стандартный двоичный отражающий код Грея - я могу использовать любой однобитовый изменяющий код.
Тем не менее, я хочу иметь возможность отслеживать следующий бит для эффективного изменения.
У меня нет инструкции "LowestBitSet", и поиск младшего бита, установленного для четырех 8-битных регистров, занимает много времени - поэтому я не могу использовать этот "общий" подход:
Keep binary counter A
Find B as A XOR (A+1)
Bit to change is LowestBitSet in B
Я хочу вычислить это как можно меньше памяти и регистров, и память определенно слишком ограничена для любой большой таблицы поиска. Время цикла является более важным фактором.
Есть предложения по алгоритмам?