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