Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: "reentrant function" ARM7, GCC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
yosephcz
мужики, есть LPC2292 + GCC compiler, как сделать "reentrant function"?
jojo
Вроде есть опция ГЦЦ `-mapcs-reentrant':
Generate reentrant, position independent code. This is the
equivalent to specifying the `-fpic' option. The default is
`-mno-apcs-reentrant'.

ГЦЦ рядом нет, проверить не могу.
gcc-user
Будет ли функция реентерабельная больше зависит от Вас, а не от компилятора.

A) Реентерабельная функция не должна хранить статические данные в промежутках между вызовами (все данные передаются из вызывающей функции).
Б) Реентерабельная функция не должна возвращать указатель на статические данные.
В) Реентерабельная функция не может вызывать нереентерабельную функцию.
Г) Если нужен доступ к общим ресурсам, то необходимо использовать механизм блокировки (простейшим вариантом является запрещение прерываний на время "критической операции").
DPL
Цитата(gcc-user @ Dec 3 2004, 11:58)
Будет ли функция реентерабельная больше зависит от Вас, а не от компилятора.
*

Это, конечно, так, но только при условии, что параметры передаются через стек. А вот, например, C51 от Keil по умолчанию передает параметры через специально выделенную (статически) область памяти. Другое дело, что для ARM передача через стек выглядит наиболее естественно и, скорее всего, используется по умолчанию.
gcc-user
Цитата
Другое дело, что для ARM передача через стек выглядит наиболее естественно и, скорее всего, используется по умолчанию.


Если укажите компилятор для ARM и его опции, при которых параметры будут передаваться через статически выделенную область памяти, буду очень благодарен - я такого извращения еще не видел.
DPL
Цитата(gcc-user @ Dec 6 2004, 11:43)
Если укажите компилятор для ARM и его опции, при которых параметры будут передаваться через статически выделенную область памяти, буду очень благодарен - я такого извращения еще не видел.
*

Не укажу, да и вообще не уверен, что для ARM это есть smile.gif. Пример выше я привел лишь для того, чтобы обратить внимание автора вопроса на то, что такие варианты в принципе бывают, и, если у него возникли проблемы с реентерабельностью, то, возможно, дело в этом.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.