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 デバイス) を使用してコードをテストしたところ、すべてが期待どおりでした。
前もって感謝します!