Управляйте подписанными левыми сдвигами в сгенерированном коде

Если у вас есть Embedded Coder® лицензия, можно контролировать, является ли MATLAB® Coder™ заменяет умножения на степени двойки на знаковые левые побитовые сдвиги. Некоторые стандарты кодирования, такие как MISRA®, не допускать побитовые операции с целыми числами со знаком.

По умолчанию MATLAB Coder заменяет умножение на степени двойки со знаком слева сдвигов. Вот пример сгенерированного кода C, который использует слева со знаком сдвига для умножения на восемь.

i <<= 3;

Чтобы увеличить вероятность генерации MISRA C:2012 совместимого кода, отключите замену умножения на степени двойки со знаковыми левыми сдвигами. Вот пример сгенерированного кода C, который не использует слева со знаком сдвига для умножения на восемь:

i = i * 8;

Управление левыми Сдвигами со знаком с помощью приложения MATLAB Coder

  1. На странице Generate Code, чтобы открыть диалоговое окно Generate, щелкните стрелу Generate.

  2. Установите Build type в одно из следующих значений:

    • Source Code

    • Static Library (.lib)

    • Dynamic Library (.dll)

    • Executable (.exe)

  3. Нажмите More Settings.

  4. На вкладке Code Appearance установите или снимите флажок Use signed shift left for fixed-point operations and multiplication by powers of 2.

Управление левыми Сдвигами со знаком с помощью интерфейса командной строки

  1. Создайте объект строения кода для 'lib', 'dll', или 'exe'. Для примера:

    cfg = coder.config('lib','ecoder',true); % or dll or exe
    

  2. Установите EnableSignedLeftShifts свойство к true или false. Для примера:

    cfg.EnableSignedLeftShifts = false;
    

См. также

Похожие темы