各种MOV操作码之间有什么区别?

5

在参考手册中,我看到MOV的操作码是88、89、8A等等。为什么一个指令会有多个操作码?

3个回答

4
那是因为从 CPU 的角度来看,这些指令略有不同。尽管助记符相同,操作数却不同。例如,在 这个文档 中,指令列清晰地显示了这些操作码之间的差异。

1
它们针对不同类型的源和目的地。对于CPU来说,在将8位和16/32位值移动到寄存器和内存位置并从中移动时存在很大差异,因此编码为不同的操作码。 操作码列表

1

CPU需要能够解码指令的含义。

由于有多种不同类型的操作数,CPU需要知道如何解释它们。如果操作码相同,它将无法确定以下位是寄存器编号还是内存地址。更不用说,具有相同助记符的不同类型的指令实际上使用不同数量的字节进行编码,因此CPU甚至无法确定下一条指令从哪里开始。

详情请参见Intel® 64和IA-32体系结构软件开发人员手册附录B。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接