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