gpt4 book ai didi

c - 是否有 gcc 标志来初始化局部变量存储?

转载 作者:太空狗 更新时间:2023-10-29 16:29:55 25 4
gpt4 key购买 nike

IBM AIX xlc 编译器提供了一个生成代码来初始化局部变量存储的标志:

      initauto=<hh>
Initialialize automatic storage to <hh>. <hh> is a
hexadecimal value. This generates extra code and
should only be used for error determination.

我认为 MSVC 编译器对调试构建做了类似的事情,但我的内存可能在这一点上模糊。

是否有 GCC 的等效选项?

最佳答案

好的,我可以提供最佳答案。

http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html遗漏说“不”。没有关于将堆栈删除代码注入(inject)输出的任何文档。

据我猜测,唯一可行的方法是注入(inject)一些类似memset 的代码(可能像一些mov 操作一样简单,但是尽管如此)进入每个嵌入的词法框架的开头,其中创建了一个自动变量。据我所知——我不是 GCC 内部专家,但是——似乎没有任何记录可以这样做。

在此之后,第 361 页的 GCC 内部结构 (http://gcc.gnu.org/onlinedocs/gccint.pdf) 的 PDF gccint.pdf 定义了函数入口处帧指针调整调用步骤的 GCC 名称是 prologue . (不过,我真的不知道/理解这是否适用于函数内的其他词法范围。)由于这应该出现在机器定义 (md) 文件中,因此任何此类选项似乎为 CPU 架构定义。我在 http://gcc.gnu.org/viewcvs/trunk/gcc/config/i386/ 查看了他们的在线 ViewCVS并在 i386.md 的第 11,893 行附近找到(至少一个)prologue 的副本,在搜索函数扩展几步之后,似乎没有任何东西可以发出像这样的条件代码。

但是这个 GCC 引擎盖下的东西有点整洁......

关于c - 是否有 gcc 标志来初始化局部变量存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10526602/

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