Анализ 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): Укажите тип и размер данных в битах.
Например, в зависимости от способа определения sbit тип данных, используются следующие опции:
sbit ADST = ADCUP^7;
Использовать параметры: -compiler keil -sfr-type sfr=8
sbit ADST = ADCUP.7;
Использовать параметры: -compiler iar -sfr-type sfr=8
Затем анализ поддерживает расширения языка Keil или IAR, даже если некоторые структуры, ключевые слова и синтаксис не являются частью стандарта C99.
После указания компилятора Keil или IAR анализ распознает ключевые слова, специфичные для компилятора, в коде. Если ключевое слово не является релевантным для анализа, оно удаляется из исходного кода во время предварительной обработки.
Если отключить ключевое слово и использовать его в качестве идентификатора, при компиляции кода с помощью Polyspace может возникнуть ошибка компиляции. См. раздел Ошибки, связанные с компилятором Keil или IAR.
Эти ключевые слова удаляются во время предварительной обработки:
Кейл: bdata, far, idata, huge, sdata
IAR: saddr, reentrant, reentrant_idata, non_banked, plm, bdata, idata, pdata, code, xdata, xhuge, interrupt, __interrupt, __intrinsic
data ключевое слово не удалено.