我指的是这份ARM64文档:https://developer.arm.com/documentation/102374/0101/Loads-and-stores---load-pair-and-store-pair
它有这样的指令:
STP X0, X1, [SP, #-16]!
描述为:
Load and store pair instructions are often used for pushing, and popping off the stack.
This first instruction pushes X0 and X1 onto the stack
如果arm64中的这些寄存器是128位(16个字节(,我假设我们总共需要32个字节才能在堆栈上存储其中的2个,但上面的指令只从堆栈指针中减去16个字节。
我一定误解了SP, #-16
。这是否真的为2个寄存器的复制留出了足够的空间?
通用寄存器是64位(而不是问题中提到的128位(,因此在堆栈上分配16个字节确实适合x0和x1寄存器。