Проблема с приращением встроенной сборки ARM - PullRequest
0 голосов
/ 25 апреля 2010

У меня есть следующий бит встроенной сборки ARM, она работает в отладочной сборке, но вылетает в сборке выпуска iphone SDK 3.1. Проблема заключается в инструкциях добавления, где я увеличиваю адрес вывода переменных C и х на 4 байта, это должно увеличиваться на размер с плавающей запятой. Я думаю, что когда я увеличиваю на каком-то таком этапе, я что-то перезаписываю, может кто-нибудь сказать, что является лучшим способом справиться с этим

Спасибо

C-код, который заменяет asm, 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"                         
    );

1 Ответ

0 голосов
/ 25 апреля 2010

Вы имели в виду% 1, чтобы добавить 4 к и% 3? добавление% 3 может привести к повреждению, если этот регистр снова будет использован после вашей функции.

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 %2,%2,#4         \n\t"
    "flds s2,[%1]           \n\t"
    "add %1,%1,#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"                         
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...