roboforum.ru

Технический форум по робототехнике.
Текущее время: 22 май 2025, 01:46

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 10 янв 2011, 19:17 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
blindman писал(а):
не, Ромик, ты ничего не понял. "Слабые" символы разрешаются на этапе компоновки, с перегрузкой не имеют ничего общего

тогда более подробно плз , для тех кто на бронепоезде...

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 10 янв 2011, 20:02 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Начнем с терминологии - похоже, ты путаешь перегрузку с виртуальными методами. Виртуальные методы имеют одинаковые сигнатуры, и могут переопределяться в классах-наследниках, а конкретная реализация выбирается во время исполнения. Перегруженные методы имеют разные сигнатуры, конкретная реализация выбирается при компиляции в зависимости от фактических параметров. Виртуальные методы явно существуют только в объектно-ориентированных языках, в то время как перегрузка возможна и в рамках процедурной парадигмы. Но это не значит, что например на C нельзя писать программы с применением принципов ООП.

Romikgy писал(а):
на чистом си используют подмену адреса самой ф-ции , как с тем же прерыванием.... пишем свою ф-цию , берем ее адрес, и записываем на место вектора прерывания, так же можно поступать и с другими ф-циями

Для этого надо, чтобы вызов функции происходил через указатель на нее. Это во первых медленно, во вторых небезопасно (легко обойти контроль типов). При применении слабых символов, связывание имени с адресом происходит на этапе компоновки. И было бы интересно посмотреть, как ты будешь писать новые адреса векторов в флэш.
Michael_K писал(а):
просто редкостная штука - мало кто в такие дебри лезет
На самом деле, используется очень часто, просто не все про это знают. В том же avr-gcc (а точнее avr-libc) все вектора прерываний слабо связаны с функцией bad_interrupt, а когда обработчики прерываний определяются в программе - используются эти новые функции.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 10 янв 2011, 21:24 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Ну так-то понятно, что используется... Просто "в дебри лезут" не многие.
Используют, не думая, как оно там внутри разбирается-собирается...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 10 янв 2011, 23:23 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
теперь понятно , что связывание идет на моменте компиляции , хотя по моему это через одно место ...
blindman писал(а):
Для этого надо, чтобы вызов функции происходил через указатель на нее. Это во первых медленно, во вторых небезопасно (легко обойти контроль типов). При применении слабых символов, связывание имени с адресом происходит на этапе компоновки. И было бы интересно посмотреть, как ты будешь писать новые адреса векторов в флэш.

если смотреть в сторону разработок на авр то как правило проект делает один человек , и если он сам же в своем коде бочинит.....
про вызов через указатель ... откуда медленость ?
про запись во флеш , авр тоже умеет писать во флеш...
PS я в основном работаю с ARM ... так можно исполнять код отовсюду (почти ) имхо это его огромный плюс )))
PPS хотя мы отошли от темы ... за разъяснения спасибо ... интересно в кодовижени эти фичи юзать можно ? хотя к какому побу их применить еще не придумал )))

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 10 янв 2011, 23:35 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Romikgy писал(а):
интересно в кодовижени эти фичи юзать можно ?

Наверняка это "специфично для компилятора". То есть такие фишки может и есть, но синтаксис не обязательно совпадает. По крайней мере я такого в стандартах не встречал... правда и не искал :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 11 янв 2011, 05:49 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Romikgy писал(а):
если смотреть в сторону разработок на авр то как правило проект делает один человек

Это заблуждение
Romikgy писал(а):
про вызов через указатель ... откуда медленость ?

Это очевидно. Или просто вызвать функцию по фиксированному адресу, или сначала загрузить адрес из памяти в регистры, а потом сделать косвенный вызов. А учитывая что косвенный вызов зачастую работает только с определенными регистрами, компилятор может сгенерировать код для сохранения/восстановления этих регистров.

В стандарте C слабые символы отсутствуют.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Слабое" объявление функций в AVRGCC
СообщениеДобавлено: 12 янв 2011, 01:38 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
спасибо за объяснения

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO