不同的类型 - 不同的字节顺序?
Different types - different endianness?
我正在使用相当旧的代码 atm,此代码分别测试 short
、int
、long
和 long long
等类型的字节顺序。
是否有系统 "still in use" 实际上对不同类型具有不同的字节顺序(由于这些类型的大小不同)? 我知道的唯一例子是PDP-11,其中 32 位值的两个 16 位半部分存储在 "big endian order" 中,而这 16 位中的每一个的两个 8 位半部分存储在 "little endian order".
中
由于上述测试中的未定义行为,我可能需要重写其中的部分内容,并想知道保持这种复杂性是否值得付出努力。我知道(以及如何)我可以编写独立于系统字节顺序的代码,但这将是我目前没有时间进行的大量更改。
Big endian 机器仍在使用,在数字信号处理器 (DSP) 中,TI 提供了大量示例,在通用处理器中,摩托罗拉 68000 就是一个示例。值得注意的是,在某些 DSP 和 RISC 处理器(c.f。ARM 和 Power)中,字节序是可配置的,有时在多个级别。
这是 TI 的一个示例,它结合了大端和小端处理器以实现特定功能, "OMAP910 Device"
以下 IEEE 文章 Endianess in personal computers
介绍了通用处理器中字节顺序的历史
在设计中使用 DSP 或 ARM 的原因包括:与通用处理器相比,设备可以针对特定功能进行优化、更具成本效益、需要更少的支持电路或使用更少的功率。 OMAP910 展示了预期功能的字节顺序。
在具有不同字节顺序的平台上开发到 运行 的代码通常根据平台的字节顺序进行条件化,并且在可配置和相关的情况下,规则通常是明确设置或检测字节顺序。
我正在使用相当旧的代码 atm,此代码分别测试 short
、int
、long
和 long long
等类型的字节顺序。
是否有系统 "still in use" 实际上对不同类型具有不同的字节顺序(由于这些类型的大小不同)? 我知道的唯一例子是PDP-11,其中 32 位值的两个 16 位半部分存储在 "big endian order" 中,而这 16 位中的每一个的两个 8 位半部分存储在 "little endian order".
中由于上述测试中的未定义行为,我可能需要重写其中的部分内容,并想知道保持这种复杂性是否值得付出努力。我知道(以及如何)我可以编写独立于系统字节顺序的代码,但这将是我目前没有时间进行的大量更改。
Big endian 机器仍在使用,在数字信号处理器 (DSP) 中,TI 提供了大量示例,在通用处理器中,摩托罗拉 68000 就是一个示例。值得注意的是,在某些 DSP 和 RISC 处理器(c.f。ARM 和 Power)中,字节序是可配置的,有时在多个级别。
这是 TI 的一个示例,它结合了大端和小端处理器以实现特定功能, "OMAP910 Device"
以下 IEEE 文章 Endianess in personal computers
介绍了通用处理器中字节顺序的历史在设计中使用 DSP 或 ARM 的原因包括:与通用处理器相比,设备可以针对特定功能进行优化、更具成本效益、需要更少的支持电路或使用更少的功率。 OMAP910 展示了预期功能的字节顺序。
在具有不同字节顺序的平台上开发到 运行 的代码通常根据平台的字节顺序进行条件化,并且在可配置和相关的情况下,规则通常是明确设置或检测字节顺序。