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 Compiler».
Эти ключевые слова удаляются во время предварительной обработки:
Кейл: bdata, far, idata, huge, sdata
IAR: saddr, reentrant, reentrant_idata, non_banked, plm, bdata, idata, pdata, code, xdata, xhuge, interrupt, __interrupt, __intrinsic
The data ключевое слово не удаляется.