gpt4 book ai didi

c++ - 有选择地省略 MSVC 中的帧指针

转载 作者:行者123 更新时间:2023-11-30 03:30:50 27 4
gpt4 key购买 nike

在 GCC 中,我可以有选择地为特定函数设置优化标志,因此:

void func() {}

生成:

func():
push rbp
mov rbp, rsp
nop
pop rbp
ret

还有这个:

__attribute__((optimize("-fomit-frame-pointer")))
void func() {}

生成:

func():
nop
ret

我如何在 visual studio 中做同样的事情?

最佳答案

编译器有一个命令行参数,/Oy,这使得编译器忽略帧指针。您可以使用 #pragma 实现相同的效果:

#pragma optimize("y", on)

int foo(int a) { // foo will be compiled with omitted frame pointers
return a;
}

#pragma optimize("y", off)

此处,foo() 将使用省略的帧指针进行编译。

注意:如我所见,您必须构建一个优化的构建才能使该选项生效。因此,要么向编译器提供一些优化标志(如“/Og”),要么在编译指示中包含“g”:#pragma optimize("gy", ...)

(我已使用 Visual Studio 2015 对此进行了检查)

关于c++ - 有选择地省略 MSVC 中的帧指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44695947/

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