【发布时间】:2017-10-20 17:05:39
【问题描述】:
所有 x86 32 位汇编代码都是有效的 x86 64 位汇编代码吗?
我想知道 32 位汇编代码是否是 64 位汇编代码的子集,即每个 32 位汇编代码都可以在 64 位环境中运行?
我猜答案是肯定的,因为 64 位 Windows 可以执行 32 位程序,但后来我看到 64 位处理器支持 32 位兼容模式?
如果不是,请提供一个不是有效的 64 位汇编代码的 32 位汇编代码的小示例,并说明 64 位处理器如何执行 32 位汇编代码。
【问题讨论】:
-
你需要使用兼容模式,是的。
-
@Jester - 你能举例说明 32 位指令不是有效的 64 位指令吗?可以混合使用 32 位和 64 位汇编代码吗?
-
push eax例如在 64 位模式下无效。 -
@Jester 是的,你可以混合使用它们:远跳转到 32 位选择器,然后运行 32 位代码,然后远跳转到 64 位选择器。
-
这不是我对混合的定义……这意味着它们是分开的而不是混合的;)
标签: windows assembly binary x86