addComplexTypeAlignment

Задайте контур выравнивания составного типа

Описание

пример

addComplexTypeAlignment(hDataAlign,baseType,alignment) задает контур выравнивания членов настоящих и комплексных данных составного типа.

Стартовый адрес памяти действительной и мнимой части комплексных переменных, произведенных генератором кода с заданным типом, является кратным заданному контуру выравнивания. Генератор кода заменяет операции в сгенерированном коде, когда оба из этих условий верны:

  • Заменяющая запись таблицы кода имеет сложный аргумент с требованием выравнивания данных, которое меньше чем или равно граничному значению выравнивания

  • Запись удовлетворяет всем другим заменяющим критериям соответствия кода.

Чтобы использовать эту функцию, ваш заменяющий регистрационный файл библиотеки кода должен включать дополнительную информацию о выравнивании данных о компиляторе, такую как синтаксис выравнивания.

Примеры

свернуть все

В этом примере показано, как задать 16-байтовый контур выравнивания для комплексного int8 типы путем добавления addComplexTypeAlignment линия к вашему заменяющему регистрационному файлу библиотеки кода.

function rtwTargetInfo(cm)
% rtwTargetInfo function to register a code replacement library (CRL)
% for use with  code generation

  % Register the CRL defined in local function locCrlRegFcn
  cm.registerTargetInfo(@locCrlRegFcn);

end % End of RTWTARGETINFO

% Local function to define a CRL containing crl_table_mmul_4x4_single_align
function thisCrl = locCrlRegFcn

  % create an alignment specification object, assume gcc
  as = RTW.AlignmentSpecification;
  as.AlignmentType = {'DATA_ALIGNMENT_LOCAL_VAR', ...
                      'DATA_ALIGNMENT_GLOBAL_VAR', ...
                      'DATA_ALIGNMENT_STRUCT_FIELD'};
  as.AlignmentSyntaxTemplate = '__attribute__((aligned(%n)))';
  as.SupportedLanguages={'c', 'c++'};

  % add the alignment specification object
  da = RTW.DataAlignment;
  da.addAlignmentSpecification(as);
  da.addComplexTypeAlignment('int8', 16);

  % add the data alignment object to target characteristics
  tc = RTW.TargetCharacteristics;
  tc.DataAlignment = da;

  % Instantiate a CRL registry entry
  thisCrl = RTW.TflRegistry;

  % Define the CRL properties
  thisCrl.Name = 'Data Alignment Example';
  thisCrl.Description = 'Example of replacement with data alignment';
  thisCrl.TableList = {'crl_table_mmul_4x4_single_align'};
    thisCrl.TargetCharacteristics = tc;

end % End of LOCCRLREGFCN

Входные параметры

свернуть все

hDataAlign указатель на объект выравнивания данных, ранее возвращенный hDataAlign = RTW.DataAlignment.

Пример: da

baseType вектор символов или скаляр строки, который задает встроенный тип данных, такой как int8 или long.

Пример: 'int8'

alignment положительное целое число, которое является степенью 2 и не превышает 128. Это значение задает контур выравнивания.

Пример: 16

Введенный в R2014a