1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /* 7zCrcT8.c */
- #include "7zCrc.h"
- #define kCrcPoly 0xEDB88320
- #define CRC_NUM_TABLES 8
- UInt32 g_CrcTable[256 * CRC_NUM_TABLES];
- void MY_FAST_CALL CrcGenerateTable()
- {
- UInt32 i;
- for (i = 0; i < 256; i++)
- {
- UInt32 r = i;
- int j;
- for (j = 0; j < 8; j++)
- r = (r >> 1) ^ (kCrcPoly & ~((r & 1) - 1));
- g_CrcTable[i] = r;
- }
- #if CRC_NUM_TABLES > 1
- for (; i < 256 * CRC_NUM_TABLES; i++)
- {
- UInt32 r = g_CrcTable[i - 256];
- g_CrcTable[i] = g_CrcTable[r & 0xFF] ^ (r >> 8);
- }
- #endif
- }
- UInt32 MY_FAST_CALL CrcUpdateT8(UInt32 v, const void *data, size_t size, const UInt32 *table);
- UInt32 MY_FAST_CALL CrcUpdate(UInt32 v, const void *data, size_t size)
- {
- return CrcUpdateT8(v, data, size, g_CrcTable);
- }
- UInt32 MY_FAST_CALL CrcCalc(const void *data, size_t size)
- {
- return CrcUpdateT8(CRC_INIT_VAL, data, size, g_CrcTable) ^ 0xFFFFFFFF;
- }
|