|
|
| Посл.отвђт | Сообщен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 |