Sam*_*lls 1 assembly arm instruction-set armv7
我正在为ARMv7处理器编写指令.我想知道为什么我不允许在MUL指令本身中有一个常量值?您可以使用ADD和SUB指令,为什么不使用MUL?
干杯
如果你看看ARM ISA的指令编码表,你会发现只有数据处理指令支持立即操作数(顺便说一下,有一个有趣的编码); 它们是唯一拥有12位操作数2的实例,所有其他操作数最多只有Rs和Rm的4位字段(其间保留的空间用于消除其他指令类别的歧义).
这个决定可能来自这样一个事实,即在乘法指令中嵌入immediates不是特别有趣; 如果乘数是已知的,mul通常是一个糟糕的选择,因为通常有更快的add/shift/sub序列.而且,乘法指令的成本可以使得从在指令中具有直接直接获得的等待时间的增益不能证明"窃取"在数据处理指令的编码中可用的16的时隙.