1

2 つの数値 (単精度) を加算する単純な ARM 関数を作成しようとしました。これはコードの一部です:

fmsr s1, r0
fmsr s2, r1
fadds s1, s1, s2
fmrs r0, s1

NDK を使用して Android でこの ARM 関数をテストしました。C 関数のプロトタイプは次のとおりです。

jfloat myFunction(jfloat a, jfloat b);

問題は、結果が正しくないことです。

デバッガー (DS-5) を使用しましたが、パラメーターとして渡した 2 つの数値 (float a と b) は、32 ビットではなく 64 ビットでコーディングされているようです。したがって、aの値はr0 と r1に格納され、 bの値はr2 と r3に格納されました。

問題を解決するための説明やヒントはありますか?

Win32 関数 (Windows Mobile デバイス) を使用してコードをテストしたところ、すべてが期待どおりでした。

前もって感謝します!

4

0 に答える 0