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.
Run Code Online (Sandbox Code Playgroud)
我认为MSVC编译器对调试版本做了类似的事情,但在这一点上我的内存可能很模糊.
海湾合作委员会是否有同等选择权?
BRP*_*ock 10
好的,我能提供的最佳答案.
http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html通过省略说"不".没有任何文档可以将堆栈擦除代码注入到输出中.
尽管我可以猜到,唯一可行的方法是在每个嵌入式词汇框架的开头注入一些memset
类似的代码(可能只是一些简单的mov
操作,但是仍然如此),其中创建了一个自动变量.尽可能接近 - 我与GCC内部的专家相差甚远,但是 - 似乎没有任何记录会这样做.
在下面的内容中,GCC Internals的PDF gccint.pdf(http://gcc.gnu.org/onlinedocs/gccint.pdf)第361页定义了在进入函数时帧指针调整的GCC名称调用步骤是prologue
.(但我真的不知道/理解这是否适用于函数中的其他词法范围.)由于这应该发生在机器定义(md)文件中,因此似乎必须为CPU体系结构定义任何此类选项.我在http://gcc.gnu.org/viewcvs/trunk/gcc/config/i386/上搜索了他们的在线ViewCVS,并找到prologue
了i386.md左右11,893行的副本(至少有一份). -the-function-expansion几跳,似乎没有任何东西可以像这样发出条件代码.
但这个GCC的引擎盖下的东西有点整洁......