1、基础概念学习:CRC32为例详细解析(菜鸟至老鸟进阶)
2、内核源码参考:
1) tools/pcmcia/crc32hash.c
static unsigned int crc32(unsigned char const *p, unsigned int len)
{
int i;
unsigned int crc = 0;
while (len--) {
crc ^= *p++;
for (i = 0; i < 8; i++)
crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0);
}
return crc;
}
2) 软件通用实现
lib/crc32.c
3) arm64 硬件实现
arch/arm64/crypto/crc32-ce-core.S
3、使用 x86 无进位乘法指令实现 crc32 快速计算的原理