-avoid_cross_boundary_prefetch 【V2.07.00以降】


コンパイル・オプション / オブジェクトオプション

[指定形式]

-avoid_cross_boundary_prefetch

[詳細説明]

-

以下の両方の条件を満たす場合に本オプションを使用すると、コンパイラは文字列操作用ライブラリ関数を、2つのパートからなるストリング操作命令とその他の命令のコードとして展開します。文字列の読み出し開始アドレスから4バイト境界のアドレスまでのデータに対して文字列操作を行うコードと、4バイト境界のアドレスから末尾アドレスまでのデータに対して文字列操作を行うコードとが、分けて出力されます。

-

文字列操作用ライブラリ関数memchr()、strlen()、strcpy()、strncpy()、strcmp()、strncmp()、strcat()、またはstrncat()を含むコードがソースファイルに存在する

-

library=intrinsicを指定して、ライブラリ関数を展開する選択をしている

[備考]

-

本オプションは、ストリング操作命令のデータプリフェッチで4バイト境界をまたぐ読み出しの防止を図るものです。

-

本オプションを選択すると、文字列操作用ライブラリ関数memchr()、strlen()、strcpy()、strncpy()、strcmp()、strncmp()、strcat()、strncat()をlibrary=intrinsicを指定してコンパイルした際のコードサイズが増加します。

-

本オプションを使用すると、ライブラリジェネレータは文字列操作用ライブラリ関数(memchr()、strlen()、strcpy()、strncpy()、strcmp()、strncmp()、strcat()、またはstrncat())を、2つのパートからなるストリング操作命令とその他の命令のコードとして生成します。文字列の読み出し開始アドレスから4バイト境界のアドレスまでのデータに対して文字列操作を行うコードと、4バイト境界のアドレスから末尾アドレスまでのデータに対して文字列操作を行うコードとなります。