【发布时间】:2013-04-05 19:32:41
【问题描述】:
我需要解释/模拟 x86 指令的 PUSH 和 POP 系列。
我现在的问题是:
PUSH 和 POP 指令能否接受段覆盖前缀,以便我可以推送或弹出到 ES:SP、CS:SP、DS:SP、FS:SP 或 GS:SP 而不是 SS:SP?
【问题讨论】:
-
CPU 文档有什么问题?
-
我认为段覆盖只适用于“内存操作数”,例如,对于 push address,它只适用于 address 部分,而不是 push 对地址内容的作用。我同意 Alexey 建议您查阅 CPU 文档;他们通常非常清楚说明的作用。
-
@AlexeyFrunze 我认为英特尔/AMD 手册没有任何问题。可能只是我过去犯了很多痛苦的错误,由于累积了微小/细微的错误,需要完全重写程序(这需要数周或更长时间才能编写),现在我对实施想法非常谨慎,并且我需要从整个社区的知识中验证我的理解是否准确。由于手册的技术性很强(不仅需要 CPU 手册),我现在知道我会妄想认为自己在某些时候不会犯致命的错误。
-
手册只需要很少的其他东西:练习。你读过一些东西,然后你尝试一下。