2

我正在使用 IAR Embedded Workbench for ARM (ARM7TDMI-S),我的大部分工作都是使用 little-endian 格式完成的。但是,我在手册中看到我可以执行以下操作:

__big_endian int i, j;

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

Error[Pa002]: the type attribute "__big_endian" is not allowed on this declaration.

上面的大端行是直接从手册中抄来的,但是不行。这是编译器的一个很棒的特性,会让生活变得更轻松。任何想法如何让它工作?

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

4

2 回答 2

5

来自 IAR 的文档:

当您为 ARMv6 或更高版本进行编译时,该__big_endian关键字可用。

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

ARM7TDMI 是一个 ARMv4(或者可能是 ARMv5)架构设备(如果我没记错的话)。

于 2010-06-01T16:04:22.753 回答
1

这是 IAR 编译器中的扩展功能,因此必须通过使用命令行的 -e 选项或通过在 IDE 的编译器选项页面中启用 IAR 扩展来启用。此关键字与 --strict_ansi 编译器选项不兼容。

于 2010-06-01T08:02:15.033 回答