【问题标题】:Intel 64 bits, strange RSP behavior英特尔 64 位,奇怪的 RSP 行为
【发布时间】:2016-06-27 18:59:27
【问题描述】:

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

涉及的代码是

push rax
push rbx
push rsi
push rdi

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

【问题讨论】:

  • 不应为 2,除非代码使用 16 位推送(这是不正常的)。显示说明和前后。
  • downvted:不包括细节(例如来自调试器的实际文本转储,在特定指令上具有前后值)。

标签: assembly x86-64 callstack ida


【解决方案1】:

您可能被十六进制混淆了。数到 8 去

0  8  10  18  20  28  30

您是否正在思考10 - 8 == 2?因为它是0x10 - 0x8 == 0x8

【讨论】:

  • @Jester:不,所有的包的一部分 :) 我偶尔会发现自己犯了这个错误一两秒钟,足以记住它已经发生了。不过,我在输入评论时花了几分钟才想到这一点。 :P
猜你喜欢
  • 2012-11-01
  • 1970-01-01
  • 2019-04-01
  • 2014-03-27
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多