exponenta event banner

Поддерживаемые расширения языка Keil или IAR

Анализ 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) */ 
} 

Для анализа этого типа кода используйте следующие параметры:

Например, в зависимости от способа определения 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 ключевое слово не удалено.