如何解决是否指定在 x64 上推送堆栈指针时会发生什么?
我正在 x64 上进行汇编编程,我打算在堆栈中推送一个地址。我打算写 push %rsp
,但是,由于此指令更改了 %rsp
的值,我不确定会推送什么值。
特别是如果我运行以下:
movq $0x10,%rsp
pushq %rsp
内存地址 0x8
是否包含 0x10
或 0x8
?这个处理器是依赖的还是所有 x64 处理器的标准?
解决方法
正如@Raymond Chen 在评论中提到的,它在 Intel 的手册中指定,HTML 摘录在这里:https://www.felixcloutier.com/x86/push。
推送的值是%rsp
之前 push
指令的值。
对于涉及 RSP 的寻址模式的 push mem
也是如此,例如 push 16(%rsp)
复制堆栈中已有的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。