Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Деление по модулю
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
coolibin
Мой ИАР матюкается на строчку кода из __ramfunc функции:
Код
if((iBit_Count > 0)  && ((iBit_Count % 5) == 0)){


вот таким сообщением:
Warning[Ta021]: Library call (??div32_a) from within a __ramfunc function

походу ему не нравится деление по модулю, т. е. происходит вызов НЕ __ramfunc функции из __ramfunc функции. Как это можно обойти? сделать свою __ramfunc функцию деления по модулю или как то заставить разместить в RAM стандартную, если это возможно?
rezident
В соседней теме обсуждается вычисление кратности числа, без использования библиотечных функций вычисления остатка.
coolibin
Благодарю!
Waso
Добрый день, уважаемые форумчане!
У меня вопрос немного офтопик, но проблема та-же. Когда объявляю функцию __arm __ramfunc ворчит: (IAR 440, ADuc7020)
Код
Warning[Ta021]: Library call (??ldr32h_a) from within a __ramfunc function

Если убрать директиву __arm то компилится нормально, но я так понимаю, что в режиме арм из ОЗУ работало бы еще быстрее.
Вот код:
Код

typedef struct
{
        int16_t Re;
        int16_t Im;
} cplx;

__ramfunc __arm
void Foo(cplx *x)
{
cplx T;
....
T  = x[j];    // на эту и подобные строчки ругается
/*-----------*/
T.Re  = x[j].Re;
T.Im  = x[j].Im; // такая запись компилится в арме, но смотрится криво
...
}
Что делать? На асме писать не хотелось бы...
Заранее благодарен!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.