C++ ユーザーズガイド

-xarch=a

対象となるアーキテクチャの命令セットを指定します。

このオプションは単独でも使用できますが、このオプションの主な目的は -xtarget オプションによる値を変更することです。

このオプションは、生成される命令を特定のアーキテクチャに対する適切なものに制限したり、指定した命令セットを使用できるようにしたりします。このオプションによって指定された命令が必ず使用されるわけではありませんが、最適化を行うと、その命令が通常は使用されるようになります。

a には、次の対象となるアーキテクチャを指定できます。

プラットフォーム 

a の値 

SPARC 

generic、v7v8av8v8plusv8plusav9v9a

x86 

generic386486pentiumpentium_pro

SPARC の場合

SPARC のアーキテクチャ、v7、v8a、v8 はすべてバイナリ互換です。v8plus と v8plusa は互いにバイナリ互換で上位互換性がありますが、下位互換性はありません。どの命令を選択しても、生成される実行可能ファイルの実行速度は、generic、v7、v8、v8a、v8plus、v8plusa の順に速くなります (generic が最も遅い) 。

a の値

意味 

generic

ほとんどの SPARC プロセッサでパフォーマンスが向上します。パフォーマンスが低下するプロセッサはありません。 

 

この命令の設定内容は新しいリリースごとに調整されます。 

 

v7

 

命令セットを V7 アーキテクチャに限定します。 

このオプションは、V7 アーキテクチャ上で良好なパフォーマンスが得られる命令セットを使用します。ただし、4 倍精度浮動小数点の命令は使用しません。V8 アーキテクチャ上で良好なパフォーマンスを得るための命令セットと同じですが、次の命令は含まれません。 

  • 4 倍精度浮動小数点命令

  • 整数 mul および div 命令

  • fsmuld 命令

 

例 : SPARCstation(TM) 1、SPARCstation 2 

 

v8a

命令セットを V8 アーキテクチャの V8a に限定します。 

 

このオプションは、定義上 V8 アーキテクチャと同じです。ただし次の命令は含まれません。 

  • 4 倍精度浮動小数点命令

  • fsmuld 命令

 

例 : MicroSPARC(TM) I チップアーキテクチャにもとづくすべてのマシン 

 

v8

命令セットを V8 アーキテクチャに限定します。 

 

このオプションは、V8 アーキテクチャ上で良好なパフォーマンスを得るのに最も適した命令セットを使用します。ただし、4 倍精度浮動小数点の命令は使用しません。 

 

例 : SPARCstation 10 

 

v8plus

 

 

 

命令セットを V9 アーキテクチャの V8plus に限定します。 

 

このオプションは 定義上は V9 アーキテクチャと同じです。ただし次の制限があります。 

  • 4 倍精度浮動小数点命令は使用しない

  • V8plus 仕様によって定義された 32 ビットのサブセットに限定される

  • VIS 命令は含まれない

 

V8plus では、V9 の 64 ビットレジスタを持つシステムは、32 ビットのアドレス指定モードで動作します。ただし、i レジスタおよび l レジスタの 32 ビットを超えるビットは、プログラムの実行結果に影響しないようにする必要があります。

 

例 : UltraSPARC(TM) チップアーキテクチャにもとづくすべてのマシン 

 

また、このオプションを使用すると、.o ファイルは V8plus バイナリとして認識されます。このような ファイルを V7 および V8 マシンで実行することはできません。

v8plusa

命令セットを V8plusa アーキテクチャの種類に限定します。 

 

このオプションは V8plusa アーキテクチャを意味し、かつ次の命令があります。 

  • UltraSPARC 固有の命令

  • VIS 命令

 

このオプションは、UltraSPARC アーキテクチャ上で良好なパフォーマンスを得るための最適な命令セットを使用します。ただし、V8plus 仕様によって定義された 32 ビットのサブセットに限定されます。 

 

例 : UltraSPARC チップアーキテクチャにもとづくマシン 

 

また、このオプションを使用すると、.o ファイルはサン固有の V8plus バイナリとして認識されます。.o ファイルは V7 および V8 マシンで実行することはできせん。

v9

SPARC V9 アーキテクチャの命令セットに限定します。 

 

生成される .o オブジェクトファイルは 64 ビット ELF 形式です。このファイルは、同じ形式のオブジェクトファイルとしかリンクできません。

 

生成される実行可能ファイルは、64 ビット Solaris 2.7 ソフトウェアの 64 ビットカーネルが動作する 64 ビット SPARC プロセッサでしか実行できません。 

 

このオプションでコンパイルすると、V9 SPARC アーキテクチャで良好なパフォーマンスを得るのに最も適した命令セットが使用されます。ただし、(64 ビット Solaris 7 ソフトウェアだけで使用可能な) 4 倍精度浮動小数点命令は使用されません。 

v9a 

SPARC V9 アーキテクチャの命令セットに Visual Instruction Set (VIS) と UltraSPARC プロセッサ固有の拡張を加えたものに限定します。生成される .o オブジェクトファイルは 64 ビット ELF 形式です。このファイルは、同じ形式のオブジェクトファイルとしかリンクできません。

 

生成される実行可能ファイルは、64 ビットカーネルを持つ 64 ビット Solaris 7 ソフトウェアが動作する 64 ビット UltraSPARC プロセッサでしか実行できません。 

 

このオプションでコンパイルすると、V9 UltraSPARC アーキテクチャで良好なパフォーマンスを得るのに最も適した命令セットが使用さます。ただし、(64 ビット Solaris 7 ソフトウェアだけで使用可能な) 4 倍精度浮動小数点命令は使用されません。 

x86 の場合

generic386 はこのリリースでは同じ意味です。

486pentiumpentium_pro を指定すると、Intel PentiumPro チップの命令セットが出力されます。

デフォルト

-xarch=a を指定しないと、-xarc=generic が使用されます。

相互の関連性

-xarc=v9 オプションと -compat[=4] オプションを一緒に使用することはできません。

警告

このオプションを最適化の指定とともに使用する場合、適切な選択をすれば、指定したアーキテクチャで実行可能ファイルの良好なパフォーマンスが得られますが、適切でない選択をすると、パフォーマンスが著しく低下することがあります。