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

 WASM Phorum —› WASM.WIN32 —› нужно конкретно ракритиковать

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


Дата: Янв 31, 2003 01:05:38

Люди! проявите всю имеющуюся у вас вредность и скажите в чем слабость этой функции, если использовать ее для нахождения контрольной суммы (нужен выход(сумма) в 16 байт)

Hacher proc uses edi esi ebx pOutHach:dword, pDataBuffer:dword, SizeBuffer:dword

xor ecx, ecx
push ecx
mov ebx, pOutHach
mov esi, pDataBuffer
or edx, 0FFFFFFFFh
mov ecx, SizeBuffer
baitLop:
lodsb
xor dl, al
push ecx
mov ecx, 10h
loops:
push ecx
mov ecx, 32
bitLop:
shr edx, 1
.if CARRY?
xor edx, 0EDB88320h
.endif
loop bitLop
add [ebx], dl
inc ebx
inc byte ptr [esp+8]
.if byte ptr [esp+8] == 10h
mov byte ptr [esp+8], 0
sub ebx, 10h
.endif
pop ecx
loop loops
pop ecx
loop baitLop
pop ecx
ret

Hacher endp


Дата: Янв 31, 2003 11:17:08

Нафиг 16 байт CRC, если можно просто crc32 ?


Дата: Янв 31, 2003 18:03:51

Все эффективные алгоритмы используют таблицы. Для CRC16 - 512 байт таблицы и 15 строк кода(приблизительно). Не забудь выровнить метку условного перехода. Да и еще, обращенный алгоритм немного быстрее.


Дата: Янв 31, 2003 21:27:39

Большое спасибо _sd2000_ за отличную наводку.
Очень помогла мысль о CRC16. Не мог сразу въехать насчет размера
таблицы. Нашел статью о том как табицы мастерить в юнкоде и все пошло как по маслу. Сейчас ровняю метку, тоже не пойму как пропустил.
Наверно такие золотые мысли больше нигде, кроме WASM.RU, нельзя прочитать.


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