Поддерживаемые языковые расширения 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 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 ключевое слово не удаляется.