在大学期间,我研究了 x86 和 x64 架构,以及其他采用 MOV 功能的架构。和他们一起工作后,当我找到一个像 MIPS r3000 一个,或者Commodore 64那个没有MOV并且依赖于保存到内存并从内存加载以在寄存器之间移动值时,我感到很困惑
所以,我想知道,这个背后的原因是什么?我们设计了基于信号处理的体系结构,至少在这些情况下,MOV函数的实现只依赖于同时打开注册表写入和注册表读取信号,从而使其成为一个非常简单的命令。那么,为什么它不在这些架构中实现呢?他们是如此不同,事情不是这样的吗?空间问题?时髦设计?
我不禁怀疑。
答案 0 :(得分:4)
X86需要MOV
指令,因为它的原始咒语8086依赖于2个操作数指令。如果您的指令集如下:
instruction destination_op, source_op
专用mov
指令的替代方案很少。
但是,如果像mips那样你有3个操作数指令
instruction destination, source1, source2
然后,有许多方法可以将数据从源移动到目标,而无需专用的mov
指令
另外,一些指令集仅具有不同名称的移动指令,例如, Z80为LD
(加载),6502为T??
(转移)。