Планирую заменить в лоадере контрольную сумму на CRC, в связи с чем реализовал CRC-8/16/24/32/64. Обращаю внимание, что входные и выходные параметры у разных процедур передаются в разных регистрах.
Процедуры не оптимизированные, но правильные (проверял по контрольным значениям). Может кто-нибудь оптимизирует или даст ссылку на более эффективные варианты.
- - - Добавлено - - -
Дополню - здесь вычисление без таблиц, вычисление crc-32 по таблице есть, например, в эксисайзере (и я эту процедуру потом использовал в тестах).
- - - Добавлено - - -
Если известна максимальная длина фрагмента данных и требуемая обнаруживающая способность, то можно выбрать подходящий полином здесь. Только надо учесть, что в таблице полиномы записаны в неполном виде, если дальше прощелкать, там есть и "полные" варианты, или можно самим дополнить.
- - - Добавлено - - -
В crc32 и 64 можно убрать push h и pop h