在x86-64 Tour of Intel Manuals中,我读到
也许最令人惊讶的事实是,诸如
MOV EAX, EBX
这样的指令会自动将RAX
寄存器的高32位清零。
在同一来源引用的英特尔文档(手册基本体系结构中64位模式下的3.4.1.1通用寄存器)告诉我们:
在目标通用register.
在x86-32和x86-64汇编中,16位指令,如
mov ax, bx
不要表现出这种“奇怪”的行为,即eax的上一个单词被归零。
因此:引入这种行为的原因是什么?乍一看,这似乎不合逻辑(但原因可能是我习惯了x86-32汇编的怪癖)。
https://stackoverflow.com/questions/11177137
复制相似问题