Assembly 为什么数据的顺序会根据指令而变化?

Assembly 为什么数据的顺序会根据指令而变化?,assembly,mips,Assembly,Mips,我正在阅读Hamacher的计算机组织和嵌入式设计,刚刚开始学习mips。在第7页,有几个装配线的例子: Load R2, LOC Add R4, R2, R3 Store R4, LOC 在第一种方法中,LOC的内容被读取并加载到寄存器R2中。 在第二行中,寄存器R3和R2的内容相加,结果存储在R4中。到目前为止,它遵循一种模式。首先是存储数据的寄存器,然后是从中读取数据的一个或多个地址/寄存器 但在第三行,根据书中的描述,R4的内容从寄存器复制到地址LOC上。突然之间,它就不符合这种模式了

我正在阅读Hamacher的计算机组织和嵌入式设计,刚刚开始学习mips。在第7页,有几个装配线的例子:

Load R2, LOC
Add R4, R2, R3
Store R4, LOC
在第一种方法中,LOC的内容被读取并加载到寄存器R2中。 在第二行中,寄存器R3和R2的内容相加,结果存储在R4中。到目前为止,它遵循一种模式。首先是存储数据的寄存器,然后是从中读取数据的一个或多个地址/寄存器


但在第三行,根据书中的描述,R4的内容从寄存器复制到地址LOC上。突然之间,它就不符合这种模式了。为什么?为什么不
存储LOC,R4
?是不是第一个参数永远不能是内存地址?因此,只要“接收”位置是内存地址而不是寄存器,我就必须更改顺序?

以简化解析器的工作?第一个MIPS汇编程序可能是由大学教授创建的。有一天,他们让一名学生编写存储指令解析代码。没有人注意到它是向后的,直到他们的装配工出门。直到今天,情况仍然相反。附:不要相信你在网上看到的一切;)不仅在汇编器中,而且在操作码中都存在反转。@dwelch您能详细说明一下吗?为什么这会使解析器的工作更容易呢?您可以先编写代码,用register解析load,然后再填充,然后将代码重新用于存储。这是一种延伸,一个真正懒惰的程序员……归根结底,它为什么重要,它是什么。汇编语言与汇编程序紧密相连,没有任何理由说明您必须遵守任何其他语言。因此,如果您想要自己的mips asm语言,那么只需编写自己的汇编程序即可。至于为什么有人或一群人在过去做过某事,很少会有事实依据,充其量只是一个问题,而不是一个问题。