gpt4 book ai didi

有人可以解释一下 __declspec(naked) 吗?

转载 作者:IT王子 更新时间:2023-10-29 00:13:01 26 4
gpt4 key购买 nike

我正在考虑将为 Windows 编写的脚本引擎移植到 Linux;它适用于 Winamp 的可视化平台 AVS。我不确定目前是否有可能。据我所知,代码正在获取 C 函数 nseel_asm_atannseel_asm_atan_end 的地址,并将它们存储在一个表中,它可以在代码执行期间引用该表。

我查看了 MS 的文档,但不确定 __declspec(naked) 的真正作用。文档中提到的 prolog 和 epilog 代码是什么?这与 Windows 调用约定有关吗?这是可移植的吗?知道使用类似技术的任何基于 Linux 的示例吗?

static double (*__atan)(double) = &atan;
__declspec ( naked ) void nseel_asm_atan(void)
{
FUNC1_ENTER

*__nextBlock = __atan(*parm_a);

FUNC_LEAVE
}
__declspec ( naked ) void nseel_asm_atan_end(void) {}

最佳答案

基本上,函数序言为局部变量设置了一个栈帧,而尾声负责清理它。这通常由编译器自动完成。如果您使用 __declspec(naked),设置此堆栈框架将由您决定,因此它为您提供了更大的灵 active 。

有很多引用:here , here , also here等等。

GNU gcc 编译器也支持 naked,但显然不支持 x86:search for "naked" in the page (我没有试过看看它是否适用于 x86)

关于有人可以解释一下 __declspec(naked) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3021513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com