реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> "reentrant function" ARM7, GCC, как сделать?
yosephcz
сообщение Nov 30 2004, 14:35
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 54
Регистрация: 30-06-04
Пользователь №: 223



мужики, есть LPC2292 + GCC compiler, как сделать "reentrant function"?
Go to the top of the page
 
+Quote Post
jojo
сообщение Dec 1 2004, 07:44
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827



Вроде есть опция ГЦЦ `-mapcs-reentrant':
Generate reentrant, position independent code. This is the
equivalent to specifying the `-fpic' option. The default is
`-mno-apcs-reentrant'.

ГЦЦ рядом нет, проверить не могу.
Go to the top of the page
 
+Quote Post
gcc-user
сообщение Dec 3 2004, 08:58
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 29
Регистрация: 21-09-04
Пользователь №: 691



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

A) Реентерабельная функция не должна хранить статические данные в промежутках между вызовами (все данные передаются из вызывающей функции).
Б) Реентерабельная функция не должна возвращать указатель на статические данные.
В) Реентерабельная функция не может вызывать нереентерабельную функцию.
Г) Если нужен доступ к общим ресурсам, то необходимо использовать механизм блокировки (простейшим вариантом является запрещение прерываний на время "критической операции").
Go to the top of the page
 
+Quote Post
DPL
сообщение Dec 3 2004, 13:26
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 88
Регистрация: 15-10-04
Из: Новочеркасск
Пользователь №: 886



Цитата(gcc-user @ Dec 3 2004, 11:58)
Будет ли функция реентерабельная больше зависит от Вас, а не от компилятора.
*

Это, конечно, так, но только при условии, что параметры передаются через стек. А вот, например, C51 от Keil по умолчанию передает параметры через специально выделенную (статически) область памяти. Другое дело, что для ARM передача через стек выглядит наиболее естественно и, скорее всего, используется по умолчанию.
Go to the top of the page
 
+Quote Post
gcc-user
сообщение Dec 6 2004, 08:43
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 29
Регистрация: 21-09-04
Пользователь №: 691



Цитата
Другое дело, что для ARM передача через стек выглядит наиболее естественно и, скорее всего, используется по умолчанию.


Если укажите компилятор для ARM и его опции, при которых параметры будут передаваться через статически выделенную область памяти, буду очень благодарен - я такого извращения еще не видел.
Go to the top of the page
 
+Quote Post
DPL
сообщение Dec 6 2004, 13:36
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 88
Регистрация: 15-10-04
Из: Новочеркасск
Пользователь №: 886



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

Не укажу, да и вообще не уверен, что для ARM это есть smile.gif. Пример выше я привел лишь для того, чтобы обратить внимание автора вопроса на то, что такие варианты в принципе бывают, и, если у него возникли проблемы с реентерабельностью, то, возможно, дело в этом.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 13:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016