Only U is in my heart!
I will be right here waiting for you.

关于asm(" RPT #7 || NOP")的一点解释

其实这条语句在DSP等系统开发中经常要用到,比如更改某些配置后需要延时几个时钟周期才能够生效,这时asm(” RPT #7 || NOP”)便可以闪亮登场了。虽然这个功能我们都知道而且经常使用,但是具体的细节很多人却不知道,包括我。今天在一个交流群里有人突然问这条指令下去执行之后,会占用多少时钟周期呢?结果可想而知问蒙了。

到21ic论坛上发个帖子提问结果没人搭理,或许高手对这个问题并不关心。那只好动手测试一下了。

简单写段代码编译下载到片子里面(我是用的28335进行测试的!),观察CPU Timer0寄存器的TIMER0TIM位。发现执行asm(” RPT #7 || NOP”)之后,TIMER0TIM位增量是8.也就是说每执行一次需要8个时钟周期。确切的说是8个指令周期。这只是对CPU空闲的情况而言,因为空闲的时候,一个指令周期大约就是一个时钟周期。如果28335有任务的时候,可能就会占用9个抑或更多的时钟周期,这要分析流水线等因素。实际应用时,大可不必如此精准。用别的片子也可能会多于8个时钟,主要看片子执行每条指令需要多少个时钟周期。但有一点可以肯定的是asm(” RPT #7 || NOP”)这条指令必然会侵占8个指令周期.因为这条指令的意思就是重复执行7+1=8次 NOP 指令。

简单的总结一下:

对于TMS320F28335而言asm(” RPT #N || NOP”)会执行N+1次NOP指令,占用N+1个指令周期。正常情况下占用N+1个时钟周期。其他的片子占用的时钟周期自己计算。O(∩_∩)o …

赞(0) 打赏
未经允许不得转载:Onlyisu » 关于asm(" RPT #7 || NOP")的一点解释

相关推荐

  • 暂无文章

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏