В этом примере показано, как переупорядочить коммутируемые операнды, чтобы сделать выражения рекурсивными влево. Левая - рекурсивное переупорядочивание сохраняет пространство стека в памяти. Эта оптимизация повышает эффективность кода.
Чтобы переупорядочить коммутируемые операнды, создайте эту модель и назовите ее operand_order
. Выходной сигнал является результатом умножения сигнала от блока Inport In1
по сумме сигналов от блоков Inport In2
и In3
.
Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters). На вкладке Code Style выберите параметр Preserve operand order in expression.
Сгенерируйте код для модели.
В operand_order.c
файл, operand_order_step
функция содержит этот код:
operand_order_Y.Out1 = operand_order_U.In1 * (operand_order_U.In2 + operand_order_U.In3);
Генератор кода сохраняет заданный порядок выражения в модели, что увеличивает читаемость кода для трассируемости кода.
Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters). На вкладке Code Style очистите параметр Preserve operand order in expression.
Сгенерируйте код для модели.
В operand_order.c
файл, operand_order_step
функция содержит этот код:
operand_order_Y.Out1 = (operand_order_U.In2 + operand_order_U.In3) * operand_order_U.In1;
Генератор кода оптимизирует код путем переупорядочивания коммутируемых операндов, чтобы сделать выражение левым-рекурсивным, что улучшает эффективность кода.