__naked
, о котором я знаю, это
#define __naked __attribute__((naked))
. Это задокументированный атрибут GCC здесь .
. Он поддерживается не для всех целей.,Выполнение поиска по коду Google приведет к его некоторому использованию.
Причины того, что это делается в виде макроса, заключаются в том, что его можно определить как пустое для целей, которые не 'или если заголовки используются с другим компилятором.
Я помню (я думаю), что видел некоторые примеры этого для функций деления и модуляции (divmod
) для заголовков avr_gcc.Это вернуло структуру, в которой были оба возвращаемых значения, но все это хранилось в регистрах, а не в стеке.
Я не знаю, было ли __naked
как-то связано со способностью возвращать обачасти результата (которые были в структуре) в регистрах (а не в стеке), но это позволяло встроенной функции полностью состоять из вызова одной вспомогательной функции.