IAR Embedded Workbench Compiler (-compiler iar-ew)

Задайте компилятор IAR Embedded Workbench

Описание

Задайте iar-ew для Compiler (-compiler) если вы компилируете свой код с помощью компилятора IAR Embedded Workbench. Путем определения компилятора можно избежать ошибок компиляции от синтаксиса, который не является частью Стандарта, но прибывает из расширений языка.

Затем задайте свой тип целевого процессора. Если вы выбираете iar-ew для Compiler, в пользовательском интерфейсе Polyspace® десктопные решения, вы видите, что только процессоры допускали компилятор IAR Embedded Workbench. Ваш выбор целевого процессора определяет размер основополагающих типов данных, порядок байтов целевой машины и определенных определений ключевого слова.

Если вы задаете iar-ew компилятор, необходимо задать путь к заголовочным файлам компилятора. Смотрите Обеспечивают Стандартные Заголовки Библиотеки для Анализа Polyspace.

Настройки

Цели используют следующие размеры по умолчанию в битах для фундаментальных типов. Вы не видите эти размеры в пользовательском интерфейсе десктопных решений Polyspace.

Цель'char'короткийintдолгодолго долгоfloat'double'долго дваждыptrЗнак по умолчанию charПорядок байтовВыравниваниеОпределение size_tОпределение wchar_t
arm81632326432646432Без знакаМало64int без знакасо знаком короткий
avr81616326432323216Без знакаМало8int без знакакороткое целое без знака
msp43081616326432323216Без знакаМало16int без знакакороткое целое без знака
rh85081632326432646432Без знакаМало32int без знакасо знаком короткий
riscv81632326432646432без знакаМало64int без знакаint без знака
rl7881616326432323216Без знакаМало16int без знакакороткое целое без знака

Ваша спецификация компилятора также определяет значения многих специфичные для компилятора макросы. В случае, если вы хотите знать, как Polyspace задает определенный макрос, используйте опцию -dump-preprocessing-info.

Советы

  • Polyspace не поддерживает использование $Super$$ и $Sub$$ исправить определения символа. Например, следующие компиляции кода правильно, но Polyspace рассматривает тот main() вызывает extern func ($Super$$func) вместо функционального func заданный в этом коде ($Sub$$func):

    /* void func() declared in another file */
    extern void $Super$$func(int i);
    
    int setup = 0;
    
    void setup_func(int i) {
      setup = i;
    }
    
    /* this function should be called instead of the original extern func() */
    void $Sub$$func(int i) {
      setup_foo(i); 
      /* does some extra setup work */   
      /* ... */
    }
    
    int main() {
      assert(setup = 0);
      func(1); // Should call $Sub$$func instead of $Super$$func
      assert(setup = 1);
      return 0;
    }
    Чтобы убедиться, что Polyspace вызывает правильную функцию при анализе кода, замените весь экземпляр $Sub$$ с пустой строкой во всех ваших файлах после предварительной обработки. Смотрите Command/script to apply to preprocessed files (-post-preprocessing-command).

  • Polyspace не поддерживает некоторые построения, характерные для компилятора IAR.

    Для списка неподдерживаемых построений смотрите codeprover_limitations.pdf в polyspaceroot\polyspace\verifier\code_prover_desktop. Здесь, polyspaceroot MATLAB® папка установки, например, C:\Program Files\Polyspace\R2019a.

  • Если вы используете Polyspace в качестве Вас Расширения кода в ИДАХ, введите эту опцию в файл опций анализа. Смотрите файл опций.

Информация о командной строке

Параметр: -compiler iar-ew -target
Значение: arm | avr | msp430 | rh850 | riscv | rl78
Значение по умолчанию: arm
Пример (Bug Finder): polyspace-bug-finder -compiler iar-ew -target rl78
Пример (Code Prover): polyspace-code-prover -compiler iar-ew -target rl78
Пример (сервер Bug Finder): polyspace-bug-finder-server -compiler iar-ew -target rl78
Пример (сервер Code Prover): polyspace-code-prover-server -compiler iar-ew -target rl78
Введенный в R2018a