是否指定在 x64 上推送堆栈指针时会发生什么?

问题描述

我正在 x64 上进行汇编编程,我打算在堆栈中推送一个地址。我打算写 push %rsp,但是,由于此指令更改了 %rsp 的值,我不确定会推送什么值。

特别是如果我运行以下:

movq $0x10,%rsp
pushq %rsp

内存地址 0x8 是否包含 0x100x8?这个处理器是依赖的​​还是所有 x64 处理器的标准?

解决方法

正如@Raymond Chen 在评论中提到的,它在 Intel 的手册中指定,HTML 摘录在这里:https://www.felixcloutier.com/x86/push

推送的值是%rsp 之前 push 指令的值。

对于涉及 RSP 的寻址模式的 push mem 也是如此,例如 push 16(%rsp) 复制堆栈中已有的内容。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...