2016-03-12 81 views
-3

我遇到了使用IDA在Windows中调试64位二进制文​​件的问题。通常情况下,后,RSP值应该扣除8.但偶尔从IDA,我看到RSP只扣除2,然后8扣除下一个推。Intel 64位,奇怪的RSP行为

涉及的代码是

push rax 
push rbx 
push rsi 
push rdi 

我是很新的64位环境,从而任何人都可以解释这种现象?

+2

它不应该是2,除非代码使用16位推(这是不正常的)。显示说明和之前。 – Jester

+0

downvted:不包含详细信息(如具有特定指令前后值的调试器实际文本转储)。 –

回答

5

您可能会混淆为十六进制。由8计数去

0 8 10 18 20 28 30 

你在看,并思考10 - 8 == 2?因为它是0x10 - 0x8 == 0x8

+2

你是否也有额外的心理阅读费用? :) – Jester

+0

@Jester:Nope,包的所有部分:)我偶尔发现自己犯了一两个错误,足以记住它发生了。不过,我花了几分钟的时间在输入评论时想到这一点。 :P –