【发布时间】:2010-04-25 14:43:28
【问题描述】:
我有以下内联 ARM 程序集,它在调试版本中工作,但在 iphone sdk 3.1 的发布版本中崩溃。问题是添加指令,我将 C 变量输出和 x 的地址增加 4 个字节,这应该增加浮点数的大小。我认为当我在某个这样的阶段增加时,我正在覆盖某些东西,谁能说这是处理这个问题的最佳方法
谢谢
asm 正在替换的 C 代码,sum、output 和 x 都是浮点数
for(int i = 0; i< count; i++)
sum+= output[i]* (*x++)
asm volatile(
".align 4 \n\t"
"mov r4,%3 \n\t"
"flds s0,[%0] \n\t"
"0: \n\t"
"flds s1,[%2] \n\t"
//"add %3,%3,#4 \n\t"
"flds s2,[%1] \n\t"
//"add %2,%2,#4 \n\t"
"subs r4,r4, #1 \n\t"
"fmacs s0, s1, s2 \n\t"
"bne 0b \n\t"
"fsts s0,[%0] \n\t"
:
: "r" (&sum), "r" (output), "r" (x),"r" (count)
: "r0","r4","cc", "memory",
"s0","s1","s2"
);
【问题讨论】: