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

ARM64的STP指令如何为两个寄存器值分配足够栈空间?

你对ARM64通用寄存器的位宽认知有误:

  • ARM64 命名以X开头的通用整数寄存器均为 64位(8字节),128位的是Q开头的浮点/SIMD向量寄存器。

你列出的STP X0, X1, [SP, #-16]!是预索引写回模式的存储对指令,执行逻辑如下:

  1. 先将栈指针SP的值减去16,更新为新的栈顶地址
  2. 将8字节的X0存入新SP偏移0的地址,8字节的X1存入新SP偏移8的地址

两个寄存器总存储占用刚好是16字节,预留的空间完全足够,不存在空间不足的问题。

如果你需要存储两个128位的Q寄存器,才需要预留32字节空间,对应指令为STP Q0, Q1, [SP, #-32]!。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:36:03