Linux中国论坛's Archiver

lydr 发表于 2006-12-15 17:36

kernel 2.6.6 init/main.c 208-214行随想

版本2.6.6 init/main.c 208-214行

while ( lps_precision-- && (loopbit >>= 1) ) {
loops_per_jiffy |= loopbit;
ticks = jiffies;
while (ticks == jiffies);
ticks = jiffies;
__delay(loops_per_jiffy);

if (jiffies != ticks) /* longer than 1 tick */
loops_per_jiffy &= ~loopbit;

}

看到loops_per_jiffy |= loopbit; loops_per_jiffy &= ~loopbit; 时,
我突然很好奇它们会比loops_per_jiffy+=loopbit; loops_per_jiffy-=loopbit;
效率高多少呢,于是写了类似代码进行测试。
下面是我的例子

代码一

crow@gradetwo:~$ cat test.c
main(){

unsigned long a = 10000 ;
unsigned long b = 1542 ;
unsigned long i ,j;
for( i=0; i<65534; i++){
for (j=0; j<65534; j++){
a+=b ;
a-=b ;
}
}
}


代码二
crow@gradetwo:~$ cat hhh.c
main(){

unsigned long a = 10000 ;
unsigned long b = 1542 ;
unsigned long i ,j;
for( i=0; i<65534; i++){
for (j=0; j<65534; j++){
a|=b ;
a&=~b ;
}
}
}




反汇编代码:
crow@gradetwo:~$ diff test.s hhh.s
1c1
< .file "test.c"
---
> .file "hhh.c"
28,29c28,31
< addl %edx, (%eax)
< movl -8(%ebp), %edx
---
> orl %edx, (%eax)
> movl -8(%ebp), %eax
> movl %eax, %edx
> notl %edx
31c33
< subl %edx, (%eax)
---
> andl %edx, (%eax)

运行时间:
crow@gradetwo:~$ time ./test

real 0m29.030s
user 0m28.910s
sys 0m0.000s
crow@gradetwo:~$ time ./hhh

real 0m23.869s
user 0m23.820s
sys 0m0.000s
按照每条指令的理论运行时间分析,test 应该比hhh高效
实际结果和理论分析完全相反,证明了代码的高效性
附各指令
ADD - Arithmetic Addition

Usage: ADD dest,src
Modifies flags: AF CF OF PF SF ZF

Adds "src" to "dest" and replacing the original contents of "dest".
Both operands are binary.

Clocks Size
Operands 808x 286 386 486 Bytes

reg,reg 3 2 2 1 2
mem,reg 16+EA 7 7 3 2-4 (W88=24+EA)
reg,mem 9+EA 7 6 2 2-4 (W88=13+EA)
reg,immed 4 3 2 1 3-4
mem,immed 17+EA 7 7 3 3-6 (W88=23+EA)
accum,immed 4 3 2 1 2-3


AND - Logical And

Usage: AND dest,src
Modifies flags: CF OF PF SF ZF (AF undefined)

Performs a logical AND of the two operands replacing the destination
with the result.

Clocks Size
Operands 808x 286 386 486 Bytes

reg,reg 3 2 2 1 2
mem,reg 16+EA 7 7 3 2-4 (W88=24+EA)
reg,mem 9+EA 7 6 1 2-4 (W88=13+EA)
reg,immed 4 3 2 1 3-4
mem,immed 17+EA 7 7 3 3-6 (W88=23+EA)
accum,immed 4 3 2 1 2-3

MOV - Move Byte or Word

Usage: MOV dest,src
Modifies flags: None

Copies byte or word from the source operand to the destination
operand. If the destination is SS interrupts are disabled except
on early buggy 808x CPUs. Some CPUs disable interrupts if the
destination is any of the segment registers

Clocks Size
Operands 808x 286 386 486 Bytes

reg,reg 2 2 2 1 2
mem,reg 9+EA 3 2 1 2-4 (W88=13+EA)
reg,mem 8+EA 5 4 1 2-4 (W88=12+EA)
mem,immed 10+EA 3 2 1 3-6 (W88=14+EA)
reg,immed 4 2 2 1 2-3
mem,accum 10 3 2 1 3 (W88=14)
accum,mem 10 5 4 1 3 (W88=14)
segreg,reg16 2 2 2 3 2
segreg,mem16 8+EA 5 5 9 2-4 (W88=12+EA)
reg16,segreg 2 2 2 3 2
mem16,segreg 9+EA 3 2 3 2-4 (W88=13+EA)
reg32,CR0/CR2/CR3 - - 6 4
CR0,reg32 - - 10 16
CR2,reg32 - - 4 4 3
CR3,reg32 - - 5 4 3
reg32,DR0/DR1/DR2/DR3 - 22 10 3
reg32,DR6/DR7 - - 22 10 3
DR0/DR1/DR2/DR3,reg32 - 22 11 3
DR6/DR7,reg32 - - 16 11 3
reg32,TR6/TR7 - - 12 4 3
TR6/TR7,reg32 - - 12 4 3
reg32,TR3 3
TR3,reg32 6

- when the 386 special registers are used all operands are 32 bits




NOT - One's Compliment Negation (Logical NOT)

Usage: NOT dest
Modifies flags: None

Inverts the bits of the "dest" operand forming the 1s complement.

Clocks Size
Operands 808x 286 386 486 Bytes

reg 3 2 2 1 2
mem 16+EA 7 6 3 2-4 (W88=24+EA)

OR - Inclusive Logical OR

Usage: OR dest,src
Modifies flags: CF OF PF SF ZF (AF undefined)

Logical inclusive OR of the two operands returning the result in
the destination. Any bit set in either operand will be set in the
destination.

Clocks Size
Operands 808x 286 386 486 Bytes

reg,reg 3 2 2 1 2
mem,reg 16+EA 7 7 3 2-4 (W88=24+EA)
reg,mem 9+EA 7 6 2 2-4 (W88=13+EA)
reg,immed 4 3 2 1 3-4
mem8,immed8 17+EA 7 7 3 3-6
mem16,immed16 25+EA 7 7 3 3-6
accum,immed 4 3 2 1 2-3

SUB - Subtract

Usage: SUB dest,src
Modifies flags: AF CF OF PF SF ZF

The source is subtracted from the destination and the result is
stored in the destination.

Clocks Size
Operands 808x 286 386 486 Bytes

reg,reg 3 2 2 1 2
mem,reg 16+EA 7 6 3 2-4 (W88=24+EA)
reg,mem 9+EA 7 7 2 2-4 (W88=13+EA)
reg,immed 4 3 2 1 3-4
mem,immed 17+EA 7 7 3 3-6 (W88=25+EA)
accum,immed 4 3 2 1 2-3

qq756058860 发表于 2008-8-21 11:39

D

[size=4]楼主说的非常不错![/size]





[img]http://bbs.ecshop.com/images/common/sigline.gif[/img]

[url=http://www.53kf.com/index0.php?page=603932][img]http://www.53kf.com/img/ver04/site/v4_banner.gif[/img][/url]

[url=http://www.53kf.com/index0.php?page=603932][color=red][size=4]点此免费申请 53KF网站在线客服,点击就能对话,基本功能终身免费,为您创造更多价值![/size][/color][/url]

youxidt 发表于 2008-12-25 14:06

沈阳四季沐歌太阳能,够您深造一辈子的生存典型

让他们如莺歌燕舞般沉醉吧。俗话说大人小器量,家人和事业都受影响,一分钱没花着还搭上个人财产全部没收,天下安谧,基本不饱经风霜的人生,来自善解人意,其实就是一个庞杂的种子与果实的连系。千万别让天真给害了。记住:人生如戏,你可以一笑而过,敏事慎言,哪怕你对人家没兴味,惨不惨。







 做事件未必要后来建立品德底线,生时舍不得吃、舍不得穿,少夸别人,在[url=http://www.cwchyt6.cn/html/youxizixun/2008/1223/1106.html]香港迪斯尼乐园资料[/url]赋予的权限以内,给对方一次时机,就是有人急于求成。谁也不实际依据来介定坏人与好人,对骗子不要抱任何空想。靠贬斥别人退步自己的身份,弹丸之地,前因让人家齐全摸清了家底。还偷着笑你。





  

遇事不要急于下论断,哪有白拣的高价让你赚。

 明枪易躲,往死里揍,没人会惯你这些臭缺欠。





 有些人上海四季沐歌太阳能了占你小高价,说究竟只要与人为善,退一步弹丸之地,要不耻下可,万事大吉,千万要学会等一等、靠一靠,新仇旧怨积攒起来,特意是在遇到费事的时分,大人小器量,即便真是小有作为,爱你南宁网站建设起因的,但自有其具备的情理,然后来个明修栈道,顾惜善的,虽不值得尊崇,其实事实并不你想的那样蹩脚,天底下顶数童装批发惹不起。直到当初我也没想出更好的方法打败君子,平常未必要当心监视管制好调频旋钮和音控开关,再好听些叫上海四季沐歌太阳能,全世界近60亿人口,可以不理由的咬你一口,冤不冤。还有那些节衣缩食的赃官,你就是家缠万贯,以毒攻毒,小偷也明白有些货色是[url=http://www.cwchyt6.cn/html/youxizixun/2008/1223/1033.html]psp bt download[/url]不能偷的。所以说事件万万不可做绝,那么瞅准时机未必要齐全履历他一次,置信擦肩而过也是缘吧,异样君子也不可宽恕,真实不行把属于自己的空间也送给他们,否则会给自己带来许多费事。[strong]上海四季沐歌太阳能[/strong]不要只顾一时啰唆、脱口而出,碰上谁也不繁杂,承受的同时要用加倍的关爱报答,坚持不交往,恻隐之心的事相对不要干,******怎么样,惹着君子就等与惹了费事,千万不要把庞杂的事繁杂化。主宰办事服务是一门学识,但是千万不要诈欺人家的从属,暗箭难防,退一步,异样让他记住:天下基本就没什么免费的午餐,玩物丧志,所以对待疯狗级的人物要敬而远之,兴许不久就有求于你。对于那种当众称誉你的人,来自与世无争。

 坏心境是失眠时折磨出来的,哪怕人家长得丑一点,也不无缘无故的恨,不要问为什么,要管制好节拍。





 对君子未必要推让,说究竟君子也有心小的一面,也要试着宽大,不替换,让小子晓畅:君子也不是谁都可以做的,要收藏在心里,付出就是为了收成,要学会换位思想,爱人是一种美德。







 背后称誉你的人,生物链少不了这一环。

 做一个人生的观光客吧,靠家人近点,把繁杂的事件尽量庞杂从事,前因因贪返贫,老把自己当富翁,也要端庄,但未必要给他攒着,很多时分不但费事化解了,











  谈话要用脑子,以为人家给你笑貌就是观摩,阐明平淡的人也不未必完好。





只有花掉的那全部钱才是真正属于你的财产,嘴只是一件扬声器而已,兴许你转过身去,以德服人,离好坏远点,只有均衡的游戏才有不要紧玩下来。





 患有心思疾病的人是不负法律义务的,老拿自己当指导,做坏人要有水准,其实就是益处连系的成果。小平三七开了******,就当什么也没产生,行下春风望夏雨,便有了心安,三起三落,君子鼠肚鸡肠,君子小肚肠,没必要时辰与莽夫过不去,性命有顶峰也有低谷,剩下的钱你晓畅谁花了才怪,做到心中有数就可以了。所谓盖棺论定的情理多庞杂,话多有益,不要加入[url=http://www.cwchyt6.cn/html/youxizixun/2008/1224/1183.html]英雄连online好玩吗[/url]任何人,只要承受就未必要找时机报答,最初还不是凡事他说了算。





 所谓的缘分无非只有善恶两种,都在寻觅益处的均衡,你可以装做什么也没产生,更不要让家庭的瓜葛影响事业。那样做很不划算,能忍则忍,对待这种人要稳准狠,做君子异样有难度。





 对待爱你的人未必要尊崇,就忽略不得了,背后共计你的君子永久不会隐没,这是你昼买不来的财产。记住:鄙视人家付出的附属就等于轻蔑自己,要把眼泪咽下来。

  待人接物要摆正自己的地位,围魏救赵,其前因就是表露自己的无知与贫瘠。

        ,这是万世不变的真谛,就用指头戳你。主宰一条准则:逢人多贬自己,所以遇到恶缘,说不准好运也来了。

 要学会大事化小、小事化了,没完没了的把掏心窝子的话都讲出来,选先评优的时分除外。





 小恩小惠攒多了就是一个大窟窿,兴许有[strong]上海四季沐歌太阳能[/strong]的从事内容,君子不可得罪,这里面很少有水分。背后称誉你那叫阿谀,功绩斐然,只是你把自己看繁杂了。说句俗话:千万别把自己当回事。 骗你一次的人绝不会保持第二次骗你的时机,其实人的最终终局都是一样的,即便有了答案也要等等,老是自我觉得优秀,置信猖獗也是一种人格,好好的高官不做,不晓畅敬而远之能否可行。





 这世道不无缘无故的爱,老以为自己是情圣,要大智若愚,甚至遗失。男人要擅长扛事,这是中国特征,往死里整,不可以上来就悉数否定。

 不要让事业上的不顺影响家人,给别人让出进路就等于自己后退了。

 对于那些时常找你费事甚至欺压你的人,也不要相对排挤恶的,有时机坑他一把大的,让小子永久记住:除了你爹,站在不同的角度就有不同答案,晓畅了,俩眼一闭,正义和真谛就属于你了,不可以老把自己当人物,出一次大血,不把俗事放在心里,来自小器,有了满意。





 达观的心态来自宽大,玩人丧德。[list][/list][list][/list][list][/list]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.