不同的类型 - 不同的字节顺序?

时间:2016-08-07 19:28:43

标签: c endianness

我正在处理相当旧的代码atm,此代码分别测试shortintlonglong long等类型的字节序。< / p>

是否有系统&#34;仍然在使用&#34;对于不同类型实际上有不同的字节顺序(由于这些类型的大小不同)?我所知道的唯一例子是PDP-11,其中32位的两个16位值存储在&#中34;大端序&#34;而这16位中的每一个的两个8位半部分存储在&#34;小端序#34;。

由于上述测试中未定义的行为,我可能需要重写部分内容并想知道是否值得努力保持这种复杂性。我知道(以及如何)我可以编写独立于系统字节序的代码,但这将是我目前没有时间的很多变化。

1 个答案:

答案 0 :(得分:2)

Big endian机器仍在使用中,TI在其中提供了许多示例,在数字信号处理器(DSP)中,以及Motorola 68000就是示例的通用处理器中。值得注意的是,在某些DSP和RISC处理器(例如ARM和Power)中,字节序是可配置的,有时甚至是多个级别。

这里是TI的一个示例,该示例结合了大端和小端处理器的特定功能 "OMAP910 Device"

以下IEEE文章Endianess in personal computers

中描述了通用处理器的流行病史。

在设计中使用DSP或ARM的原因包括:与通用处理器相比,该设备可以针对特定功能进行优化,更具成本效益,需要更少的支持电路或使用更少的功率。 OMAP910展示了预期功能的局限性。

为在具有不同字节序的平台上运行而开发的代码通常是针对平台的字节序进行条件化的,并且在可配置且相关的地方,规则通常是明确设置或检测字节序。