[Armadillo:01972] Armadillo300の浮動小数点演算について

TOGAWA Satoshi email@hidden
2007年 8月 29日 (水) 16:12:37 JST


戸川と申します。

Armadillo300を購入し、演算速度のテストを行っています。
2点ほど質問させてください。

1)
現状では、CPUボードにFPUが付いていないため、浮動小数点演算は
カーネルでのエミュレーションを行っていると思います。
これを、いわゆる soft-float (gccで言うところの -msoft-float オプション)
対応にできる開発ツールの作成実績はないでしょうか?

# 他社のARMボードでは、なぜか同一のgccでhard-floatとsoft-float両方の
# 実行ファイルが生成可能でした(原則論から言えば不思議。libgcc.aとか)。
# 浮動小数点ライブラリそのものは別に取得する必要がありましたが。

2)
演算を高速化する必要や精度の問題などから、doubleの数値のメモリ表現を
バイナリ化してテーブルとして持っているプログラムがありました。
このプログラムは、i386, SH3(little endian), 他社のARMボードでは
動作したのですが、Armadillo300では動作しませんでした。調べてみると、
Armadillo300でのdoubleの表現は、他のものと、4バイト単位で逆になっている
ようです。

例えば、他のアーキテクチャ用のコンパイラで"151.3183"という定数を含んだ
Cのソースファイルをコンパイル&アセンブルすると、オブジェクトファイルの
中に"4a23 837b ea2f 4062"というバイト列が見えるのですが、Armadillo300の
開発環境でコンパイル&アセンブルすると"ea2f 4062 4a23 837b"というバイト列が
見えます。

これは、どう解釈すればいいのでしょうか?
  1. メモリ上でどう表現されるかはコンパイラの実装依存だから仕方ない。
  2. Armadillo300のアーキテクチャがそうなっているから仕方ない。
  3. その他

以上です。何か手がかりがありましたら、よろしくお願いします。

-- 
email@hidden



armadillo メーリングリストの案内