我遇到了使用IDA在Windows中调试64位二进制文件的问题。通常情况下,推后,RSP值应该扣除8.但偶尔从IDA,我看到RSP只扣除2,然后8扣除下一个推。Intel 64位,奇怪的RSP行为
涉及的代码是
push rax
push rbx
push rsi
push rdi
我是很新的64位环境,从而任何人都可以解释这种现象?
我遇到了使用IDA在Windows中调试64位二进制文件的问题。通常情况下,推后,RSP值应该扣除8.但偶尔从IDA,我看到RSP只扣除2,然后8扣除下一个推。Intel 64位,奇怪的RSP行为
涉及的代码是
push rax
push rbx
push rsi
push rdi
我是很新的64位环境,从而任何人都可以解释这种现象?
您可能会混淆为十六进制。由8计数去
0 8 10 18 20 28 30
你在看,并思考10 - 8 == 2
?因为它是0x10 - 0x8 == 0x8
。
你是否也有额外的心理阅读费用? :) – Jester
@Jester:Nope,包的所有部分:)我偶尔发现自己犯了一两个错误,足以记住它发生了。不过,我花了几分钟的时间在输入评论时想到这一点。 :P –
它不应该是2,除非代码使用16位推(这是不正常的)。显示说明和之前。 – Jester
downvted:不包含详细信息(如具有特定指令前后值的调试器实际文本转储)。 –