一般而言,大小端是硬件架构而言,Intel默认是小端,PPC是大端,ARM默认是小端,但有些架构可配置为大端。例如ARMv8 aarch64 SCTLR_EL1(System Control Register, Exception Level 1)b'25 EE位为1代表大端。
- 编译型语言大部分会跟随硬件大小端。
- 中间件语言可脱离具体硬件架构,Java定义class文件必须是大端(The class File Format),当然,具体到特定硬件架构还需要遵循硬件大小端约束,例如跑在x86机器JVM内存中保存多字节数据必须转换成小端。
- 网络协议默认就是大端,小端平台发送网络数据就必须先转换成大端。
- 注意,gcc早期可以使用-mbig-endian或-mlittle-endian编译大小端代码,新版本这些选项已经废弃,改用-mtune跟随硬件架构大小端编译相应代码。