IAR Embedded Workbench - 设置变量的endian-ness

Sei*_*oni 1 c embedded arm endianness iar

我正在使用IAR Embedded Workbench for ARM(ARM7TDMI-S),我的大部分工作都是使用little-endian格式完成的.但是,我在手册中看到我可以做类似的事情:

__big_endian int i, j;
Run Code Online (Sandbox Code Playgroud)

将这两个变量声明为大端(而应用程序的其余部分为小端).这似乎是一个很棒的功能,但是当我尝试编译时,我总是得到错误:

Error[Pa002]: the type attribute "__big_endian" is not allowed on this declaration.
Run Code Online (Sandbox Code Playgroud)

上面的大端线直接从手册中复制,但它不起作用.这是编译器的一个很棒的功能,可以让生活变得更轻松.任何想法如何让它工作?

我在IDE选项的C/C++编译器选项选项卡上将我的语言一致性设置为"允许IAR扩展".

Mic*_*urr 5

来自IAR的文档:

__big_endian编译ARMv6或更高版本时,该关键字可用.

ARMv6添加了SETEND操作状态位的指令,以配置处理器在执行加载/存储操作时将使用哪个字节序.看起来IAR的__big_endian内在只是导致处理器在访问用该属性标记的变量时操作该位.

ARM7TDMI是ARMv4(或ARMv5)架构设备(如果我没记错的话).