SunSutudio11しか使っていないけれど、たぶんSunStudio12でもいっしょ。

インストーラの指示に従ってccへのpathを通したら、あとはジャンジャンコンパイルすればいいんだけれども、デフォルトではUltraSPARC拡張命令を含まない32bitオブジェクトが出力される。

これを変更するには、''-xarch''オプションを指定する。-xarch=v9bといった具合。ここに指定出来るパラメータで主なものは、以下のようなかんじ。

  • v8:SPARC V8アーキテクチャ向け。32bitバイナリ。
  • v8plus:SPARC V9アーキテクチャの32bitサブセット向け。32bitバイナリ。
  • v8plusa:v8plusにVIS (Visual Instruction Set)1.0とUltraSPARC拡張を加えたもの。32bitバイナリ。
  • v8plusb:v8plusaにVIS 2.0とUltraSPARC-III拡張を加えたもの。32bitバイナリ。
  • v9:SPARC V9アーキテクチャ向け。64bitバイナリ。
  • v9a:v9にVIS 1.0とUltraSPARC拡張を加えたもの。64bitバイナリ。
  • v9b:v9aにVIS 2.0とUltraSPARC-III拡張を加えたもの。64bitバイナリ。

UltraSPARC-III対応のCPUであればv8plusbとv9bの使い分けでいいだろう。ただし、これらのバイナリはUltraSPARC以前のCPUアーキテクチャでは実行できない。

また、64bitでコンパイルする場合、リンクするライブラリもすべて64bit対応している必要がある。64bitバイナリから32bitバイナリはリンクできない。/usr/sfwとか/opt/sfwにインストールされるものの多くは32bitライブラリしか用意されていなかったりするので注意が必要。

32bitと64bitの使い分けは単純に「膨大な数を扱うか否か」で判断して良いと思う。よほど膨大なデータを扱うとか、メチャメチャ沢山コネクションを張るとか。その際はプロセスあたりのリソース上限値の調整も忘れずに(limitやunlimitコマンドで)。

ちなみに、64bitにしたからといってパフォーマンスが劇的に上がることはほとんどない。よほどのことが無い限りない(下がることはある)。当たり前と言えば当たり前の事なんだけれども、よく誤解している人も多い。

個人的には、一昔前の次世代ゲーム機論争のときにNintendo64は64bitだから性能いいんだぜとか、セガサターンは32bitのCPUを2つ積んでいるから64bit級だぜとか、そういう言われ方が多かったことも原因の一つだと思うんだけどまあどうでもいいや。