【发布时间】:2011-12-17 18:17:21
【问题描述】:
gcc/g++ 中__declspec( naked ) 的等价物是什么? __declspec( naked )实际上是用来声明一个没有任何结语和序言的函数。
【问题讨论】:
-
@SigTerm 我正要发布那个链接,这是一个巧妙的技巧。
gcc/g++ 中__declspec( naked ) 的等价物是什么? __declspec( naked )实际上是用来声明一个没有任何结语和序言的函数。
【问题讨论】:
在某些架构上,gcc 支持一个名为“naked”的属性;最近的gcc docs 我已经给出了这个架构列表:ARM、AVR、MCORE、RX 和 SPU。
如果您正在使用其中一种架构(如果您尝试使用它并且它不受支持,gcc 会给您一个警告),该属性可以这样使用:
__attribute__ ((naked)) int fun ()
{
}
[最近在 gcc 开发人员列表上进行了一些讨论,关于添加“naked”属性作为更通用的功能,并尝试在更多架构上支持它,但显然这对您没有帮助:)。]
【讨论】:
我相信 Linux 下的最新 GCC 没有这样的等价物。编译器会在适当的时候发出序言和尾声,你应该把这个决定留给它。它可能非常擅长将序言或尾声制作得非常小,甚至有时根本不存在。
您可以在汇编中编写您的函数。或者您可以将 asm 语句放入您的函数中。
而且你没有说明你为什么要这样做。你的目标是什么,你为什么要问这个问题?
【讨论】: