Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование указателей в uC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
alexander55
Вопрос к уважаемому Форуму.
При использовании классов переменные попадают в RAM, а функции во Flash.
Получается, что при использовании указателей выделяется дополнительная память под указатели и само обращение к функциям дополнительно тормозит.
А теперь вопрос. Имеет ли смысл вообще при наличии альтернативы использовать указатели на классы в uC ?
rezident
ИМХО использование указателей имеет смысл, если вы пишете отдельные функциональные модули. Очень удобно один раз написать и отладить такой модуль и потом для других случаев применять уже готовый. А чтобы не было привязки к конкретным адресам/данным используются указатели и относительная адресация.
Если же быстродействие и размер ОЗУ, используемого для данных и указателей, критичны, то наверное лучше обойтись без указателей.
alexander55
Цитата(rezident @ Aug 9 2007, 15:12) *
ИМХО использование указателей имеет смысл, если вы пишете отдельные функциональные модули.

Без указателей тоже отдельные.
Цитата(rezident @ Aug 9 2007, 15:12) *
Очень удобно один раз написать и отладить такой модуль и потом для других случаев применять уже готовый.

Полностью согласен.
Цитата(rezident @ Aug 9 2007, 15:12) *
А чтобы не было привязки к конкретным адресам/данным используются указатели и относительная адресация.

Для загрузки и выполнения загруженной программы (пример CPM, MSDOS), это верно.
Для uC вряд ли, программа ведь во Flash.
Цитата(rezident @ Aug 9 2007, 15:12) *
Если же быстродействие и размер ОЗУ, используемого для данных и указателей, критичны, то наверное лучше обойтись без указателей.

Очень хорошо, большое спасибо.
rezident
Цитата(alexander55 @ Aug 9 2007, 18:22) *
Для загрузки и выполнения загруженной программы (пример CPM, MSDOS), это верно.
Для uC вряд ли, программа ведь во Flash.

Ну и что из этого? Во Flasj можно выделить отдельный сегмент(ы) и загружать туда готовый(е) модуль(и). А в основной программе использовать указатели для вызова функций из выделенного сегмента.

Цитата(alexander55 @ Aug 9 2007, 18:22) *
Без указателей тоже отдельные.

Если модуль использует только свои собственные переменные и вызовы, то да. А если он использует другие глобальные переменные или вызовы?
alexander55
Цитата(rezident @ Aug 9 2007, 17:45) *
Ну и что из этого? Во Flasj можно выделить отдельный сегмент(ы) и загружать туда готовый(е) модуль(и). А в основной программе использовать указатели для вызова функций из выделенного сегмента.

Я понял Вашу мысль. Если делать наладонник, то только так и надо поступать.
Цитата(rezident @ Aug 9 2007, 17:45) *
Если модуль использует только свои собственные переменные и вызовы, то да. А если он использует другие глобальные переменные или вызовы?

Вы имеете ввиду что-то тина API вызовы? Если так, то Вы правы (но на эту тему надо очень хорошо помыслить).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.