Анализ Polyspace® может интерпретировать подмножество общих построений языка C/C++ и расширенных ключевых слов по умолчанию. Для специфичных для компилятора ключевых слов необходимо задать выбор компилятора. Если вы задаете keil
или iar
для Compiler (-compiler)
, верификация Polyspace позволяет расширения языка, характерные для компиляторов Keil или IAR.
Встроенные приложения управления часто чтение и данные порта записи, регистры таймера набора, и читают входные получения. Чтобы иметь дело с этими требованиями, не используя ассемблер, некоторые компиляторы микропроцессора задают специальные типы данных, такие как sfr
и sbit
. Типичные объявления:
sfr A0 = 0x80; sfr A1 = 0x81; sfr ADCUP = 0xDE; sbit EI = 0x80;
Объявления находятся в заголовочных файлах, таких как regxx.h
для основного 80Cxxx
микро процессор. Объявления настраивают компилятор к целевому процессору.
Вы получаете доступ к регистру или порту при помощи sfr
и sbit
данные можно следующим образом. Однако эти типы данных не являются частью Стандарта C99.
int status,P0; void main (void) { ADCUP = 0x08; /* Write data to register */ A1 = 0xFF; /* Write data to Port */ status = P0; /* Read data from Port */ EI = 1; /* Set a bit (enable all interrupts) */ }
Чтобы анализировать этот тип кода, используйте эти опции:
Compiler (-compiler)
: Задайте keil
или iar
.
Sfr type support (-sfr-types)
: Задайте тип данных и размер в битах.
Анализ затем поддерживает расширения языка Keil или IAR, даже если некоторые структуры, ключевые слова и синтаксис не являются частью стандарта C99.
Если вы задаете компилятор Keil или IAR, анализ распознает специфичные для компилятора ключевые слова в вашем коде. Если ключевое слово не важно для анализа, оно удалено из исходного кода во время предварительной обработки.
Если вы отключаете ключевое слово и используете его в качестве идентификатора вместо этого, можно столкнуться с ошибкой компиляции, когда вы компилируете свой код с Polyspace. Смотрите Ошибки, Связанные с Keil или IAR Compiler.
Эти ключевые слова удалены во время предварительной обработки:
Keil: bdata
, far
, idata
, huge
, sdata
IAR: saddr
, reentrant
, reentrant_idata
, non_banked
, plm
, bdata
, idata
, pdata
, code
, xdata
, xhuge
, interrupt
, __interrupt
, __intrinsic
data
ключевое слово не удалено.