打印

请教430

[复制链接]
1186|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ayb_ice|  楼主 | 2008-5-16 10:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁能详细解释一下430的仿真指令问题:

仿真指令是不是真正意义的指令,是通过硬件的还是软件的,感觉好象是通过编译器替换成现有指令的,比如INC是个仿真指令,但用C写的测试程序(IAR)根本就是3条指令,还有就是发现编译器没有产生一条仿真指令.

相关帖子

沙发
machunshui| | 2008-5-16 10:16 | 只看该作者

仿真指令由1条内核指令配合常数发生器仿真

仿真指令由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能实现超低功耗的一个原因.

使用特权

评论回复
板凳
ayb_ice|  楼主 | 2008-5-16 10:26 | 只看该作者

继续请教

R3,R4当做常数发生器时,运行mov R3,Rn(AS = 00)后是否会改变R3以前的值,我觉得应该会改变...
这个容易理解一点,上面说的INC的问题呢...

使用特权

评论回复
地板
zjf0000| | 2008-5-16 10:52 | 只看该作者

太强悍了

用了430这么长时间,从来也没用过仿真指令。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

222

主题

15435

帖子

34

粉丝