【问题标题】:x86 ASM - does cpuid set the flags?x86 ASM - cpuid 是否设置标志?
【发布时间】:2017-02-24 19:19:24
【问题描述】:

x86 CPUID 指令会改变标志寄存器吗?不幸的是,我无法使用调试器。

我正在一个 D 程序中编写一些 GCC 汇编代码,我想知道是否将“cc”放在 clobbers 中,只是为了安全起见。

【问题讨论】:

  • 根据this manual 没有。
  • 我在谷歌上没有看到任何明确提及它。
  • 基本上,更新标志是一种副作用,应该在指令伪代码中列出。如果那里不存在,则不会设置标志。
  • 更不用说官方intel指令集参考中的“Flags Affected None.”部分了。
  • 您永远不需要将"cc" 放在 x86 内联汇编语句的破坏者中,因为 GCC 无论如何都假定它。请注意,其他 CPU 架构不一定如此。

标签: assembly x86 x86-64 cpuid


【解决方案1】:

根据http://www.felixcloutier.com/x86/CPUID.html

受影响的标志

无。

CPUID 和 eflags 之间只有一个链接。
x86 CPU 仅支持CPUID if ...

EFLAGS 寄存器中的 ID 标志(位 21)表示支持 CPUID 指令。如果软件程序可以设置和清除该标志,则执行该程序的处理器支持 CPUID 指令。

【讨论】:

    猜你喜欢
    • 2021-02-27
    • 2013-07-30
    • 2018-07-30
    • 2013-07-20
    • 2019-06-27
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    相关资源
    最近更新 更多