Re[8]: Куда податься?
От: olegkr  
Дата: 09.01.09 21:40
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Шаблоны не могут влиять на размер использованного стека , а на примере std::vector покажете ? это достаточно серьезный шаблон ?

Это не шаблон. Это коллекция, сделанная на шаблонах.
Re[9]: Куда податься?
От: ambel-vlad Беларусь  
Дата: 09.01.09 22:04
Оценка:
Hi olegkr

M>>Шаблоны не могут влиять на размер использованного стека , а на примере std::vector покажете ? это достаточно серьезный шаблон ?

O>Это не шаблон. Это коллекция, сделанная на шаблонах.

А что тогда шаблон? И как он увеличивает использование стека?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Куда податься?
От: NikeByNike Россия  
Дата: 10.01.09 01:08
Оценка: -1
Здравствуйте, minorlogic, Вы писали:

EOH>>Уровень ядра — все очень жестко с памятью. В частности, памяти под стэк очень мало. Серьезный шаблон с STL не влезет.


M>Шаблоны не могут влиять на размер использованного стека , а на примере std::vector покажете ? это достаточно серьезный шаблон ?


Легко В реализации вижалки его размер байт 16, а в жёстких условиях хватит 6-8.
Нужно разобрать угил.
Re[9]: Куда податься?
От: minorlogic Украина  
Дата: 10.01.09 08:35
Оценка:
Здравствуйте, NikeByNike, Вы писали:

NBN>Здравствуйте, minorlogic, Вы писали:


EOH>>>Уровень ядра — все очень жестко с памятью. В частности, памяти под стэк очень мало. Серьезный шаблон с STL не влезет.


M>>Шаблоны не могут влиять на размер использованного стека , а на примере std::vector покажете ? это достаточно серьезный шаблон ?


NBN>Легко В реализации вижалки его размер байт 16, а в жёстких условиях хватит 6-8.


а при чем тут шаблон ? делайте 6-8 ... кто запрещает
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Ищу работу, 3D, SLAM, computer graphics/vision.
С++ в ядре: использовать можно, но дозированно.
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 15.01.09 18:15
Оценка: 12 (2)
Здравствуйте, minorlogic, Вы писали:

x64>>>Потому что драйвера на C++ считаю извращением

CC>>Смотря что ты понимаешь под C++.
CC>>Если груду шаблонов вперемешку с STL и исключениями — да, в дровах такому не место.

M>Почему?

потому что как уже сказали — есть ограничения на стек, нет полноценной поддержки RTTI и исключений, STL в полной мере тоже отсутствует и прочие моменты. Если конкретно по шаблонам (да и inlines тут многое касается) говорить, то не надо с ними заигрываться в ядре потому что для начала неизвестно, куда попадет сгенеренный компилятором шаблонный код — в pageable память или нет. А для нас это бывает очень важным когда paging уже недоступен, а pagable кода в памяти еще нет.

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

Короче говоря ликбез на эту тему доступен здесь.

Тем не менее все совсем не так плохо, как возможно считают некоторые адепты С выше по ветке и лично я уверен С++ в ядре — быть! Собственно, он уже там весьма давно и с успехом применяется, в т.ч. ядерными (не всеми) командами в MSFT.

Просто нужно четко понимать что у нас есть и что можно (и когда), а что нельзя и почему.
В этом плане ничего нового, просто цена незнания бывает более суровой, чем в мире куда долетает свет GUI
... << RSDN@Home 1.2.0 alpha 4 rev. 1136>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re: С++ в ядре: использовать можно, но дозированно.
От: Cyberax Марс  
Дата: 15.01.09 18:26
Оценка:
Здравствуйте, Valery A. Boronin, Вы писали:

VAB>потому что как уже сказали — есть ограничения на стек, нет полноценной поддержки RTTI и исключений, STL в полной мере тоже отсутствует и прочие моменты.

RTTI и исключения, кстати, можно сделать

VAB>Если конкретно по шаблонам (да и inlines тут многое касается) говорить, то не надо с ними заигрываться в ядре потому что для начала неизвестно, куда попадет сгенеренный компилятором шаблонный код — в pageable память или нет. А для нас это бывает очень важным когда paging уже недоступен, а pagable кода в памяти еще нет.

По факту — всё кладётся в non-paged memory.
Sapienti sat!
Re[2]: С++ в ядре: использовать можно, но дозированно.
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 15.01.09 19:12
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

VAB>>потому что как уже сказали — есть ограничения на стек, нет полноценной поддержки RTTI и исключений, STL в полной мере тоже отсутствует и прочие моменты.

C>RTTI и исключения, кстати, можно сделать
прошу записать в протокол, что я не говорил что нельзя. Правда поддержку исключений будет сделать непросто, учитывая "современное развитие печатного дела на Западе". Да и SEH есть. Равно как и необходимость в RTTI часто есть признак неоптимального проектирования. Так что необходимость в этих механизмах за пару десятилетий особо не возникла именно в ядерном мире и пока не вижу подвижек в этом направлении. Ибо есть вещи поважнее

VAB>>Если конкретно по шаблонам (да и inlines тут многое касается) говорить, то не надо с ними заигрываться в ядре потому что для начала неизвестно, куда попадет сгенеренный компилятором шаблонный код — в pageable память или нет. А для нас это бывает очень важным когда paging уже недоступен, а pagable кода в памяти еще нет.

C>По факту — всё кладётся в non-paged memory.
Возможно, только не у всех и не всегда.

иначе бы не было вещей, описанных в документе который можно было бы обозвать вместо "С++ в ядре: за и против" "С++ в ядре: Кровь, пот и слезы", натурально
... << RSDN@Home 1.2.0 alpha 4 rev. 1136>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[3]: С++ в ядре: использовать можно, но дозированно.
От: Cyberax Марс  
Дата: 15.01.09 21:01
Оценка:
Здравствуйте, Valery A. Boronin, Вы писали:

C>>RTTI и исключения, кстати, можно сделать

VAB>прошу записать в протокол, что я не говорил что нельзя. Правда поддержку исключений будет сделать непросто, учитывая "современное развитие печатного дела на Западе". Да и SEH есть.
Ну собственно, SEH и используется для этого.

VAB>Равно как и необходимость в RTTI часто есть признак неоптимального проектирования. Так что необходимость в этих механизмах за пару десятилетий особо не возникла именно в ядерном мире и пока не вижу подвижек в этом направлении. Ибо есть вещи поважнее

Ну да, RTTI (как и множественного виртуального наследования) нафиг не нужна в большинстве случаев. Просто я говорю, что и её можно сделать

А вот исключения как раз очень кстати бывают.

C>>По факту — всё кладётся в non-paged memory.

VAB>Возможно, только не у всех и не всегда.
Всегда и у всех пока что. Это скорее как теоретическая угроза, но раз сам MS использует С++ в ядре, то вряд ли они станут это ломатью

Ну и в крайнем случае, можно будет написать пост-процессор .obj-файлов, добавляющий нужные аннотации для сгенерированных блоков.

VAB>иначе бы не было вещей, описанных в документе который можно было бы обозвать вместо "С++ в ядре: за и против" "С++ в ядре: Кровь, пот и слезы", натурально

Нет, почему. Для С++ников там вполне очевидные вещи написаны.
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.