msp430是精简指令集单片机,只有27条内核指令,居然比pic的低端系列还少。 但是msp430有大量的仿真指令。
一开始看书没仔细看,一带而过,想当然仿真指令是由几条内核指令仿真,肯定指令长度长,运行速度慢。 后来仔细一看,完全不是那么回事,恰恰是:
由1条内核指令配合常数发生器仿真,指令长度短,运行速度快。
举个例子: msp430内核指令没有清除寄存器指令,如果没有仿真指令机制(使用常数发生器的),可以用: mov #0,Rn 这条指令占用4个字节,即1个16位的指令后跟随一个16位常数0, 运行时间3个指令周期。
而实际上,由于msp430有使用常数发生器的仿真指令机制,可以运用这条仿真指令: CLR Rn 它被汇编器翻译成: mov R3,Rn(AS = 00)
即AS位为00的R3(CG2)的内容固定为0,这条指令运行时间1个指令周期,长度2个字节.
AS为替他数值,常数发生器CG1,CG2(即R2,R3)还可为固定的+1,-1,2,4,8等常数
这样的话,msp430的内核只要实现27条精简指令,内核一定很小,功耗也一定很小,这可能也是msp430能实现超低功耗的一个原因. |