5.15 関数のパラメータ受け渡しに伴うオーバーヘッドを最小化するための方法

関数のパラメータ受け渡しに伴うオーバーヘッドは、いくつかの方法で最小限にできます。

以下に例を示します。
  • 関数の各引数のサイズが 1 ワード以下の場合、引数を 4 個以下にします。C++ では、通常は暗黙の this ポインタ引数が R0 で渡されるため、非スタティックメンバ関数に使用する引数を 3 個以下にします。
  • 関数で 5 個以上の引数が必要な場合は、スタックした引数の受け渡しコストをカバーできるように、その関数で相当な量の処理を行うようにして下さい。
  • 関連性のある引数を 1 つの構造体にまとめ、その構造体を指すポインタを関数呼び出しで受け渡します。こうすることにより、パラメータ数を減らし、読みやすさを高めることができます。
  • long long パラメータでは、偶数レジスタインデクスで整列する必要のある引数ワードが 2 個使用されるため、これらのパラメータの数を最小限にします。
  • ソフトウェア浮動小数点を使用する場合は、 double パラメータの数を最小限にします。
  • 可変数のパラメータを持つ関数を使用しないようにします。可変数の引数を使用する関数では、事実上すべての引数がスタックで受け渡されます。
関連する概念
5.16 レジスタを介して関数から構造体を返す
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.