机器周期

[复制链接]
3207|31
jiahy 发表于 2014-2-14 23:20 | 显示全部楼层
跟编译器,CPU有关。
 楼主| liliang9554 发表于 2014-2-14 23:21 | 显示全部楼层
看了上边各位大虾的讨论,我也有点蒙的,一直就没咋想着问题的,和所用的单片机具体型号无关么?求解
jiajs 发表于 2014-2-14 23:22 | 显示全部楼层
这个不定,不能一概而论。跟架构相关,跟你的上下文相关,同时跟编译器的效率也相关。比如说在arm中一个32位立即数的加载指令的机器周期就可能是一条,也可能是两条。
jiajs 发表于 2014-2-14 23:22 | 显示全部楼层

很多相同功能的语句,如果编译器没有优化,不能的写**导致不一样的编译长度,例如for(i = 10; i > 0; i --)
的最终指令数就要少于for(i = 0; i < 10; i ++)
最准确的结果还是要看你最终编译出来的二进制文件的map表。
zhenykun 发表于 2014-2-14 23:24 | 显示全部楼层
编译上可以看到,自己是没办法算的,看编译器上的统计吧。硬件不同,结果肯定不同的。
wyjie 发表于 2014-2-14 23:24 | 显示全部楼层

每条汇编语句都不确定是多少机器周期,何况C语言呢,C语言就不要纠结多少机器周期了。要控制时序,可以尝试定时器。
jiahy 发表于 2014-2-14 23:25 | 显示全部楼层
要看具体的语句和编译器的情况,不一定的。
 楼主| liliang9554 发表于 2014-2-14 23:26 | 显示全部楼层
哦,我再看看,多谢啦
sedatefire 发表于 2014-2-15 14:52 | 显示全部楼层
汇总各楼,得真解。
zhaofy521 发表于 2014-2-15 15:27 | 显示全部楼层
不知道
zqjqq88 发表于 2014-2-15 18:06 | 显示全部楼层
主要是硬件和指令集决定的,编译器也有~
632588785 发表于 2014-2-19 14:35 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0