打印

nop指令有用吗

[复制链接]
2402|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chuxh|  楼主 | 2013-2-3 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器可以唤醒halt模式,而系统从halt退出首先执行定时器中断程序,那么halt后面的几条nop指令应该是无用的吧?
沙发
tian111| | 2013-2-3 16:01 | 只看该作者
不是一定需要的吧

使用特权

评论回复
板凳
zhuhuis| | 2013-2-3 16:02 | 只看该作者
如果程序只有一个中断,是不是应该把nop指令移到定时器中断程序的开始部分?

使用特权

评论回复
地板
tian111| | 2013-2-3 16:03 | 只看该作者
也不是不可以

使用特权

评论回复
5
zhuhuis| | 2013-2-3 16:05 | 只看该作者
哦,那是不是实际意义不是很大啊

使用特权

评论回复
6
宋倩2010| | 2013-2-3 16:06 | 只看该作者
恩,实际意义不大,但也不会影响到功能

使用特权

评论回复
7
gongche| | 2013-2-3 16:08 | 只看该作者
这是一种良好的编程习惯。

在HALT唤醒后,防止MCU各个外围模块启动不同步,一般放几个NOP延迟等待一下再操作。

使用特权

评论回复
8
chenho| | 2013-2-3 16:09 | 只看该作者
这3个NOP不一定会执行

使用特权

评论回复
9
李冬发| | 2013-2-3 17:23 | 只看该作者
这个nop是必须的,因为可能这个指令已经被读入到“管线”里了,预读的指令在halt后是会失效的,要是没有nop,不出问题才怪呢。

使用特权

评论回复
10
chenho| | 2013-2-3 17:40 | 只看该作者
但是
一定要加3个NOP

使用特权

评论回复
11
zhuhuis| | 2013-2-3 17:41 | 只看该作者
为什么

使用特权

评论回复
12
chenho| | 2013-2-3 17:43 | 只看该作者
因为CPU是pilpe line 结构的,执行HALT之前会预取指,这时候让CPU取到NOP才好

使用特权

评论回复
评论
jlass 2013-2-4 10:15 回复TA
流水线结构才是关键 
NE5532 2013-2-3 22:05 回复TA
说到点子上了。 
13
tian111| | 2013-2-3 17:45 | 只看该作者
其实多写几个NOP又不会什么大事情,为了防止那些小概率事件,保留它也是不错的选择。

使用特权

评论回复
14
宋倩2010| | 2013-2-3 17:48 | 只看该作者
是这样的,halt and stop (idle or power-down)后面加NOP是由于cpu是 piple-line结构,在执行halt的同时,将后面几条指令取指了。

使用特权

评论回复
15
宋倩2010| | 2013-2-3 17:49 | 只看该作者
这样从halt唤醒后,这两条指令不会执行了。所以还是要加在halt or stop后面。

使用特权

评论回复
16
gongche| | 2013-2-3 17:50 | 只看该作者
有些时候可能是为了时钟的切换,添加几条无意义的nop指令是为了保证不出错。

使用特权

评论回复
17
wenfen| | 2013-2-3 17:52 | 只看该作者
硬件不行软件补.软件不行手动补.

这应该是编译器的事,自动添加.....

使用特权

评论回复
18
chuxh|  楼主 | 2013-2-3 17:54 | 只看该作者
感谢大家,了解了

使用特权

评论回复
19
lark100| | 2013-2-3 21:48 | 只看该作者
需要延时

使用特权

评论回复
20
NE5532| | 2013-2-3 22:07 | 只看该作者
就算延时,也是为了等其他外设,而不是等内核。楼主没有说什么单片机,最多情况是在流水线时候,避免分支指令在唤醒后被错误响应。

使用特权

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

本版积分规则

936

主题

11296

帖子

2

粉丝