【发布时间】:2017-12-03 20:51:26
【问题描述】:
英特尔软件开发手册中提到了neg 指令:
如果源操作数为 0,则 CF 标志设置为 0;否则设置为 1。根据结果设置 OF、SF、ZF、AF 和 PF 标志。
我以为 AF 和 CF 会被设置为好像 neg %eax 被替换为,
not %eax # bitwise negation
add $1, %eax
但事实并非如此,在真正的 CPU 上否定 0x6ffffef5 会设置 AF 和 CF。
【问题讨论】:
-
@EvanCarroll:您为什么将这个问题从 AT&T 改为 Intel 语法?现在我的回答看起来很奇怪。
-
@PeterCordes 我不想参加那场圣战,退出(恢复为 GAS)。虽然我确实认为将 [intel] 或 [x86] 标签标准化是件好事。
-
@EvanCarroll :[Intel] 标签与 Intel 汇编语言语法没有太大关系。它通常是英特尔架构。有 [intel-syntax] 和 [att] 标签用于针对特定于 Intel 或 AT&T 汇编语言语法的问题。
-
@MichaelPetch:
[intel]标签用于询问英特尔制造的任何东西,例如他们的数学库、图形硬件/快速同步、计算机视觉库等等。 (我按照标签查找错误标记的 asm 问题。相当多的[intel]问题与 asm 无关。)关于 x86 汇编语言或 x86 ISA 的问题通常应该只有[intel]标记,如果它专门关于英特尔对该 ISA 的实现,例如有关 Skylake 或 . Ryzen 的等效问题将有一个[amd]标签。 -
@MichaelPetch:啊,我明白了。对我来说,标签措辞听起来像是将范围限制为英特尔特定的 x86 扩展(如事务内存),而不是一般的 x86 ISA 问题。 (这就是我阅读您的评论的方式。我也不确定您是否说它仅限于此,或者这只是它所涵盖的一部分,抱歉我很迂腐)。鉴于这些主题已经有
[x86]和[itanium]标签,我认为这是合适的。我认为我们同意我们肯定希望 x86 问题标记为 x86,以便它们可以被找到,而不是分散在[intel]和[x86]中。
标签: assembly x86 intel twos-complement negation