$Super$$および$Sub$$を使用したシンボル定義のパッチ
このセクションの内容:
$Sub$$および$Super$$特別パターンを使用すると、シンボルが外部ライブラリまたはROMコードにある場合など、シンボルを変更できないような状況で既存のシンボル定義にパッチを適用できます。
$Super$$特別パターンは、元の関数ディレクトリを呼び出すために使用した元のパッチしてない関数を識別します。
$Sub$$特別パターンは、元の関数の代わりに呼び出される新しい関数を識別します。$Sub$$特別パターンを使用して、元の関数の前後に処理を追加できます。
$Super$$ および $Sub$$ パターンの使用例
次の例では、$Super$$および$Sub$$パターンを使用して、元の関数foo()を呼び出す前に、関数ExtraFunc()への呼び出しを挿入する方法をお見せします。
extern void ExtraFunc(void);
extern void $Super$$foo(void);
/* this function is called instead of the original foo() */
void $Sub$$foo(void)
{
ExtraFunc(); /* does some extra setup work */
$Super$$foo(); /* calls the original foo() function */
/* To avoid calling the original foo() function
* omit the $Super$$foo(); function call.
*/
}