· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Бит чётности

Посл.отвђт Сообщенiе


Дата: Май 5, 2004 21:48:41

В первых процессорах в регистре флагов существовал такой бит чётности, который выставлялся в 1, если кол-во единиц в результате не чётно. А есть ли такой (или подобный) бит в регистре флагов сейчас? И как его можно пользовать? Можно ли по нему делать переход? Просто я сейчас работаю над программой в которой его использование увеличило бы скорость работы коллосально, а время в ней очень критично. Заранее спасибо.
Makc


Дата: Май 5, 2004 22:24:11

parity flag


Дата: Май 5, 2004 22:45:19


Дата: Май 6, 2004 00:32:50

Мне мерещится что это только для мл байта. Проверь


Дата: Май 6, 2004 01:21:54

цитата из интеловских мануалов (том 1, стр. 3-15):

PF(bit2) Parity flag. Set if least-significant byte of the result contains an even number of 1 bits; cleared otherwise

вообще доки рулят...


Дата: Май 6, 2004 17:45:49

...мда... странно, а я то думал... век живи - век учись.
А если надо например EAX анализировать на чётность - так надо ручками - каждый бит?..


Дата: Май 6, 2004 18:01:58

Подождите, подождите. Что такое "четность" числа? Это делимость на два. Как проверить делится ли число на два? Проверить самый младший бит. Как это сделать - описывалось не раз. Или я чего-то сам не понимаю? Развели тут...


Дата: Май 6, 2004 18:05:59

Или я чего-то сам не понимаю

имеется в виду не четность числа, а четное количество единичных бит в числе...


Дата: Май 6, 2004 18:11:17 · Поправил: volodya

а четное количество единичных бит в числе...

А-а-а! Понял :-)
Ну так и это не ново. На win32.asmcommunity обсуждали подсчет единичек в числе. Общая идея для самой бешеной скорости - это использование табличного алгоритма.


Дата: Май 7, 2004 00:36:26

Общая идея для самой бешеной скорости - это использование табличного алгоритма

если это умеет камень, почему бы это не использовать ? :)
(правда только для младшего байта, но все-же...)


Дата: Май 8, 2004 06:52:40

Если надо для DWORD, то PE тоже можно заюзать, но придется еще добывить всяких BSWAP & ROR
Тут зависит от того, как организованны данные


ЗЫ
подсчет единичек в числе был и на Ѳоруме..


Дата: Май 8, 2004 06:55:48

S_T_A_S_
BSWAP & ROR не влияют на PF. Придётся ещё и TEST задействовать.


Дата: Май 8, 2004 07:43:37 · Поправил: S_T_A_S_

ROR может понадобиться чтобы уйти от партиальных регистров.
Иначе можно и так:
mov	edx, eax
bswap	eax
xor	eax, edx
xor	al, ah
JP	......


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 1.376