英特尔 64 位,奇怪的 RSP 行为

Intel 64 bits, strange RSP behavior

我在 Windows 中使用 IDA 调试 64 位二进制文​​件时遇到了问题。正常情况下一次pushRSP值应该减8。但是偶尔从IDA上看到RSP只减2,下次Push就减8。

涉及的代码是

push rax
push rbx
push rsi
push rdi

我对 x64 环境很陌生,因此有人可以解释这种行为吗?

您可能对十六进制感到困惑。以 8 计数

0  8  10  18  20  28  30

你是不是在看着那个并思考 10 - 8 == 2?因为它是 0x10 - 0x8 == 0x8.