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

Если у вас есть лицензия 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;
    

Смотрите также

Похожие темы