yosephcz 0 30 ноября, 2004 Опубликовано 30 ноября, 2004 · Жалоба мужики, есть LPC2292 + GCC compiler, как сделать "reentrant function"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jojo 0 1 декабря, 2004 Опубликовано 1 декабря, 2004 · Жалоба Вроде есть опция ГЦЦ `-mapcs-reentrant': Generate reentrant, position independent code. This is the equivalent to specifying the `-fpic' option. The default is `-mno-apcs-reentrant'. ГЦЦ рядом нет, проверить не могу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gcc-user 0 3 декабря, 2004 Опубликовано 3 декабря, 2004 · Жалоба Будет ли функция реентерабельная больше зависит от Вас, а не от компилятора. A) Реентерабельная функция не должна хранить статические данные в промежутках между вызовами (все данные передаются из вызывающей функции). Б) Реентерабельная функция не должна возвращать указатель на статические данные. В) Реентерабельная функция не может вызывать нереентерабельную функцию. Г) Если нужен доступ к общим ресурсам, то необходимо использовать механизм блокировки (простейшим вариантом является запрещение прерываний на время "критической операции"). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DPL 0 3 декабря, 2004 Опубликовано 3 декабря, 2004 · Жалоба Будет ли функция реентерабельная больше зависит от Вас, а не от компилятора. <{POST_SNAPBACK}> Это, конечно, так, но только при условии, что параметры передаются через стек. А вот, например, C51 от Keil по умолчанию передает параметры через специально выделенную (статически) область памяти. Другое дело, что для ARM передача через стек выглядит наиболее естественно и, скорее всего, используется по умолчанию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gcc-user 0 6 декабря, 2004 Опубликовано 6 декабря, 2004 · Жалоба Другое дело, что для ARM передача через стек выглядит наиболее естественно и, скорее всего, используется по умолчанию. Если укажите компилятор для ARM и его опции, при которых параметры будут передаваться через статически выделенную область памяти, буду очень благодарен - я такого извращения еще не видел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DPL 0 6 декабря, 2004 Опубликовано 6 декабря, 2004 · Жалоба Если укажите компилятор для ARM и его опции, при которых параметры будут передаваться через статически выделенную область памяти, буду очень благодарен - я такого извращения еще не видел. <{POST_SNAPBACK}> Не укажу, да и вообще не уверен, что для ARM это есть :). Пример выше я привел лишь для того, чтобы обратить внимание автора вопроса на то, что такие варианты в принципе бывают, и, если у него возникли проблемы с реентерабельностью, то, возможно, дело в этом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться