Эквивалент __declspec (голый) в gcc / g ++ - PullRequest
9 голосов
/ 29 октября 2011

Что эквивалентно __declspec( naked ) в гкц / г ++ ? __declspec( naked ) фактически используется для объявления функции без эпилога и пролога.

Ответы [ 2 ]

9 голосов
/ 31 октября 2011

На некоторых архитектурах gcc поддерживает атрибут, называемый «голым»; самые последние gcc документы Я приведу этот список архитектур: ARM, AVR, MCORE, RX и SPU.

Если вы используете одну из этих архитектур (gcc выдаст вам предупреждение, если вы попытаетесь использовать ее, и она не поддерживается), атрибут можно использовать так:

__attribute__ ((naked)) int fun ()
{
}

[В последнее время в списке разработчиков gcc обсуждается вопрос о добавлении атрибута «голый» в качестве более общей функции и попытке поддержки его на большем количестве архитектур, но, очевидно, это не поможет вам :)

0 голосов
/ 29 октября 2011

Я полагаю, что нет такого эквивалента с недавним GCC под Linux.Компилятор издает прологи и эпилоги, когда это уместно, и вы должны оставить это решение на усмотрение.Это может быть весьма неплохо для того, чтобы делать прологи или эпилоги достаточно маленькими или даже иногда отсутствовать.

Вы можете написать свою функцию в ассемблере.Или вы можете поместить операторы asm в вашу функцию.

И вы не сказали, почему вы хотите это сделать.Какова ваша цель, и почему именно вы спрашиваете?

...