メインコンテンツ

コード置換のカスタマイズとは

カスタムのコード置換ライブラリを開発することで、コード ジェネレーターが関数、演算子、およびブロックに既定で生成する C/C++ コードを、いつどのように置き換えるかをカスタマイズします。ライブラリは、コード置換ツールを使用して対話形式で開発するかプログラムで開発できます。

  • 特定のアプリケーション要件に応じたライブラリを開発します。

  • コードの置換時にコード ジェネレーターで考慮される予約キーワードのリストに識別子を追加します。

  • コード ジェネレーターによる関数の照合および置換プロセスをカスタマイズします。

開始するには、コード置換ライブラリ開発のクイック スタート - Simulinkを参照してください。

一部の Simulink® ブロックからのコードの置換の詳細については、Block Replacement for Code Optimizationを参照してください。

コード置換の照合および置換プロセス

コード ジェネレーターは、関数または演算子の呼び出しサイトを検出すると、次を行います。

  1. コード置換エントリ オブジェクトを作成して、関数名または演算子名、またはキーおよび概念引数を部分的に入力します。

  2. このエントリ オブジェクトを使用して、概念表現が一致するかどうか、構成済みのコード置換ライブラリをクエリします。コード ジェネレーターは、ライブラリ内のテーブルの順序で一致するものがあるかどうか、コード置換ライブラリ内のテーブルを検索します。一致を検索する際、コード ジェネレーターは次を考慮します。

    • 概念名またはキー

    • 引数 (量、型、型修飾子、および実数/複素数を含む)

    • アルゴリズム (計算方法)

    • 固定小数点の飽和および丸めモード

    • 優先順位

  3. 一致が存在する場合、コード ジェネレーターは、概念表現、実装表現および優先順位の値がすべて入力されたコード置換オブジェクトを返します。コード ジェネレーターによりテーブルで複数の一致が検出された場合、一致はエントリの優先順位によって決まります。優先順位の値は 0 から 100 の範囲です。最も優先順位が高いのは 0 です。コード ジェネレーターは、優先順位が低い同様のエントリよりも、優先順位が高いエントリを使用します。

  4. コード置換オブジェクトで C または C++ 置換関数のプロトタイプを使用して、コードを生成します。

コード置換のカスタマイズの制限

  • コード置換検証 — コード置換は想定と異なる動作をする可能性があります。たとえば、コード ジェネレーター入力にみられるデータ型は、コード ジェネレーターが動作中に中間データ型として使用するものと一致しない場合があります。生成コードを調べることでコード置換を検証します。Verify Code Replacement Libraryを参照してください。

  • 行列のコード置換 — コード置換ライブラリは、可変サイズ入力をもつ関数の置換をサポートしません。

  • ファイル パス内のトークン — コード置換エントリのビルド情報を指定する際に、プログラミング インターフェイスを使用することによってのみ、ファイル パスにトークンを含めることができます。トークンを含める機能は、コード置換ツールでは利用できません。Define Code Replacement Library Optimizationsの「ビルド情報を指定します」を参照してください。

  • 加算および減算演算子の置換 — 関連する制限については、Addition and Subtraction Algorithm Types for Code Replacementを参照してください。

  • データの配置 — 関連する制限については、Optimize Performance of Memory Access by Using Data AlignmentData Alignment for Code Replacementを参照してください。

  • coder.replace 関数 — 関連する制限については、coder.replace を参照してください。

参考

トピック