You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

栈指针(SP)实际指向何处?指向最后已用字节还是首个空闲字节?

x64栈指针(RSP)的指向说明

x64架构的栈是向下生长的——栈空间从高内存地址向低地址方向分配。关于栈指针(RSP/SP)的指向,核心规则是:它始终指向当前栈顶的有效数据位置,或者说你刚分配的栈空间的起始地址(最低地址)。

结合你的例子具体解释:

  • 初始栈为空时,SP的值是0xffff。
  • 执行subq rsp, 16后,SP会被减去16,计算得0xffff - 16 = 0xfff0。
  • 你分配的4个int数组(共16字节)会占据0xfff0到0xffef的地址范围(每个int占4字节,16字节对应16个地址单元)。此时SP的值就是0xfff0,也就是这片数组空间的起始地址。

额外补充:x64的标准栈操作(比如push指令)也遵循这个逻辑——执行push rax时,会先将RSP减8(对应rax的8字节长度),再把rax的值写入RSP指向的地址,此时RSP就指向刚存入的数据。

内容的提问来源于stack exchange,提问作者Irra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 10:22:04