C 语言 程序 中 ， 如何 理解 栈 是 由 编译器 管理 的 ？
引用 6 楼 u014627144 的 回复 : [ quote = 引用 5 楼 lm_whales 的 回复 : ] 你 说 得 挺 能 解开 我 这 个 疑惑 的 ， 请问 下 哪里 可以 查看 或者 验证 下 呢 ~ ~ [ / quote ] 要 想 彻底 理解 这些 东西 ， 编译 原理 ， 汇编 语言 ， 以及 计算机 组成 与 结构 ， 这 方面 的 知识 都 是 需要 了解 的 X86 堆栈 ， 函数 调用 ， 数据 暂存 ， 以及 函数 局部 自动 变量 ， 函数 参数 ， 都 在 使用 . 具体 到 VC 上 ， 函数 局部 自动 变量 ， 函数 参数 ， 用 一 个 固定 的 常 量 ， 表示 函数 相对 栈 帧 的 相对 偏移 量 。 具体 读 写 ， 一般 是 通过 寄存器 间接 寻址 等 方式 读 写 ， 大都 是 用 ebp 读 写 ， 有时候 优化 后 的 代码 ， 可能 会 用 esp 读 写 。 另外 ， 32 Bits 代码 ， 一般 看 不 到 设置 堆栈 的 操作 ， 栈 的 位置 通过 段 寄存 器 SS 确定 ， SS 一般 不 用 设置 ， 所以 堆栈 段 地址 ， 以及 堆栈 基地 址 ， 这些 在 汇编 代码 里 是 看 不 到 的 。 能 看到 的 堆栈 操作 ， 一般 都 是 用 相应 指令 ， 比较 明显 的 就 是 对 esp , ebp 这 两 个 寄存器 的 使用 。
