我尝试编写一个简单的 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 设备)测试了代码,一切都符合我的预期。
先感谢您!