IAR Embedded Workbench - установка порядкового номера переменной - PullRequest
1 голос
/ 31 мая 2010

Я использую IAR Embedded Workbench для ARM (ARM7TDMI-S), и большая часть моей работы выполняется в формате little-endian. Тем не менее, я видел в руководстве, что я могу сделать что-то вроде:

__big_endian int i, j;

чтобы объявить эти две переменные с прямым порядком байтов (в то время как остальная часть приложения с прямым порядком байтов). Это кажется фантастической функцией, но когда я пытаюсь скомпилировать, я всегда получаю ошибку:

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

Верхняя порядковая строка выше скопирована непосредственно из руководства, но она не работает. Это отличная особенность компилятора, которая облегчит жизнь. Есть идеи, как заставить это работать?

У меня установлено соответствие языку «Разрешить расширения IAR» на вкладке «Параметры компилятора C / C ++» в параметрах IDE.

Ответы [ 2 ]

5 голосов
/ 01 июня 2010

Из документов IAR:

Ключевое слово __big_endian доступно при компиляции для ARMv6 или новее.

В ARMv6 добавлена ​​инструкция SETEND, которая манипулирует битом состояния, чтобы определить, какой порядок байтов процессор будет использовать при выполнении операции загрузки / сохранения. Похоже, что встроенная IAR __big_endian просто заставляет процессор манипулировать этим битом при доступе к переменной, помеченной этим атрибутом.

ARM7TDMI - это устройство архитектуры ARMv4 (или, может быть, ARMv5) (если я правильно помню).

1 голос
/ 01 июня 2010

Это функция расширения в компиляторе IAR, поэтому ее необходимо включить либо с помощью параметра -e командной строки, либо путем включения расширений IAR на странице параметров компилятора в среде IDE. Это ключевое слово несовместимо с опцией компилятора --strict_ansi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...