在x86中使用两个内存操作数

时间:2013-11-17 20:09:07

标签: assembly x86

为什么在x86中的指令movx中使用两个内存操作数是不对的?有硬件问题吗?

2 个答案:

答案 0 :(得分:2)

硬件问题是指令集没有这样的指令。

CPU 可以当然可以通过允许两个内存操作数的指令进行扩展,但英特尔还没有这样做,因为它确实没有太大的好处。他们为什么会这样?

答案 1 :(得分:1)

记忆只是记忆。它不知道如何移动东西 - 这就是CPU的作用,所以你1)从内存复制到CPU,2)从CPU回到内存。 mov指令就是这样做的。

将CPU内部的mov指令连接起来更加复杂,因此可能隐含地执行这两项操作可能不会带来任何好处。

更专业的MOVS指令可以在两条存储器指令之间移动,但它需要2个寄存器,因此如果需要保存这些寄存器通常没有任何好处。

还有其他设备,例如DMA引擎,可以减轻CPU的负担。