annotate README @ 0:422835bc1aca

*: checkin
author Paper <paper@tflc.us>
date Mon, 09 Feb 2026 01:15:00 -0500
parents
children 90cb48b87dcc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
1 This code was mostly written as an experiment, to see just how much
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
2 could be done using only the C preprocessor (give or take). Turns out
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
3 you can do quite a lot.
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
4
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
5 In fact, *all* of the tables in this library are generated at compile-time.
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
6 The polynomial is #define'd in crc32i.h, and all of the tables are generated
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
7 through a combination of enums and preprocessor trickery. Note that this
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
8 may cause this code to compile slowly on some machines or compilers.
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
9
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
10 At the moment it is hardcoded for x86-64 and gcc, but it could be adapted to
422835bc1aca *: checkin
Paper <paper@tflc.us>
parents:
diff changeset
11 other compilers if they also have features like e.g. alignas() or whatever.