Замените умножения на степени двойки на знаковые побитовые сдвиги

Описание

Задайте, следует ли заменять умножения на степени двойки на знаковые побитовые сдвиги. Некоторые стандарты кодирования, такие как MISRA, не допускают побитовых операций над подписанными целыми числами. Очистка этой опции увеличивает вероятность генерации MISRA C® совместимый код.

Category: Генерация кода > Стиль кода

Настройки

По умолчанию: on

На

Сгенерируйте код, который заменяет умножения на степени двойки на подписанные битовые сдвиги.

Для примера, когда вы выбираете эту опцию, умножения на 8 смещаются влево в сгенерированном коде:

Y.Out1 = (U.In1 << ((int8_T)3));

Точно так же умножения на 16 смещены влево в сгенерированном коде:

Y.Out4 = (U.In2 << ((int8_T)4));

Прочь

Не допускать замены умножений на степени двойки со знаковыми сдвигами. Очистка этой опции поддерживает податливость MISRA C.

Для примера, когда вы очищаете эту опцию, умножения на 8 не заменяются побитовыми сдвигами:

Y.Out1 = U.In1 * ((int64_T)8);

Точно так же умножения на 16 не заменяются побитовыми сдвигами:

Y.Out4 = U.In2 * ((int32_T)16);

Информация о командной строке

Параметр: EnableSignedLeftShifts
Тип: Вектор символов
Значение: 'on' | 'off'
По умолчанию: 'on'

Рекомендуемые настройки

ПриложениеНастройка
ОтладкаНикакого влияния
ТрассируемостьНикакого влияния
ЭффективностьНа
Меры безопасностиНикакого влияния

Похожие темы