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

-3 assembly callstack x86-64 ida

我遇到了使用IDA在Windows中调试64位二进制文​​件的问题.通常情况下,推送 RSP值应该扣除8.但偶尔,从IDA我看到RSP仅扣除2,然后是下一次推送8.

涉及的代码是

push rax
push rbx
push rsi
push rdi
Run Code Online (Sandbox Code Playgroud)

我对x64环境很新,因此任何人都可以解释这种行为吗?

Pet*_*des 5

你可能会被十六进制混淆.按8计数

0  8  10  18  20  28  30
Run Code Online (Sandbox Code Playgroud)

你在看这个并思考10 - 8 == 2吗?因为它0x10 - 0x8 == 0x8.