论坛风格切换切换到宽版
  • 6105阅读
  • 11回复

C语言的while循环需要几个指令周期 [复制链接]

上一主题 下一主题
离线adsldy
 
发帖
1216
只看楼主 倒序阅读 0楼 发表于: 2005-11-02
请教各位,c语言的while循环需要几个指令周期?


比如:

  while(i--);

我自己分析,i--需要一个,判断需要一个,跳转需要2个,这样共四个指令周期,不知道是不是正确
离线1a2b3c
发帖
204
只看该作者 1楼 发表于: 2005-11-02
如果是编译后优化为 djnz i ,xxx 的话,那么就这么一条
离线adsldy
发帖
1216
只看该作者 2楼 发表于: 2005-11-02
'
如果是编译后优化为 djnz i ,xxx 的话,那么就这么一条
'

那么如果延时5ms,晶振频率4m,那么该怎么循环?
离线BD0AAI
发帖
3050
只看该作者 3楼 发表于: 2005-11-02
建议你看看编译后的汇编再计算周期, 如果用keil的话, 会有一个。src 文件就是汇编的
离线adsldy
发帖
1216
只看该作者 4楼 发表于: 2005-11-02
'
建议你看看编译后的汇编再计算周期, 如果用keil的话, 会有一个。src 文件就是汇编的
'
哦,非常感谢喽!!
离线Sullivan
发帖
4817
只看该作者 5楼 发表于: 2005-11-02
和你选的优化等级有关的。
^^
离线bg1ug7373
发帖
79
只看该作者 6楼 发表于: 2005-11-02
就因为c语言延麻烦,这部分可以用汇编来写啊。
离线adsldy
发帖
1216
只看该作者 7楼 发表于: 2005-11-02
'
就因为c语言延麻烦,这部分可以用汇编来写啊。
'
感觉汇编直接,可写起大点的程序来,还是c,但c有些问题有不很容易弄明白,比如空闲的时候,c就是不停的跳转,汇编就可以nop,汇编太具体,c太概括,呵呵。。
离线ljchip
发帖
459
只看该作者 8楼 发表于: 2005-11-02
'
请教各位,c语言的while循环需要几个指令周期?
比如:
  while(i--);
我自己分析,i--需要一个,判断需要一个,跳转需要2个,这样共四个指令周期,不知道是不是正确
'

用keil-c51编译的话这条指令肯定不是用djnz,你用的是i--,编译器是先用subb或者cjne判定是否符合条件再作如何处理。如果是--i的话,i如果是无符号字符型的话,编译器会使用djnz处理。
离线ljchip
发帖
459
只看该作者 9楼 发表于: 2005-11-02
'
那么如果延时5ms,晶振频率4m,那么该怎么循环?
'
如果采用这种方式编程,我劝你不要用c51编程,用汇编吧,轻松自如。用c51的话一定要用好定时器编程!!!
离线adsldy
发帖
1216
只看该作者 10楼 发表于: 2005-11-03
'
如果采用这种方式编程,我劝你不要用c51编程,用汇编吧,轻松自如。用c51的话一定要用好定时器编程!!!
'
谢谢您的指点,我用pic16f877a,编译器用的是picc,汇编偶头痛,那玩艺不如c好玩,呵呵。。。
离线bravoradio
发帖
1968
只看该作者 11楼 发表于: 2005-11-11
c51就不要这么精确了,差个几微秒的。