【问题标题】:Overriding x86 SS segment for PUSH and POP instructions (SS:SP, SS:ESP, SS:RSP)为 PUSH 和 POP 指令覆盖 x86 SS 段(SS:SP、SS:ESP、SS:RSP)
【发布时间】:2013-04-05 19:32:41
【问题描述】:

我需要解释/模拟 x86 指令的 PUSH 和 POP 系列。

我现在的问题是:

PUSH 和 POP 指令能否接受段覆盖前缀,以便我可以推送或弹出到 ES:SPCS:SPDS:SPFS:SPGS:SP 而不是 SS:SP?

【问题讨论】:

  • CPU 文档有什么问题?
  • 我认为段覆盖只适用于“内存操作数”,例如,对于 push address,它只适用于 address 部分,而不是 push 对地址内容的作用。我同意 Alexey 建议您查阅 CPU 文档;他们通常非常清楚说明的作用。
  • @AlexeyFrunze 我认为英特尔/AMD 手册没有任何问题。可能只是我过去犯了很多痛苦的错误,由于累积了微小/细微的错误,需要完全重写程序(这需要数周或更长时间才能编写),现在我对实施想法非常谨慎,并且我需要从整个社区的知识中验证我的理解是否准确。由于手册的技术性很强(不仅需要 CPU 手册),我现在知道我会妄想认为自己在某些时候不会犯致命的错误。
  • 手册只需要很少的其他东西:练习。你读过一些东西,然后你尝试一下。

标签: assembly x86 callstack


【解决方案1】:

段覆盖前缀会影响 PUSH 的源位置和 POP 的目标位置。
您不能覆盖堆栈段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2019-10-30
    • 2011-04-07
    • 2017-09-12
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    相关资源
    最近更新 更多