Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Интриyсики
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Zelepuk
Здравствуйте!
Объясните несведущему что такое intrinsics? с чем их едят? для чего?

Желательно по-подробнее и с жизненными примерами... ))
rezident
RTFM. Просто почитайте доку на ваш компилятор.
Zelepuk
А в общем?
rezident
А в общем это замена ассемблерных вставок для работы с определенными режимами/регистрами, которых нет/не реализованы в обычном Си.
Student Pupkin
Цитата(Zelepuk @ Nov 8 2010, 21:33) *
Объясните несведущему что такое intrinsics? с чем их едят? для чего?

Зверушки это такие. Едят их с гречкой. Для восполнения белков и жиров
Цитата(Zelepuk @ Nov 8 2010, 21:33) *
Желательно по-подробнее и с жизненными примерами... ))

Жизненный пример для ARM. Вот сели вы пейсать мегапрогу на си. Надобно бы разрешить прерывания IRQ. Ваши действия? (предполагаем, что как минимум про архитектуру ARM вы уже чуток почитали)

p.s. Пардон, не удержался. smile.gif резидент уже все рассказал.
sigmaN
с гречкой biggrin.gif
XVR
Небольшое добавление - иногда интринсиками могут стать и обычные С функции. Например gcc для некоторых архитектур (для x86 например) может сделать например memcpy (и пр.) интринсиками, т.е. вместо вызова функции подставить ее ассемблерное тело прямо в место вызова (причем оно, т.е. тело, может быть модифицировано компилятором в процессе подстановки в зависимости от контекста)
MrYuran
Цитата(XVR @ Nov 9 2010, 12:43) *
т.е. вместо вызова функции подставить ее ассемблерное тело прямо в место вызова

А вы случайно не с инлайном попутали?
XVR
Цитата(MrYuran @ Nov 9 2010, 12:53) *
А вы случайно не с инлайном попутали?
Нет. Именно интринсики. Реализация может быть разная (у gcc версий 3.x они делаются через макрос и кучу более простых, но уже действительно отрабатываемых компилятором, интринсиков), но смысл один.
У gcc все родные интринсики начинаются с __builtin_ (и их дофига)


sigmaN
Я всегда думал, что разница между инлайном и интринсиком в том, что инлайн функция определена где-то в каком-то файле и скомпилирована, а интринсики уже "зашиты" в компилятор и доступны даже в голом main без всяких инклудов и подключений либов....
XVR
Цитата(sigmaN @ Nov 9 2010, 16:55) *
Я всегда думал, что разница между инлайном и интринсиком в том, что инлайн функция определена где-то в каком-то файле и скомпилирована, а интринсики уже "зашиты" в компилятор и доступны даже в голом main без всяких инклудов и подключений либов....
Ну в общем да, хотя компилятор волен реализовывать эти интринсики как ему вздумается. У MS компилятора например они действительно реализованы внутри, но хидер с их прототипами все равно надо подключать, иначе он при компиляции ругается maniac.gif
sigmaN
Цитата
иначе он при компиляции ругается
Ну Микросойт же, что тут сказать.... ))
XVR
Цитата(sigmaN @ Nov 9 2010, 18:06) *
Ну Микросойт же, что тут сказать.... ))
Что то сказать можно rolleyes.gif У Intel'овского компилятора так же.
Дело в том, что интринсики раскрываются в код на этапе кодогенерации. До этого этапа они для всех частей компилятора не более, чем обычные функции. Поэтому фронтэнду компилятора нужны их прототипы, что бы он смог проверить вызов, если надо преобразовать типы параметров и правильно построить промежуточное представление. Так что где то они должны быть описаны - либо в отдельной таблице в самом компиляторе, либо снаружи, в виде хидера. Второй путь гораздо проще, т.к. по сути первый путь сводится либо к включению текста этого хидера прямо в компилятор (в виде текста), либо включение в компилятор откомпилированного образа этого хидера, что потребует дополнительных тулзов и режимов работы самого компилятора, что бы этот образ получить unsure.gif

SasaVitebsk
IAR тоже ругается, но компилит.
sigmaN
Цитата
Второй путь гораздо проще, т.к. по сути первый путь сводится либо к включению текста этого хидера прямо в компилятор (в виде текста),...
согласен.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.