setup_var没用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了setup_var没用相关的知识,希望对你有一定的参考价值。
参考技术A 首先要确认一下系统,特别是C盘,是不是已经全部格式化了。然后确认一下临时的一个安装的文件。不行的话再去MSN上面重新去下载一windows10的安装文件。再用USB引导,启用安装引导安装方式进行安装系统。分配的堆栈空间没用?
【中文标题】分配的堆栈空间没用?【英文标题】:Useless allocated Stackspace? 【发布时间】:2012-12-26 02:44:54 【问题描述】:为什么这个函数在调用gets()
之前分配的堆栈空间比它需要的多?
echo:
pushl %ebp
movl %esp, %ebp
pushl %ebx
leal -8(%ebp), %ebx
subl $20, %esp <-- Why so much space?
movl %ebx, (%esp)
call gets
...
对应的C代码:
void echo()
char buf[4];
gets(buf);
puts(buf);
为什么缓冲区和gets的参数之间有额外的三个单词的空间?
【问题讨论】:
对齐。到处对齐! @H2CO3 假设 linux 上的 gcc,堆栈帧的对齐约定是什么? @phant0m 取决于具体的处理器。 i386 可能是 8 字节(不确定),而 AVX2 可能是 32 字节(再次不确定)。链接到二进制文件中的静态库需要匹配。 【参考方案1】:计算机系统一书中有两句话。 “gcc 遵循 x86 编程准则,即函数使用的总堆栈空间应为 16 字节的倍数。”和“包括保存的 %ebp 的 4 个字节和返回地址的 4 个字节,”
【讨论】:
以上是关于setup_var没用的主要内容,如果未能解决你的问题,请参考以下文章