Sun Studio Compilers for the Linux OS Alpha

by syoyo

いろいろ調べていたら、実は Sun 謹製 C/C++ コンパイラ
for linux がありました。


http://developers.sun.com/prodtech/cc/linux_index.html

無償ですが、ただしアルファ版とのこと。

わざわざ Sun 製コンパイラを使いたがいが為に Solaris
をインストールする
必要はなかったのですね…

Sun のコンパイラ cc はデフォルトでは 32bit
のコードを吐くようで、
64bit kernel な amd64
ではリンクの部分でコンパイルがコケました。
amd64 の場合は明示的に 64bit
コードを吐くようにアーキティクチャの
オプションを指定する必要があります。

$ cc -xarch=amd64 muda.c

SSE 対応度は?…

gcc や icc 、 vc で SSE
拡張命令を使う場合は、xmmintrin.h
をインクルードすれば C 関数のインターフェイスが使えましたが、

Sun の cc ではこれが sunmedia_intrin.h
になっています。

しかし、なぜか整数演算系しか提供されていません。fp
演算を使う場合は
(インライン)アセンブラを使ってねということのようです。
Sun の Niagara が 8 core なのに fp
演算器がないことを見ると、
あまり Sun は fp
を使うメディア系処理には力を入れていないのでしょうか?

なので


http://developers.sun.com/solaris/articles/x86_assembly_lang.html

らへんを見てアセンブラコードを書いていく必要がありそうです。

sun のアセンブラである fbe では、gcc
のインラインアセンブラのように
自動でレジスタと変数の割り当てをしてくれるようではないようです。

なので明示的にスタック上の変数へのオフセットを記述する必要があります。

うーん、めんどいなぁ…

AMD64 linux の場合、 32bit code は
native には実行できないので、
上記例での add3 を書いてみましたが、エラーが出てしまいました。

amd64 の場合はインラインアセンブラでは 64bit
ニーモニックで記述する必要があるようです。

Advertisements