我一直在帮助实验室进行 ARM7 汇编语言课程,今天遇到了一个学生输入以下表达式的问题:
MUL R0, R0, R1
代码没有编译。解决方案是将表达式更改为:
MUL R0, R1, R0
即 MUL 的前两个参数不能是同一个寄存器。我已经知道这一点,因为它是 ARM 文档的一部分:http: //infocenter.arm.com/help/topic/com.arm.doc.dui0489i/DUI0489I_arm_assembler_reference.pdf
学生很高兴他们的问题得到解决,但我很沮丧,因为我不知道为什么ARM7 要求像这样传递参数。我认为这可能与乘法器移位和加法时用于存储中间值的寄存器之一有关,但我什至不确定乘法是否在 ARM 上工作(事实上,我相当当然不是)。为什么参数的顺序在这里如此重要?