1

我尝试编写一个简单的 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),似乎我作为参数传递的两个数字(浮点数 a 和 b)被编码为 64 位而不是 32 位。因此,a的值存储在r0 和 r1中, b的值存储在r2 和 r3中。

您有解决问题的任何解释或提示吗?

我已经使用 Win32 函数(Windows Mobile 设备)测试了代码,一切都符合我的预期。

先感谢您!

4

0 回答 0