从大端迁移到小端:如何预先确定有问题的代码?

Migrating from big to little endian: How to predetermine problematic code?

我打算将一个 C 代码 (30+ kSLOC) 的小项目从 32 位大平台迁移到 32 位小端平台。我想检查 ante festum,这会有多少工作,所以我想找出依赖于原始字节顺序的代码。

我正在寻找尽可能全面的 C 代码习语集合,这些习语取决于大端。不必为检测实际代码中使用此类习语所需的努力而烦恼,我有一些可用的代码分析工具支持。

需要注意的事项:

  • 可疑的指针转换和不同大小的整数类型之间的可疑类型转换。这些也可能是潜在的对齐或严格的别名错误。
  • Serialization/de-serialization 代码,其中数据被读取 from/written 到字节数组。
  • 数据通信接口serialization/de-serialization代码。也就是说:CPU 恰好与网络具有相同的字节顺序,这对于大端系统尤其常见。以太网、CAN、UART等。
  • 具有 bit-fields 的结构。
  • 联合类型双关。