打印

c语言执行一步需要多久?

[复制链接]
7822|50
手机看帖
扫描二维码
随时随地手机跟帖
沙发
HWM| | 2011-11-18 13:57 | 只看该作者
re LZ:

这要看具体机器指令的执行时间,不同类型的指令执行时间不同。所以就指令层面都无法统一确定就更不用说C语言了。

使用特权

评论回复
板凳
mhl331302671|  楼主 | 2011-11-18 13:59 | 只看该作者
2# HWM
比如说  i++;  执行需要多久?

使用特权

评论回复
地板
HWM| | 2011-11-18 14:01 | 只看该作者
to 3L:

也没法确定。

使用特权

评论回复
5
HWM| | 2011-11-18 14:04 | 只看该作者
要确定具体执行时间,必须落实到具体的CPU,然后确定编译参数(含优化),最终看汇编指令是如何实现的。

使用特权

评论回复
6
mhl331302671|  楼主 | 2011-11-18 14:05 | 只看该作者
4# HWM
那有时候看时序图需要延时的时候,您都是怎么写程序来保证延时的时间会充足呢?

使用特权

评论回复
7
yewuyi| | 2011-11-18 14:09 | 只看该作者
从LZ的几个帖子来看,唯一的回答就是不能确定。

因为LZ是希望知道C代码中一行代码执行的时间长度,但C语言中一行代码可能是一个很复杂的汇编指令组合,而到底有多少条指令,则需要就具体代码具体分析,显然没有答案。

使用特权

评论回复
8
mhl331302671|  楼主 | 2011-11-18 14:21 | 只看该作者
比如

使用特权

评论回复
9
mhl331302671|  楼主 | 2011-11-18 14:21 | 只看该作者
比如说在51单片机中我想要延时15微妙,该怎么写程序呢?

使用特权

评论回复
10
zhl100| | 2011-11-18 14:29 | 只看该作者
算的时候要看你的一条c指令转化成几句汇编,汇编是怎么执行的
再转化成机器周期
再通过晶振频率算

看看51的书,上面有的。:D

使用特权

评论回复
11
zhl100| | 2011-11-18 14:30 | 只看该作者
用定时器吧,在定时器中断里计时

使用特权

评论回复
12
mhl331302671|  楼主 | 2011-11-18 14:42 | 只看该作者
11# zhl100
如果在一段程序中有多处延时,不可能每次都进入中断吧?我这样说对吗?

使用特权

评论回复
13
兰天白云| | 2011-11-18 14:46 | 只看该作者
LZ这样问问题,我傻眼了

使用特权

评论回复
14
yewuyi| | 2011-11-18 14:50 | 只看该作者
LZ这样问问题,我傻眼了
兰天白云 发表于 2011-11-18 14:46


风紧,扯乎

使用特权

评论回复
15
tyw| | 2011-11-18 15:03 | 只看该作者
一般用试验方法: 把某一I/O口取反,空操作几步后循环,再用示波器测I/O口波形,计算时间.

使用特权

评论回复
16
注册好烦| | 2011-11-18 16:17 | 只看该作者
单步执行不就知道了,有这么困难吗!

使用特权

评论回复
17
xm419| | 2011-11-18 16:37 | 只看该作者
15楼的方法是最方便的,俺们都是这么做的

使用特权

评论回复
18
blx13579| | 2011-11-18 17:13 | 只看该作者
如果,要精确计算10楼是正解;

使用特权

评论回复
19
junming6385| | 2011-11-18 17:14 | 只看该作者
加软件断点可以得出执行时间

使用特权

评论回复
20
谈的元| | 2011-11-18 21:57 | 只看该作者
首先明白 汇编指令 执行时间

然后看 C的反汇编,然后调整C的参数

使用特权

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

本版积分规则

个人签名:我是菜鸟,求合体,求指点,各种求。。。

1

主题

63

帖子

1

粉丝