打印
[应用相关]

每条c语句等于多少机器周期

[复制链接]
1212|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laozhongyi|  楼主 | 2018-12-23 20:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
每条c语句等于多少机器周期
沙发
Edisons| | 2018-12-23 20:18 | 只看该作者
用keil u3,debug调试,然后查看汇编窗口,里面就是对应c程序的汇编代码.每条语句对应的机器周期是不一样的

使用特权

评论回复
板凳
_gege| | 2018-12-23 20:22 | 只看该作者
看看反汇编 然后找本汇编的书,自己算算

使用特权

评论回复
地板
Listate| | 2018-12-23 20:34 | 只看该作者
如若遇到for,if 这类语句,怎么计算?如若程序有2,000条,20,000汇编语句,怎么自己算?

使用特权

评论回复
5
zhouhuanの| | 2018-12-23 20:34 | 只看该作者
our_name.a51是宏汇编源代码,读懂它就知道宏汇编分段分模块编程策略。调试窗口已经将各个模块连接成一体,一个大模块,若是几万行的代码,把你看晕。

使用特权

评论回复
6
handleMessage| | 2018-12-23 20:45 | 只看该作者
测时间,研究具体多少语句没有太大意义,可以估计1行C=7行汇编。

使用特权

评论回复
7
bbapple| | 2018-12-23 20:46 | 只看该作者
很多相同功能的语句,如果编译器没有优化,不同的写法导致不一样的编译长度,例如for(i = 10; i > 0; i --)

使用特权

评论回复
8
sourceInsight| | 2018-12-23 21:04 | 只看该作者
两种写法都是正确的,不过在没有优化的情况下会有不同的编译长度。

使用特权

评论回复
9
boy1990| | 2018-12-23 21:05 | 只看该作者
利用断点计算,在这条语句的前面加一个断点。运行程序,然后在你要计算的语句的后面加个断点。再运行,两次时间相减,就行了。查看时间,在keil软件上有,很精确的

使用特权

评论回复
10
toofree| | 2018-12-27 12:14 | 只看该作者
本帖最后由 toofree 于 2018-12-27 12:23 编辑

顺序执行指令的可以算,看汇编,比如51。
带流水的算不来,即便看汇编也不管用。比如STM32三级流水,取址,译码,执行。执行一条指令,同时会译码一条,还会预取一条。一旦正在预取或译码的指令受到前一条执行结果影响,如果预测失败,将要放弃流水中的指令,重新取址。

使用特权

评论回复
11
磨砂| | 2019-1-3 08:29 | 只看该作者
这个真不会算

使用特权

评论回复
12
八层楼| | 2019-1-3 09:56 | 只看该作者
跟C语言的种类 也有关系吧

使用特权

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

本版积分规则

111

主题

1388

帖子

0

粉丝