【发布时间】:2017-02-24 19:19:24
【问题描述】:
x86 CPUID 指令会改变标志寄存器吗?不幸的是,我无法使用调试器。
我正在一个 D 程序中编写一些 GCC 汇编代码,我想知道是否将“cc”放在 clobbers 中,只是为了安全起见。
【问题讨论】:
-
根据this manual 没有。
-
我在谷歌上没有看到任何明确提及它。
-
基本上,更新标志是一种副作用,应该在指令伪代码中列出。如果那里不存在,则不会设置标志。
-
更不用说官方intel指令集参考中的“Flags Affected None.”部分了。
-
您永远不需要将
"cc"放在 x86 内联汇编语句的破坏者中,因为 GCC 无论如何都假定它。请注意,其他 CPU 架构不一定如此。