Сергею Вакуленко: вопрос о тасках

33 views
Skip to first unread message

Александр Литягин

unread,
Sep 15, 2015, 12:05:39 PM9/15/15
to uOS embedded
мне непонятно почему модуль kernel/task побит на много отдельных ,с объектов, каждый из которых содержит одну процедуру, вместо того чтобы сложить их все вместе в один .с объект.
Сергей (Serge Vakulenko, <v...@cronyx.ru>), зачем это надо?
По моему скромному разумению проку от этого невижу, а барьеры оптимизатору компилятора очевидны.

Serge V.

unread,
Sep 15, 2015, 4:51:34 PM9/15/15
to uOS embedded
Большинству приложений не нужна вся функцинальность ядра, поэтому ядро разбито на несколько файлов. Это позволяет уменьшить размер бинарника за счет устранения неиспользуемого кода, что особенно заметно на 8-битных архитектурах.

Там не совсем по одной процедуре в файле, по нескольку все-таки. Функции, которые линкуются всегда вместе, собраны в один файл.
 
вторник, 15 сентября 2015 г., 9:05:39 UTC-7 пользователь Александр Литягин написал:

Александр Литягин

unread,
Sep 15, 2015, 5:36:48 PM9/15/15
to uos-em...@googlegroups.com
для этого случая компилятору гцц дают параметр чтобы выходной объект бил на секции - индивидуальную секцию на каждую функцию, и на переменную. а линкеру - чтобы выбрасывал неиспользуемые секции. результат тот же самый, только используемый код не надо подбирать вручную а линкер сам определяет что нужно выбросить.

15.09.2015 22:51, Serge V. пишет:
--
Вы получили это сообщение, поскольку подписаны на группу "uOS embedded".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес uos-embedded...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес uos-em...@googlegroups.com.
Чтобы зайти в группу, перейдите по ссылке http://groups.google.com/group/uos-embedded.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.




Avast logo

Это сообщение проверено на вирусы антивирусом Avast.
www.avast.com


Serge Vakulenko

unread,
Sep 15, 2015, 5:48:55 PM9/15/15
to uos-em...@googlegroups.com
При этом размер кода каждой отдельной функции имеет тенденцию увеличиваться. В целом полезный, но неоднозначный метод. Сливание всех исходников в один файл при этом не помогает.

Кроме того, этот параметр доступен только в новых версиях, начиная с gcc-4.0, кажется. Для некоторых архитектур типа MSP430 имеется только gcc-3.2, так что такой подход не работает.

Александр Литягин

unread,
Sep 16, 2015, 6:52:54 AM9/16/15
to uOS embedded
работал с семействами АВР8, Н8, С6, С55, и нигде проблем с устранением неиспользуемого кода не заметил. разница была только в том что в стандартном ГЦЦ без побивания функций в персональные секции не обойтись, а в фирменных версиях бывало что эта опция и не нужна. проект contiki, и не только он, не заморачивается с разбиением кода, хотя их память жмет посильнее чем то на что нацелен этот проект. вобщем таких компиляторов не встречал.

Интересно узнать что Вы понимаете под и"меет тенденцию увеличиваться" - как это выглядит, за счет чего это происходит?

среда, 16 сентября 2015 г., 0:48:55 UTC+3 пользователь Serge V. написал:
Reply all
Reply to author
Forward
0 new messages