打印

执行一条语句时间计算

[复制链接]
3592|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
appsir| | 2013-3-9 10:39 | 只看该作者
1/MCLK * CYCLECOUNTER

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3 淡定
板凳
comeon201208| | 2013-3-9 15:58 | 只看该作者
哦,学习啦,些两位的指点的,我也看看的

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
地板
胡斯哲|  楼主 | 2013-3-9 21:53 | 只看该作者
appsir 发表于 2013-3-9 10:39
1/MCLK * CYCLECOUNTER

请问  为什么复位后CYCLECOUNTER=169   
这条语句执行后所用时间为:1/8M*(174-169)

使用特权

评论回复
5
appsir| | 2013-3-10 13:04 | 只看该作者
计数要看程序编译后的汇编代码的执行条数

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
6
cjhk| | 2013-3-10 19:10 | 只看该作者
看看啦  呵呵   围观一下  呵呵   顶一个   希望对大家有帮助  谢谢了

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
7
胡斯哲|  楼主 | 2013-3-10 22:10 | 只看该作者
有人给个准信吗???????、

使用特权

评论回复
8
胡斯哲|  楼主 | 2013-3-10 22:12 | 只看该作者
没人    不好散分啊

使用特权

评论回复
9
胡斯哲|  楼主 | 2013-3-10 22:15 | 只看该作者
appsir 发表于 2013-3-10 13:04
计数要看程序编译后的汇编代码的执行条数

汇编不会  一直用的c    能佛麻烦指点一下

使用特权

评论回复
10
jlass| | 2013-3-11 09:21 | 只看该作者
本帖最后由 jlass 于 2013-3-11 09:25 编辑
胡斯哲 发表于 2013-3-10 22:15
汇编不会  一直用的c    能佛麻烦指点一下

必须看汇编的,看C的毫无意义。优化级别的不同也会对结果产生影响。所以不一定是(174-169)
另外,有的汇编语句占用一个clock,有的是两个clock,甚至更多,这点也请注意。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3 很给力!
11
appsir| | 2013-3-11 11:49 | 只看该作者
胡斯哲 发表于 2013-3-10 22:15
汇编不会  一直用的c    能佛麻烦指点一下

你用的什么IDE啊,如果是IAR点击debug后不是会有那个assembly的汇编代码框吗,照着那个就能数清楚了,其他的应该有类似的吧

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
12
smilingangel| | 2013-3-11 12:41 | 只看该作者
要使用会变得还好理解的,关键是现在大家都用的C,这个时间计算起来是有些麻烦的了啊

使用特权

评论回复
13
胡斯哲|  楼主 | 2013-3-11 18:51 | 只看该作者
appsir 发表于 2013-3-11 11:49
你用的什么IDE啊,如果是IAR点击debug后不是会有那个assembly的汇编代码框吗,照着那个就能数清楚了,其 ...

嗯  是iar   执行一条就是1/8M微妙吗?

使用特权

评论回复
14
胡斯哲|  楼主 | 2013-3-11 18:59 | 只看该作者
jlass 发表于 2013-3-11 09:21
必须看汇编的,看C的毫无意义。优化级别的不同也会对结果产生影响。所以不一定是(174-169)
...

时间根据汇编语句确定时间长短 一般就是一个时钟周期吧?    刚开始学430   不知道IAR调试时需不需要调晶振大小?

使用特权

评论回复
15
appsir| | 2013-3-11 21:44 | 只看该作者
胡斯哲 发表于 2013-3-11 18:51
嗯  是iar   执行一条就是1/8M微妙吗?

MCLK是就是

使用特权

评论回复
16
jlass| | 2013-3-12 09:04 | 只看该作者
胡斯哲 发表于 2013-3-11 18:59
时间根据汇编语句确定时间长短 一般就是一个时钟周期吧?    刚开始学430   不知道IAR调试时需不需要调晶 ...

不一定是一个clk的,调晶振大小指的是倍频么,可调可不调

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
17
三千花花世界| | 2013-3-12 09:25 | 只看该作者
C语言的代码在不同的编译器和不同的优化等级下,最终产生的汇编代码的指令和数目都是不同的。

在C语言的环境下,讲单条C语言代码的执行速度是没有意义的

讲求执行速度的应用,无论如何都应该深入到汇编代码层次去看

现在的IDE都提供汇编代码调试窗口,看一下不是很难的事情

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
18
胡斯哲|  楼主 | 2013-3-12 21:37 | 只看该作者
三千花花世界 发表于 2013-3-12 09:25
C语言的代码在不同的编译器和不同的优化等级下,最终产生的汇编代码的指令和数目都是不同的。

在C语言的环 ...

不懂汇编    不知道看汇编代码要看些什么?

使用特权

评论回复
19
三千花花世界| | 2013-3-13 10:11 | 只看该作者
胡斯哲 发表于 2013-3-12 21:37
不懂汇编    不知道看汇编代码要看些什么?

看看你需知道执行时间的C代码,最终被编译器编译成了几句汇编代码,分别使用的是什么指令,每个指令的执行周期是多少,最终可以算出C代码的执行时间。

搞懂这些也许需要花费很多时间,但对于一个工程师来说,这是件有意义的事情

在一般的调试过程中,如果我想知道一段代码的确定执行时间,我会在该代码的开头和结束部分,翻转一个I/O口,然后外接示波器看看I/O翻转的具体时间。这个时间间隔是非常靠谱的:lol

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3 赞一个!
20
jlass| | 2013-3-13 16:29 | 只看该作者
搞懂这些也许需要花费很多时间,但对于一个工程师来说,这是件有意义的事情

楼上的这句话说的很对。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
胡斯哲 + 3
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:读书喝茶,不争朝夕

141

主题

1431

帖子

6

粉丝