view README @ 3:6483683ac857 default tip

*: add profiling code too; expand x86 to use all eight XMM registers basically ported verbatim from the assembly
author Paper <paper@tflc.us>
date Mon, 09 Feb 2026 21:30:30 -0500
parents ead9f84d11db
children
line wrap: on
line source

This code was mostly written as an experiment, to see just how much
could be done using only the C preprocessor (give or take). Turns out
you can do quite a lot.

In fact, *all* of the tables in this library are generated at compile-time.
The polynomial is #define'd in crc32i.h, and all of the tables are generated
through a combination of enums and preprocessor trickery. Note that this
may cause this code to compile slowly on some machines or compilers.

At the moment it is hardcoded for gcc, but it could be adapted to other
compilers if they also have features like e.g. alignas() or whatever.
The code relies on C99 stdint.h but if that's not available you can just
typedef to the suitable C89 types on your system.

--paper <paper@tflc.us>