我正在为msp430指令集的模拟器工作.gnu汇编程序将允许您编码如下指令:
fc0a: 12 10 00 02 rrc &0x0200
fc0e: 22 11 rra #4
fc10: 23 52 add #4,#2
Run Code Online (Sandbox Code Playgroud)
我的猜测是rrc&0x0200将从地址0x0200获取执行旋转然后将答案写回地址0x0200,对吗?但#ra rra会做什么?来源将是我假设的直接4但操作后是否有目的地?添加#4,#2组装成你期望的(如2b10,source = r2,ad = 1b0,dest = r3),binutils反汇编程序虽然不知道如何处理该指令.
这些有效的说明吗?
虽然似乎没有任何明确的在线参考这种效果,但我倾向于同意OP,即所示的两条指令(以及其他几条指令)可能无效,即使它们符合数据表中定义的格式.
换句话说,并非组成指令字的各个部分的所有可能组合都是有效的.特别是许多使用立即寻址模式的单操作数指令,以及许多对目的地具有立即寻址模式的双操作数指令可能在语义上不可行.
在文档中只有一些提示,例如,在用户指南的3.3.7节(关于立即寻址模式)中,注释表示" 仅对源操作数有效. "(并且,BTW,这适用于所有立即寻址模式的情况,而不仅仅是R2或R3常量生成技巧所允许的短手情况.)
反汇编程序不知道如何处理这些代码的事实也是另一个暗示(虽然......一些反汇编程序很容易被绊倒......).
为了便于记录,我在下面收集了一些有用的MSP430参考资料: