#if defined(__GNUC__)
__attribute__((__naked__))
#endif
Что за штука __atribute__?
Код:
Так вот что за [FONT="Courier New"]__naked__[/FONT]? И вообще [FONT="Courier New"]__attribute__[/FONT] ?
[FONT="Courier New"]__attribute__((__packed__)),
__attribute__((__constructor__))[/FONT]?
В какой документации почитать? На компилятор или libc?
Цитата: Котов Алексей
Столкнулся с программированием прерываний (чистый Си), и постоянно встречаются в исходниках конструкции типа
Так вот что за [FONT="Courier New"]__naked__[/FONT]? И вообще [FONT="Courier New"]__attribute__[/FONT] ?
[FONT="Courier New"]__attribute__((__packed__)),
__attribute__((__constructor__))[/FONT]?
В какой документации почитать? На компилятор или libc?
Код:
#if defined(__GNUC__)
__attribute__((__naked__))
#endif
__attribute__((__naked__))
#endif
Так вот что за [FONT="Courier New"]__naked__[/FONT]? И вообще [FONT="Courier New"]__attribute__[/FONT] ?
[FONT="Courier New"]__attribute__((__packed__)),
__attribute__((__constructor__))[/FONT]?
В какой документации почитать? На компилятор или libc?
STFW?
Это фича компилятора, позволяет сообщать кое какие метаданные. Атрибут __naked__ приводит к тому, что функция генерируется без пролога и эпилога, грубо говоря она не чистит стек.
Впрочим вот первая ссылка из гугла, там внизу подробности.
Цитата: Котов Алексей
Столкнулся с программированием прерываний (чистый Си), и постоянно встречаются в исходниках конструкции типа
Так вот что за [FONT="Courier New"]__naked__[/FONT]? И вообще [FONT="Courier New"]__attribute__[/FONT] ?
[FONT="Courier New"]__attribute__((__packed__)),
__attribute__((__constructor__))[/FONT]?
В какой документации почитать? На компилятор или libc?
Код:
#if defined(__GNUC__)
__attribute__((__naked__))
#endif
__attribute__((__naked__))
#endif
Так вот что за [FONT="Courier New"]__naked__[/FONT]? И вообще [FONT="Courier New"]__attribute__[/FONT] ?
[FONT="Courier New"]__attribute__((__packed__)),
__attribute__((__constructor__))[/FONT]?
В какой документации почитать? На компилятор или libc?
packed - заставляет паковать структуры, иначе атрибуты будут выровнены как захочется компилятору, например по 8 байтам на 64-битных машинках. Хотя факторов тут много, но только разрядность шины данных.