Вопрос

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

__big_endian int i, j;

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

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

Большая эндин линейна выше скопирована непосредственно из руководства, но она не работает. Это отличная особенность компилятора и облегчит жизнь большим проще. Любые идеи, как это заставить работать?

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

Это было полезно?

Решение

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

То __big_endian Ключевое слово доступен, когда вы компилируете ARMV6 или выше.

ARMV6 добавил SETEND Инструкция, которая манипует битом состояния, чтобы настроить, какой Endianess процессор будет использовать при выполнении операции нагрузки / магазина. Выглядит как Яар __big_endian Сертинавский просто заставляет процессор манипулировать этим битом при доступе к переменной с меткой этого атрибута.

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top