-
2004-07-22
老美口头禅,很有用哦! (1) - [English]
1、为什么当老美说,"You bet." 的时候,就代表你说的一点也没错的意思呢?因为 bet 是下赌注的意思,所以 "You bet." 就是指,"You can bet money on that." (你可以把钱下注在上面),言下之意,就是说这件事百分之百正确。例如别人问你,"Is this is the way to High Tower Museum?" (这是往 High Tower 博物馆的路吗?) 你就可以回答说,"You bet." (一点也没错)
有时候为了加强语气,连小屁屁 (ass) 都可以拿来当赌注喔!用来表示这件事是百分之两百地正确。例如电视影集 "Friends" 里面,Monica 有一次就说了一句让我至今都印象深刻的话,"You bet your ass I’m going to fire you." (你完完全全正确,我非把你开除不可。) 当然如果不是在跟人家吵架时我们最好还是不要拿小屁屁来当赌注吧!
2. There you go.
就这样了。
"There you go." 是老美希望结束一段对话时,很自然会脱口而出的一句话,特别是在完成某项交易的时候。像是你去买一样东西,当你付完钱之后店员会说,"There you go." 或 "That’s it." 就表示交易已经完成,你可以滚了。 另外像是电台的点歌节目 DJ 在播放音乐之前都会说,"There you go." 表示你要的音乐我找到了,现在要开始播放你所点的歌曲了。
有时候你提醒别人讲话别讲太久也是用 "There you go." 例如有一次班上同学交报告给教授,结果教授还跟他讲东讲西的,那老美也不客气,就说,"Well, I just came by to give you my report, so, there you go!" 这时教授就知道他不想再讲下去了,如果再讲下去自己就太不识相了。
"There you go." 也常常用来鼓励别人有好的表现,例如你的小宝宝开始会说话了,(先假设他听得懂英文好了) 你就可以说,"There you go." 来鼓励他,或是常在球场上听到教练对表现不错的球员大叫,"There you go."
3. Here you go.
干的好。
"Here you go." 和 "There you go." 听起来只有一字之差,所以很多人都会乱用,这二者倒底有什么区别呢?仔细来分,"Here you go." 指的是一件事情还在进行之中,而 "There you go." 则是事情已经结束,例如店员正把你买的东西交付给你,他会说,"Here you go." 而不是 "There you go." 反之,如果东西己经到了你手上,则他会说的是,"There you go."
此外,"Here you go." 和 "There you go." 一样,也有鼓励别人的意思在里面,像我本身蛮喜欢跟老美打棒球的,每次有人大棒一挥,老美就会兴奋地大叫 "Here you go." 问题是他们为什么不说,"There you go." 呢? 因为球在飞行当中算是一个过程,你还不知道结果,所以要用,"Here you go." 会比较正确,而事实上老美也正是这样子用的喔。当然这里各位不必太细究 "There you go." 和 "Here you go." 的区别,小笨霖这里所说的只是一个大原则,至于在日常生活的交谈中,想到哪一个就说哪一个吧。反正老美都听得懂。
4. Oh! My God!
喔!我的老天!
老美在惊讶时很喜欢说,"Oh! My godness!" 或是 "Oh! My God!",相信这二句话各位都不陌生,不过这都是跟宗教信仰有点关系的,如果你是无神论者,你可以学另一句,"Oh! My!" 或是加强的用法,"Oh! My! My!",都是非常惊讶的意思。记得有一次参加一个老美的聚会,有一对男女朋友在斗嘴,那个男生说了一句话,"You should go back to kitchen where you belong" (你应该回到属于妳的厨房里去) 结果那女生二话不说,甩头摔了门就走,留下一脸错愕的男朋友,他说了,"Oh! My! Did she slam the door?" (我的老天,她有摔门吗?)
5. Oh! Boy!
天啊!
这句话是不是对男生说的呢?其实不是,你不论跟男生或女生都可以说,"Oh! Boy!" 甚至你自己自言自语的时候也可以说,"Oh! Boy!" 例如你一出门,却发现钥匙忘在里面,这时候你最想说的话就是,"Oh! Boy!" (天啊!) 我在想一定会有人问我,那有没有,"Oh! Girl!" 答案是没有的,老美只会说,"Oh! Boy!" 或是 "Oh! Man!" 大家可不要自己发明一些新词啊。
如果妳是女生的话,妳还有一个小小的特权,妳可以说,"Oh! Dear!" 但是像小笨霖这种臭男生可就不能说,"Oh! Dear!" 不然会粉好笑的。
6. Holy cow!
不会吧!(哇赛)! 介绍完 Oh 系列之后现在要来介绍 Holy 系列的,通常最常听到的 Holy 系列有 "Holy cow!" (圣牛) 和 "Holy shit!" (圣便便) 二个,当然后者是蛮不雅的,我们尽可能不要用它。这二者同样都是表示出十分惊讶,相当于中文口语里「不会吧!」 的味道。例如要是我看到我的好友搂着一个泳装美女照像,我一定会跟他说,"Holy cow!" (不会吧!)
另外还有一个比较少见的用法,"Holy mackerel!" (圣青花鱼!) 也有人会用,但如果你突然跑来跟我说 "Holy mackerel!"我肯定会听不懂就是了。
7. Kind of.
是有那么一点,(还好啦!)
Kind of 和 Sort of 是用来表示有那么一点点,但不是很强烈。例如别人问,"Do you like noodles?" (你喜欢面食吗?) 你如果还有那么一点点喜欢的话,就可以答,"Kind of." 或是,"Sort of." (还好啦!)
有时候跟老美 QQ 乐(ICQ),会看到 kinda 和 sorta 这两个怪字,其实诸位不用急着去查字 -
1.What the *** is going on?(到底他母亲的怎么回事?)
通常此话出于黑人之口,且口气最宜为疑惑,不解,愤怒等等。
若是白人则多数时候会说-What the hell is going on?
意义相同而适用于更多场合。
说此话之人身份通常为上级,且相处较久。
不过如果你出差回家时看见老婆身边躺着个赤条条的陌生人,那它可就派上大用场了!
2.You son of bit ch! (你个狗母亲养的!)
令人意外的是,最爱说这句话的往往是女性。
越高贵,越端庄的女性越容易在压力达到一定值时便会脱口而出。
万万不要和有文化的MM顶嘴,否则被骂了还以为受表扬了呢!
3.All rise! (全体起立!)
国产英语老师最误人子弟的就是口语太差,爱说想当然口语。
从小学到高中英语课代表一直喊的是-Stand up!
当然没什么不可以,但为什么不说标准的话呢?就象我们朗读中文时说普通话一样!
4.It’s bullshit! (胡说八道!屁话!)
这句话一旦学会,包你用的乐不思蜀。
用途太广泛啦!
最绝是和老妈抬杠时搬出来,用你的眼睛直视她,以忏悔的口气恕秭。
什么?你老妈是外交官?
就当我没说过!不过……
你妈贵姓?
5.Da mn it!(可恶!)
此句往往从某个孤胆英雄的嘴中冒出,发音要轻,然口气要重!
此英雄往往正面临生死抉择,例如是先剪蓝线还是先剪红线等。
说时要有壮士一去不复返的气势!
此句适合用在被MM拒绝时,向MM的背影恕秭!
万万不可忘记要配合以右手中指的朝天一刺!
6.It`s none of your business!(关你屁事!)
此句已接近经典!
当你在网上浏览不健康网站遭到网吧老板的劝阻时,
它往往能建下奇功!
7.Come on!
此句因拥有太多含义,所以注释欠奉。
但它确实非常necessary!
所有的鬼佬一天不说个十七八遍就会浑身发痒。
它的经典之处你就好好体会吧!
8.Ditto! (俺也是!)
本不是常用语,不过看过"幽灵"一片的人都染上了男主角的坏习惯。
从来不说I love you!
总是"俺也是,俺也是!"的把MM们气得口吐白沫!
实际上你也可以说"Me too!"或"Me also!",不过总是不够文艺腔!
差了那么一点点味道和情调。
9.How can I forget such a beautiful girl/sexy boy?
此句在重逢某个你早已心仪的MM或GG是不妨拿来用用!
当对方还沉浸在陶醉中时,
你可以利用这段时间好好想想对方的名字!
10.I had no choice!(俺也是被逼无奈啊!)
最常用此话的要数那些被男主角逼到悬崖边上的家伙们
怎样记住这10句话?请看情景对话:
B:How can I forget such a beautiful girl? I love you!
A: Ditto!
(woman and man do something)
A&B:Come on! Come on!
(the door open)
A&B:Da mn it!
C(shouting):What the fuc k is going on?
B.It’s none of your business!
C:You son of bi tch! All rise!
B.I had no choice!
C.It`s bullshit!
(Two men beating)
-
1. you look great today.(你今天看上去很棒。)【每天都可以用!】
2. you did a good job. (你干得非常好。)【国际最通用的表扬!】
3. we’re so proud of you.(我们十分为你骄傲。)【最高级的表扬!】
4. i’m very pleased with your work.(我对你的工作非常满意。)【正式、真诚的赞扬!】
5. this is really a nice place.(这真是个好地方!)【随口就说、但效果很好的表扬!】
6. you’re looking sharp!(你看上去真精神/真棒/真漂亮。)【与众不同的表扬!】
7. you always know the right thing to say. = 8. you’re very eloquent.(你总是说话得体。)【高层次的表扬!】
9. nice going! = you did a good job.(干得好!)【极其地道的表扬!】
10. the food is delicious.(好吃!)【最普通、但非常重要的表扬!】
11. everything tastes great.(每样东西都很美味!)
12. your son/daughter is so cute.(你的孩子很可爱。)【外国人绝对喜欢听的表扬!】 13. what an adorable baby!(多么可爱的孩子。)【只管大胆用!】
14. i admire your work. = 15. i respect your work.(我对你的工作表示敬意。)【世界通用!】
16. you’ve got a great personality.(你的个性很好。)【一个非常安全的表扬!】
17. you have a good sense of humor.(你真幽默。)【美国人极其喜欢的表扬!】
18. your chinese is really surprising.(你的中文令人惊讶。)【绝对和其他人不一样的表扬!】
19. your english is incredible.(我真不敢相信你的英语。)【用了六星级形容词!】 20. you have a very successful business.(你的事业很成功。)【现代人非常喜欢听!】
21. you’re very professional.(你非常专业。)【专业化的表扬!】
22. your company is very impressive.(你的公司给我留下深刻印象。)
23. you’re so smart.(你非常聪明。)
24. i envy you very much.(我非常羡慕你。)
25. your wife is very charming.(你的妻子很有魅力!)
26. you two make a lovely couple.(你们真是天生的一对!)
27. you’re really talented.(你很有天赋。)
28. you look nice in that color.(你穿那种颜色很好看。)
29. you have a good taste.(你很有品位。)
30. you look like a million dollars. = you look outstanding.=you look like a movie star.(你看上去帅呆了。)
-
2004-07-22
Tongue Twister(绕口令) - [English]
Develop Your Tongue
〔1〕A writer named Wright was instructing his little son how to write Wright right. He said:" It is not right to write Wright as ’rite’-try to write Wright aright!
(一个名叫赖特的作家正在指导他年幼的儿子怎样把赖特写对。他说:“把赖特写成‘仪式’是不对的-要把赖特写正确!”)
〔2〕Ann sent Andy ten hens and Andy sent Ann ten pens.
(安给安迪送了10只母鸡,安迪给安送了10支钢笔。)
〔3〕Canners can can what they can can but can not can things can’t be canned.
(罐头工人能够把他们能做成罐头的东西制成罐头,但是不能把无法制成罐头的东西制成罐头。)
〔4〕Good cookies could be cooked by a good cook if a good cook could cook good cookies.
(如果一位好的厨师能做出美味小甜品的话,那么好吃的小甜品是能够由这位厨师制作出来的。)
〔5〕Jenny and Jimmy went to Jamaica and Germany in January, but Joan and John went to Jordan and Japan in June and July.
(詹妮和吉米一月去了牙买加和德国,而琼和约翰在六、七月去了约旦和日本。)
〔6〕A cricket critically cricked at a critical cricket match, and so this cricket quitted the cricket match quickly.
(一只蟋蟀在一场关键性斗蟋比赛中发生严重的痉挛,于是这只蟋蟀很快退出了比赛。)
〔7〕Bill’s big brother is building a beautiful building between two big brick blocks
(比尔的哥哥正在两座大砖房之间建造一座漂亮的房子。)
〔8〕There are thirty thousand feathers on that thrush’s throat.
(那只画眉鸟的颈前就长着三万根羽毛。)
〔9〕A flea and a fly were trapped in a flue, and they tried to flee for their life. The flea said to the fly "let’’s flee!" and the fly said to the flea"Let’s fly!.Finally both the flea and fly managed to flee through a flaw in the flue.
(一只跳蚤和一只苍蝇被诱进了一根管子里,它们努力逃命。跳蚤对苍蝇说:“让我们逃吧!”苍蝇对跳蚤说:“让咱们飞吧!”最后,两个都设法通过那管子的一个裂隙逃走了。)
〔10〕Peter Piper picked a peck of picket prepared by his parents and put them in a big paper plate.
(彼得·派博把他伯父母腌制的泡菜辣椒取出许多,并且将它们放在一个大纸盘里。)
-
中国家庭并不常用电话答录机(Answering Machine),但在北美家庭,几乎家家都用。外来电话拨入时,若该电话号码的主人不在,就会让拨入者听到一段留言,这叫Answer。绝大多数的Answer都是千篇一律的:说明主人不在,请拨入者留下简短信息及姓名电话号码等。
以下几则特别的 Answer 体现了美国佬的幽默,你能体会出其幽默所在吗?
My wife and I can‘t come to the phone right now, but if you‘ll leave your name and number, we‘ll get back to you as soon as we‘re finished.
Hi. This is John. If you are the phone company, I already sent the money. If you are my parents, please send money. If you are my financial aid institution, you didn‘t lend me enough money. If you are my friends, you owe me money. If you are a female, don‘t worry, I have plenty of money.
Hi, I‘m not home right now but my answering machine is, so you can talk to it instead. Wait for the beep.
Hi! John‘s answering machine is broken. This is his refrigerator. Please speak very slowly, and I‘ll stick your message to myself with one of these magnets.*(见注)
Hello, this is Sally‘s microwave. Her answering machine just eloped with her tape deck, so I‘m stuck with taking her calls. Say, if you want anything cooked while you leave your message, just hold it up to the phone.
Hello, you are talking to a machine. I am capable of receiving messages. My owners do not need siding, windows, or a hot tub, and their carpets are clean. They give to charity through their office and do not need their picture taken. If you‘re still with me, leave your name and number and they will get back to you.
Hi. I am probably home. I‘m just avoiding someone I don‘t like. Leave me a message, and if I don‘t call back, it‘s you.
This is not an answering machine -- this is a telepathic thought- recording device. After the tone, think about your name, your reason for calling and a number where I can reach you, and I‘ll think about returning your call.
Hi, this is George. I‘m sorry I can‘t answer the phone right now. Leave a message, and then wait by your phone until I call you back.
If you are a burglar, then we‘re probably at home cleaning our weapons right now and can‘t come to the phone. Otherwise, we probably aren‘t home and it‘s safe to leave us a message.
You‘re growing tired. Your eyelids are getting heavy. You feel very sleepy now. You are gradually losing your willpower and your ability to resist suggestions. When you hear the tone you will feel helplessly compelled to leave your name, number, and a message.
Please leave a message. However, you have the right to remain silent. Everything you say will be recorded and will be used by us.
Hello, you‘ve reached Jim and Sonya. We can‘t pick up the phone right now, because we‘re doing something we really enjoy. Sonya likes doing it up and down, and I like doing it left to right ... real slowly. So leave a message, and when we‘re done brushing our teeth, we‘ll get back to you.
注释:
beep:主人的Answer讲完以后,Answer Machine会发出一声beep, 这时候来电话者就可以开始留言了。
magnet:磁铁
*注:通常情况下,来电话者面对录音讲话都不太自然,所以语言往往很急促,三句两句话就完了。这可苦坏了接听留言的主人,听多少遍都听不清留言者到底是谁,讲了些什么。对于母语非英文的人,这种感觉会更深。所以,以下这两段幽默干脆就首先告诉电话拨入者,我的Answer Machine不好使,你且慢慢来。
elope:私奔
tub:浴盆
charity :慈善团体
telepathic:心灵感应术
tone:与昨天对 beep 的注释含义完全一样,主人的Answer讲完以后,Answer Machine会发出一声beep, 这时候来电话者就可以开始留言了。
burglar:夜贼
eyelids:眼皮
willpower :毅力
feel helplessly compelled to:感到无助而被迫做某事
you have the right to remain silent:电影电视里警察出示逮捕令时常讲的一句话。西方社会讲究人权,任何疑犯在未审判之前不得认为有罪,因而不能逼供、更不可拷打:他们有权保持沉默。
-
1. Good to the last drop. 滴滴香浓,意犹未尽。(麦斯威尔咖啡)
2. Obey your thirst. 服从你的渴望。(雪碧)
3. The new digital era. 数码新时代。(索尼影碟机)
4. We lead. others copy. 我们领先,他人仿效。(理光复印机)
5. Impossible made possible. 使不可能变为可能。(佳能打印机)
6. Take time to indulge. 尽情享受吧!(雀巢冰激凌)
7. The relentless pursuit of perfection. 不懈追求完美。 (凌志轿车)
8. Poetry in motion, dancing close to me. 动态的诗,向我舞近。(丰田汽车)
9. Come to where the flavour is. marlboro country.光临风韵之境——万宝路世界。(万宝路香烟)
10.To me, the past is black and white, but the future is always color.
....对我而言,过去平淡无奇;而未来,却一直是彩色的(轩尼诗酒)
11. Just do it. 只管去做。(耐克运动鞋)
12. Ask for more. 渴望无限。(百事流行鞋)
13. The taste is great. 味道好极了。(雀巢咖啡)
14. Feel the new space. 感受新境界。(三星电子)
15. Iintelligence everywhere. 智慧演绎,无处不在。(摩托罗拉手机)
16. The choice of a new generation. 新一代的选择。(百事可乐)
17. We integrate, you communicate. 我们集大成,您超越自我。(三菱电工)
18. Take Toshiba, take the world. 拥有东芝,拥有世界。(东芝电子)
19. Let’s make things better. 让我们做得更好。(飞利浦电子)
20. no business too small, no problem too big.
....没有不做的小生意,没有解决不了的大问题。 (ibm公司)
--------------------------------------------------------------------------------
广告用语 WORDS AND PHRASES IN ADVERTISEMENT
包君健康 keep you fit all the time
包装新颖美观 fashionable and attractive packages
保证质量 quality and quantity assured
产销历史悠久 have a long history in production and marketing
驰名中外 popular both at home and abroad
穿着舒适轻便 comfortable and easy to wear
工艺精良 sophisticated technologies
规格齐全
a complete range of specifications; complete in specifications
赶超世界先进水平 catch up with and surpass advanced world level
花色繁多 a wide selection of colours and designs
花色新颖品种多样 fashionable styles, rich varieties
货源充足 sufficient supplies; ample supply
久负盛名 with a long standing reputation
交货及时 timely delivery guaranteed
价格公道 reasonable price
技艺精湛 fine craftsmanship
经济耐用 economy and durability
具有中国风味 possess Chinese flavours
居同类产品之首 rank first among similar products
品质优良 excellent in quality
品种齐全 complete range of articles
款式多样 various styles
-
2004-07-22
英语“钱”的表达方法知多少 - [English]
初学英语的人,常用expense来表示一切“费用”。其实expense主要是“花费”、“开支”之意,如current expenses“日常开支”,selling expenses“销售费用”,travelling expenses“旅费”等等。在现实生活中,各种“费用”有各种不同的表达法:
一、admission (n.)指入场费。
如:admission by ticket only凭票入场
二、charge (n.)“原价、要价”。
常用复数,主要用于一次性劳务所收取的费用,如服务费、行李超重费、旅馆费等等。
如:What are the charges in the hotel?
这家旅馆收费多少?
三、cost (n.)本义为“成本”、“原价”。
常常用来表示对已取得的货物或劳务所支付的费用。
如:The cost of seeing a movie is seven dollars.看一场电影要花七美元。
四、fare (n.)指旅客乘公共汽车、出租车、火车、\\*\\*\\*\\*船、飞机等所支付的费用。
如:All fares, please.
(公共汽车售票员用语)请买票。
五、fee (n.)医生、律师或其它专门职业的佣金及会费、手续费、停车费等。
如:My lawyer’s hourly fee is 130 dollars.
我的律师的佣金是每小时130美元。
六、freight (n.)运费,指海运、空运、陆运的费用。
如:Who will pay the freight on this order?
谁支付这批定货的运费?
七、postage (n.)指邮费。
如:How much postage do I need to send this package?寄这个包裹须付多少钱?
八、rent (n. )土地、建筑物、房舍、机器等定期的租费。
如:The student owed three months’rent for my house.那学生欠我三个月的房租。
九、tip (n.)小费。
如:I gave my barber a fat tip.
我给理发师优厚的小费。
十、toll (n.)道路、桥梁、港口、市场的捐税、通行费及电话费等。
如:This month I had to pay 200 yuan toll call.这个月我要缴200元的电话费。
十一、tuition (n.)学费。
如:John took out a loan to pay his tuition.
约翰贷款交付学费。
-
2004-07-22
学习英语口语的六大技巧 - [English]
很多人有个误解,认为只要托福、GRE考好了就行了。其实不是这么回事。当你的飞机降落在美国那块土地上的时候,你有没有机会在美国生存、发展下去,关键是要看你有没有机会去表达自己,和别人交流。如果你学的是哑巴英语,到了美国你将暗无天日。而我们目前的大学英语的教育是有缺陷的。现存的各个大学的英语角就我个人认为,也是有问题的,虽然大家都很有热情,往往谈到半夜12点。由于大家都是同胞,彼此能相互理解各自的中国英语,你点头,我也点头。但一碰到一个native american(地道的美国人) 时,交流同样的东西,就听不懂对方在说什么了。其实我们学一种语言,最重要的就是利用这种语言的某些部分来进行交流。communication is our purpose(交流是目的),而不是语言本身。
我们的英语教育就是恨不得把语言的大海完全笼罩在自己的怀抱里。其实知识是无涯的。我们往往把英语仅仅当作一门知识在学,从小学到大学,到最后,还是不会说英语。为什么我们花了十几年、二十年的时间学了一大堆我们在实际生活中根本永不上的东西。我们究竟应该用什么方法能使我们在最短的时间内掌握英语的交流呢?语言的交流与掌握大量的词汇、句型、语法是两回事。举两个例子:有一次,有一个中国学生陪一个美国人去长城,在长城上,老外突然对哪个学生说:excuse me,may I go someway(请问洗手间在哪儿).中国学生在学校里英语的句法学得相当不错,听力也挺棒的,马上听明白了老外的话,心想,长城都来了,哪儿不能去啊!于是说:yes ,you can go anyway(请随意)(笑声) 。这一句话,差点把老外吓晕了。其实在这个特定的语言环境中,老外的“someway”指的是厕所,而英语“娴熟”的中国学生却让老外随地大小便(全场哄堂大笑)。另一个例子:在大学校园里,流行“五讲、四美、三热爱”,中国人把其翻译成:“five talks ,four beauty ,three lovers”.美国人一听迷惑了“five talks”敢情是谈了五个,“four beauty”敢情是谈了五个,其中有四个是美人,那么“three lovers”一定是爱上了四个美人中的三个(笑声不断)。
其实,就语言本身的知识来说,我们已经过关了,而且我们所学的英语知识全是标准的英语。我们缺少的就是在交流中来运用英语,只有在交流中我们才能与对方进行思维密码的相互破译。同样的话在不同的语言交流环境中所表达的意思是不一样的。要想真正领悟对方的意思,必须与对方进行心与心的交流。作为一个中国学生,如果不根本改变自己的思维结构,从而迎合美国人的思维结构和习惯,依然保持自己中国式的思维习惯,那么他学的英语就毫无价值。那么我们该怎么办呢?我建议要把我们学习的目标收缩,把追求大而广的英语知识转化为追求一种定量性的技巧,我认为有六种技巧,是美国人和美国人之间交流的关键性东西,如果我们能掌握这六种技巧,就可以更好地理解美国人的思维,从而学好口语。
第一,如何用英文简单界定一个东西的技巧。
美国人和美国人交谈80%是想告诉对方what is a book 。我们中国人从小学到大学的课本尽管词汇难度不断加深,但思维逻辑结构却只停留在一个水平上。中国人常说Where is the book?很少有人说What is a book?而美国的小学生就开始问:What is the book?这种Where is the book?只是描述阶段,连哑巴也能做到。但是我想连大学生也很难回答What is a book?因为中国传统英语教学模式没有教会学生表达思想的技巧。
第二,如果已经学会界定,但理解还有偏差,那就要训练how to explain things in different ways.
一种表达方式对方不懂,美国人会寻找另一种表达方式最终让对方明白。因为事物就一个,但表达它的语言符号可能会很多。比如水,世界上就这一个事物,但却有多种符号来表达它。如果一个人懂8种语言,那他在世界上被别人理解的机会就会大得多。用汉语说"水"别人不懂,用德语说别人也不懂,但用英语说water,别人可能就懂了。这就要多做替换练习。传统的教学方法也做替换练习,但这种替换不是真替换,只是语言层面的替换,而不是思维层面的替换。比如,I love you,按中国的替换方法就把you换成her,my mother,them等,这种替换和小学生练描红没有什么区别。这种替换没有对智力构成挑战,没有启动思维。换到最后也不知道到底在love 谁,现实生活中也不能这么随便love(笑声)。这种替换句子的基本结构没变,我听不懂I love you,肯定也听不懂I love her。如果替换为I want to kiss you.I want to hug you.I’ve a crush on you.I will show my heart to you等,或者给对方讲电影《泰坦尼克》,告诉对方that is love,这样一来对方可能就明白了。这才叫真正的替换。
也就是说用一种不同的方式表达同一个意思,或者对方听不清楚,举一个简单易懂的例子来表达,直到对方明白。
对,比如爱因斯坦讲相对论,他用科学术语讲,除了科学家之外是没人听得懂的,所以爱因斯坦就用一个通俗的例子把相对论讲了出来。他说,什么叫相对论呢?两个lovers在一起,一小时相当于一分钟,而两个仇人呆在一起,一分 -
2004-07-21
网页漫画下载工具PicGet1.0 - [Programming]
=============================================================
软件名称: PicGet1.0
中文名称: 网页图片抓取器
作者:Lyo Wu
电邮:lyowu@163.com
=============================================================
一、设计目的:
为方便同学下载网页上的连载漫画,批量下载网站上的漫画图片。
二、实现功能:
批量下载网页上的图片,网页地址匹配,图片地址关键字搜索。
非常适合漫画爱好者下载网站上的漫画图片。
三、安装说明:
1、确认系统已安装MSXML2.6以上的组件;
2、确认系统已安装MS Scripting Runtime,以及1.0以上版本的MS VBScript Regular Expressions;
3、有的系统需要注册MSCOMCT2.OCX,注册方法:Dos命令 regsvr32 [MSCOMCT2.OCX所在路径];
4、直接运行,无须安装。
点击此处下载PicGet1.0
软件界面
-
2004-05-18
“Linux”的正确读法 - [Linux]
这是Linus Torvalds的原声,“Linux”的正确发音![face10]
点击此处下载 -
2004-05-17
Windows2003 Server 设置大全 - [Windows]
一、windows server 2003 3790版本识别
RTM=release to manufacture (公开发行批量生产)是给硬件制造商的版本!是送去压盘的,不是拿去卖的。
OEM=Original Equipment Manufacturer只能全新安装, 和RTM差不多,只是称呼不同而已。
RTL=retail(零售)正式零售版,可以升级或者全新安装。
VLK=Volume License大量授权版,又称为企业版。无需激活。(网上所谓的简体中文VLK版实际是普通简体中文版加英文VLK版中的8个文件而已)
二、Windows Server 2003的不同版本
Windows Server 2003 Web版:为快速开发、部署Web服务与应用程序,提供Web托管与服务平台。支持2路
SMP(对称多处理)系统、2GB内存。
Windows Server 2003标准版:面向中小型企业和部门级应用。支持4路SMP、4GB内存。
Windows Server 2003企业版:适合中心与大型组织使用,有32位和64位两个版本。支持8节点集群、NUMA;
支持8路SMP,其中32位版支持32GB内存,64位版支持64GB内存。
Windows Server 2003数据中心版:面向要求强伸缩性和高可用性的企业,有32位和64位两个版本。32位版
支持32路SMP、64GB内存;64位版支持64路SMP、512GB内存;两个版本均支持8节点集群、NUMA
三、windows server 2003 3790版的激活
在正式版算号器没有出来之前,现在流行的激活方式有以下几种:
(1)Reset5.02,在安全模式下运行即可激活,把时间调整为2008年都没有问题,一切使用正常。可以升级。
缺点:激活程序被彻底屏蔽,表现为运行msoobe /a没有任何显示,并且在服务中有一项reset5,开机会自动运
行此服务,C:\WINDOWS\system32\srvany.exe,此程序应该是reset5添加入系统的。
(2)俄罗斯破解,记得在xp时代,只要把setupreg.hiv在安装前替换,然后电话激活就可以达到完美的激活境
界,可在2003下,这样子做之后,当前显示已激活,可如果你调整了时间再开机又会显示要激活,甚至是不能
使用。估计次次问题关键还是在那个setupreg.hiv文件。
(3)在论坛上有人贴出了一个Winxpactivation.exe的文件,号称可以激活,实际上这个还是假激活,暂时屏
蔽了激活程序,是不能够修改时间的。
(4)用替换法做出来的伪VLK,安装使用都没有问题,只是不能升级。VLK是替换英文版的8个文件.但是SN已经
被微软封掉了.所以不能升级,但是此法是最稳定的,没有任何问题。
结论:推荐大家用8个替换法激活和reset5.02激活!
四、win 2003 server的一些优化设置
1.禁用配置服务器向导:
禁止“配置你的服务器”(Manage Your Server)向导的出现:在控制面板(Control Panel) -> 管理员工具
(Administrative Tools )-> 管理你的服务器(Manage Your Server)运行它,然后在窗口的左下角复选“
登录时不要显示该页”(Don't display this page at logon)。
2.启用硬件和DirectX加速
★硬件加速:桌面点击右键--属性(Properties) -> 设置(Settings )--高级( Advanced )--
疑难解答(Troubleshoot)。把该页面的硬件加速滚动条拉到“完全”( Full),最好点击“确定”(OK)保
存退出。这期间可能出现一瞬的黑屏是完全正常。
★DirectX加速:打开“开始”(Start) -> “运行”(Run),键入“dxdiag”并回车打开“DirectX 诊
断工具”(DirectX Tools),在“显示”(Display)页面,点击DirectDraw, Direct3D and AGP Texture 加
速三个按钮启用加速。把“声音的硬件加速级别”(Hardware Sound Acceleration Level)滚动条拉到“完全
加速”( Full Acceleration)。
3. 启用声卡:
系统安装后,声卡是禁止状态,所以要在 控制面板 -> 声音 -> 启用,重启之后再设置它在任务栏显示。
如果你使用的是Windows server 2003标准版请从第二步xx作,因为标准版已允许声音服务。
★打开“开始”(Start) -> “运行”(Run),键入“Services.msc ”,在出现的窗口中找到
“Windows Audio”并双击它,然后在启动模式(startup type )的下拉菜单选择“自动”(Automatic),
并点击“应用”(Apply) ->“开始”(Start) -> “确定”(OK)
★打开“开始”(Start) -> “运行”(Run),键入“dxdiag”并回车打开“DirectX 诊断工具”
(DirectX Tools),在“Sound”(Display)页面,把“声音的硬件加速级别”
(Hardware Sound Acceleration Level)滚动条拉到“完全加速”( Full Acceleration)。
4. 如何启用 ASP 支持:
Windows Server 2003 默认安装,是不安装 IIS 6 的,需要另外安装。安装完 IIS 6,
还需要单独开启对于 ASP 的支持。方法是: 控制面板 -> 管理工具 ->
Web服务扩展 -> Active Server Pages -> 允许。
5. 如何启用 XP 的桌面主题:
★打开“开始”(Start) -> “运行”(Run),键入“Services.msc ”,选themes“主题”(默认是禁止的)
,然后改为“自动”,按“应用”,选“开启”。
★接着点“桌面”的属性,在“主题”里选“windows xp”
★我的电脑----属性----高级----性能-----在 -
2004-05-08
ispDesign8.0 软件包完全破解:) - [Crack]
***************** ispDesign8.0 软件包完全破解:) **************************
无需license.bat文件,也无需修改系统时间!!!
破解的程序:
===================================================================
程序1:ispDesignExpert System \ispTOOLS\ispsys\bin\projnav.exe
===================================================================
//用附带的projnav.exe覆盖原来的\ispTOOLS\ispsys\bin\projnav.exe
//
//破解方法:
//将 0043A662 处,直接用ret返回
// 2004-4-15
**************************
第一次破解有漏洞,于 2004-5-30修正
用附带的projnav.exe覆盖原来的\ispTOOLS\ispsys\bin\projnav.exe
用附带的lflxutil.dll覆盖原来的\ispTOOLS\ispsys\bin\lflxutil.dll
破解方法:
将projnav.exe反汇编,把 00423391 处的je 改为 jne ,关键
把 0043A650 处的 直接用 ret 返回
lflxutil.dll同下面的Compliler破解
2004-5-30
****************************************************************
====================================================================
程序2:ispExpert Compiler \ispTOOLS\ispcomp\bin\ispdspg.exe
====================================================================
用附带的ispdspg.exe覆盖原来的\ispTOOLS\ispcomp\bin\ispdspg.exe
用附带的lflxutil.dll覆盖原来的\ispTOOLS\ispcomp\bin\lflxutil.dll
注:该程序需要进行动态反汇编,才能跟踪到动态链接库
破解方法:
将ispdspg.exe反汇编, 把 00463088 处的je跳转改为jne
将lflxutil.dll反汇编,把 10004F4F 处的je跳转改为jne
2004-5-7
*********************************************************************
====================================================================
程序3:ModelSim \ispTOOLS\modelsim\modelsim.exe
====================================================================
用附带的modelsim.exe覆盖原来的\ispTOOLS\modelsim\modelsim.exe
破解方法:
把 0043ED15处的 jne 改为 je
2004-5-7
*********************************************************************
======================================================================
程序4:Synplify \ispTOOLS\synplify\bin\mbin\synplify.exe
======================================================================
用附带的synplify.exe覆盖原来的\ispTOOLS\synplify\bin\mbin\synplify.exe
破解方法:
把 00454105处的jne 改为 je
2004-5-7
*********************************************************************
======================================================================
程序5:LeonardoSpectrum \ispTOOLS\spectrum\bin\win32\leonardo.exe
======================================================================
用附带的leonardo.exe覆盖原来的\ispTOOLS\spectrum\bin\win32\leonardo.exe
注:不知什么原因,该程序在有license.dat的情况下,程序本身就无法检测到license.dat的
存在,因此,即使有license.dat,且在时间允许范围内,该程序也无法运行,这给破解带来
了一定的困难。幸好程序给出的错误提示比较详细,容易分析。
破解方法:
把 0040151E 处的 jne改为je
2004-5-7
*********************************************************************
======================================================================
======================================================================
收尾:
第一次只破解ispDesignExpert System,还以为整个软件就ok了,没想到与它相关联
程序还好几个,另外还有几个工具程序,都没有破解,... :(
于是,打算在五一期间将这个软件包完全破解,可一直有其他事情。眼看五一假期就
要过去了,今天是假期的最后一天,下午我终于决定开始这个工作....
皇天不负有心人!终于在0:00之前完工了,呵呵!
Lyo Wu
2004-5-7 23:37
======================================================================
======================================================================
有任何问题,请与作者联系 lyowu@163.com
====================================================================== -
2004-05-05
Windows 右键菜单大揭密 - [Windows]
在Windows系统中,只要对着桌面或是文件(夹)单击右键,就会弹出一个快捷菜单,里面有对该文件(夹)的一些常用操作命令,通过右键菜单,可以方便用户对文件的某些操作。不知道你是否对它感兴趣?是否想对它作一番改头换面,做出有自己特色的右键菜单?不用着急,看完本文的大揭密,你将成为这方面的高手!
修改右键菜单应该在注册表中,具体的说,是在HKEY_CLASSES_ROOT根键下(这里可是右键菜单中所有命令的根源哦!)。展开该根键,其下的子键主要有两种:扩展名键(.+扩展名)和类定义键(如图1)。一般地说,只要是在windows系统中已注册过的扩展名,在HKEY_CLASSES_ROOT下均有“·该扩展名”子键 ,记录该扩展名的一些信息,对某种特定类型的文件的右键菜单的修改,便是在该键或“扩展名file”键下的操作。
一、在所有的文件右键菜单中加入命令
如果你的系统上安装有Winzip、UltraEdit等,当你对任一文件点右键时,都会有“Add to zip”、“UltraEdit-32”等命令(当然,Winzip稍有不同,我将在后面讲到)。它的添加方法是:
1.打开“HKEY_CLASSES_ROOT\*”;
2.在其下新建“shell\命令\command”分支,再将command的键值设为执行该命令时所用的可执行程序的绝对路径,并在其后加“%1”即可。
例:在“HKEY_CLASSES_R
OOT\*”下新建“shell\用写字板打开\command”子键,将command的键值设为“c:\windows\notepad.exe %1”,就会在右键菜单中出现“用写字板打开”的命令了(如图2)。
说明:
1. 要删除该类命令,只需将“命令”子键删除即可;
2. 有的人或许会问他按我写的去做,但是得到的为何与我的有一些不同,这就是我的命令里有快捷键(N),只要在“用写字板打开”后加入“(&N)”即可。
二、在特定文件类型的右键菜单中加入命令
刚才说到了Winzip这个软件,对普通的文件类型,它的右键菜单中有“Add to zip”,但是对它所支持的压缩文件类型,如*.zip、*.cab、*.rar在其右键菜单中有“Open with Winzip”、“Extract to”、“Extract to folder”、“Create Self-Extractor(.EXE)” 等命令,对于自解压性安装文件(如OICQ99b),其右键菜单中有“Run with Winzip”命令。下面是特定文件类型的右键菜单的命令添加方法(以在mp3文件的右键菜单中加入Play with winamp为例):
1.打开“HKEY_CLASSES_ROOT\mp3_auto_file”主键;
2.在其下新建“shell\Play with Winamp(&P)\command”,将command的键值设为“C:\Program files\winamp\winamp.exe %1” 。
说明:当有多个软件可以播放mp3文件时,我们可以在右键菜单中添加多条命令,如加入“Play with Unreal”等命令,但是我们如何将某一条命令定义为默认操作(即右键菜单中的黑体命令)呢?
你一定会说,很简单的事情吗!将mouse移向一mp3文件,在按右键的同时按shift,在右键菜单中选“打开方式“便可更改,但是这是错误的,不信你试试看,这样只有在右键菜单中选“打开”时才会用你所选择的程序来打开它,否则,它仍旧一如继往。因为它的默认操作不是“打开“这条命令。真正的方法是将shell的默认键值改为你所想执行的命令,例如将shell的键值改为“Winamp”,效果如图3所示。
还有,不知道你发现了没有,我在前面的例子中用的是“Play with Winamp”命令,而在这里用的是“Winamp”,是不是有点不对应呢?说到这里,真是让我心酸,本来我在txt文档中用shell进行默认操作的转换时(转换open与print)挺成功的,但是一转换“Play with Winamp”与“Play with Unreal”便失败,总是转换不过来,最后才明白这可能是“瘟酒吧”的一个bug,它要求转换时主键的键名为单个字符串时才有效。对汉字与英文的组合也有效,不过中间可不能有空格(不知道这是否与我的Win98是D版有关?)。
如果你认为上面的方法不太方便且过于复杂,其实在Windows中还提供了不用操作注册表的更为方便安全的方法:打开一个文件夹,选“查看/文件夹选项/文件类型”, 在这里你将会找到所有已经注册的文件类型,选择“mp3文件/编辑”,看到操作下面的“新建”、“编辑”、“删除”、“设为默认值”这四个按钮没有?不用我再教你了吧!嘿嘿。
三、在所有的文件夹右键菜单中加入命令
如果你用过Acdsee这个软件,就会发现在文件夹的右键菜单中总有“Browse with acdsee”这一命令,同类的还有Pc-cillin中的Trend Pc-cillin 98命令,下面再该类命令的添加方法:
1.打开“HKEY_CLASSES_ROOT\diretory\shell”主键;
2.在其下新建“命令\command”……下面不用再说了吧!
说明:1.如果你细心一下的话,你将会发现其实在驱动器的右键菜单中,也有“Browse with acdsee” “Trend Pc-cillin98”等命令,驱动器也是特殊的文件夹,但是通过上面的方法是无法在驱动器的右键菜单中加入命令的。如果要在其中加入命令,须对“HKEY_CLASSES_ROOT\drive\shell”主键进行操作;
3.在“HKEY_CLASSES_ROOT”主键下还有一个folder子键,顾名思义,对它的操作将影响所有的文件夹,包括回收站,切记切记!(图4是在 -
2004-05-04
在ASP中操作数据库的方法 - [ASP]
如果用户在网站连接access数据库时出现错误(未发现数据源或驱动程序),请改用以下连接串连接数据库。 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=数据库密码;Data Source=" & Server.MapPath("数据库名.mdb")
存取数据库的原理:在ASP中,用来存取数据库的对象统称ADO对象(Active Data Objects),主要含有三种对象:Connection、Recordset和Command,其中Connection负责打开或连接数据库,Recordset负责存取数据表,Command负责对数据库执行行动查询(Action Query)命令和执行SQL Server的Stored Procedure。只依靠这三个对象还是无法存取数据库的,还必须具有数据库存取的驱动程序:OLE DB驱动程序和ODBC驱动程序。对于任何一种数据库都必须有相对应的OLE DB驱动程序和ODBC驱动程序,ADO对象才能对数据库进行存取。
连接数据库和打开数据表:不同数据库的连接方法有所不同(即建立Connection实例的方法不一样),但建立Connection实例后,利用Recordset对象进行存取数据的方法却大同小异。下面对于不同的数据类型,编写了相对应的连接函数,在程序中直接引用即可。
程序用VB Script脚本语言编写。
1.建立MdbRecordset对象。MDB数据库是一个完整的数据库,内部可能含有若干个数据表,在此函数中,Connection的作用是连接数据库,Recordset的作用是打开数据表。
Function CreateMdbRecordset(数据库文件名, 数据表名或Select语句 )
Dim conn,Provider,DBPath
’建立Connection 对象
Set conn = Server.CreateObject
(“ADODB.Connection”)
Provider=“Provider=Microsoft.Jet.OLEDB.4.0;”
DBPath = “Data Source=” & Server.MapPath(“数据库文件名”)
’打开数据库
conn.Open Provider & DBPath
Set CreateMdbRecordset = Server.CreateObject(“ADODB.Recordset”)
’打开数据表
CreateMdbRecordset.Open “数据表名”, conn, 2, 2
End Function
2.建立带密码的MDB数据库的Recordset对象。它的建立方式与建立不带密码的MDB数据库的Recordset对象类似,只是多了一个密码参数,即在与数据库连接时,必须给出密码信息。
Function CreateSecuredMdbRecordset( 数据库文件名, 数据表名或Select语句,password )
Dim conn,Provider,DBPath
’建立Connection 对象
Set conn = Server.CreateObject
(“ADODB.Connection”)
Provider = “Provider=Microsof.Jet.OLEDB.4.0;”
DBPath = “Data Source=”& Server.MapPath(“数据库文件名”)
’连接数据库,注意要带有密码参数
conn.Open Provider & DBPath&“Jet OLEDB:Database Password=”&assword
Set CreateSecuredMdbRecordset = Server.
CreateObject(“ADODB.Recordset”)
’打开数据表
CreateSecuredMdbRecordset.Open “数据表名”, conn, 2, 2
End Function
3.DBF文件不是一个标准的数据库文件,只相当于标准数据库文件中的一个数据表,所以为了使用DBF文件,可以把所有的DBF文件放在一个目录下,这样把目录名看成标准数据库,每一个DBF文件相当于标准数据库中的数据表。下面函数中的Directory是DBF所在的目录名。
Function CreateDbfRecordset( 目录名, DBF文件名或Select语句 )
Dim conn,Driver,SourceType,DBPath
’建立Connection 对象
Set conn = Server.CreateObject
(“ADODB.Connection”)
Driver=“Driver={Microsoft Visual FoxProDriver};” SourceType = “SourceType=DBF;”
DBPath=“SourceDB=” & Server.MapPath(“目录名”)
’调用Open 方法打开数据库
conn.Open Driver & SourceType & DBPath
Set CreateDbfRecordset = Server.CreateObject(“ADODB.Recordset”)
’打开DBF文件
CreateDbfRecordset.Open “DBF文件名或Select语句”, conn, 2, 2
End Function
4.由FoxPro生成的DBC数据库与MDB数据库相似,都是一个数据库包含几个数据表的形式,所以对DBC数据库的存取方法与MDB数据库相似。
Function CreateDbcRecordset( DBC数据库文件名, 数据表名或Select语句 )
Dim conn,Driver,SourceType,DBPath
’建立Connection 对象
Set conn = Server.CreateObject
(“ADODB.Connection”)
Driver=“Driver={Microsoft Visual FoxPro Driver};”
SourceType = “SourceType=DBC;”
DBPath = “SourceDB=” & Server.MapPath(“DBC数据库文件名”)
’连接数据库
conn.Open Driver & SourceType & DBPath
Set CreateDbcRecordset = Server.CreateObject(“ADODB.Recordset”)
’打开数据表
CreateDbcRecordset.Open“数据表名或Select语句”, conn, 2, 2
End Function
5.将Excel生成的XLS文件(book)看成一个数据库,其中的每一个工作表(sheet)看成一个数据库表。
Function CreateExcelRecordset(XLS文件名,Sheet名)
Dim conn.Driver,DBPath
’建立Connection对象
Set conn = Server.CreateObject -
影响共享软件发展的因素很多,被非法破解可以说是共享软件的头号大敌。那么造成共享软件生存困难的Cracker们到底用了那些武器呢?今天就让我让带您去看看神秘的Cracker常用的十类软件,它们就是共享软件的十大杀手!
一. 调试类工具Soft-ICE和Trw2000。
Soft-ICE是目前公认最好的跟踪调试工具。使用Soft-ICE可以很容易的跟踪一个软件、或是监视软件产生的错误进行除错,它有DOS、WINDOW3.1、WIN95/98/NT/2000/各个平台上的版本。这个本是用来对软件进行调试、跟踪、除错的工具,在Cracker手中变成了最恐怖的破解工具;Trw2000是中国人自己编写的调试软件,完全兼容Soft-ICE各条指令,由于现在许多软件能检测Soft-ICE存在,而对TRW2000的检测就差了许多,因此目前它成了很多Cracker的最爱。TRW2000专门针对软件破解进行了优化,在Windows下跟踪调试程序,跟踪功能更强;可以设置各种断点,并且断点种类更多;它可以象一些脱壳工具一样完成对加密外壳的去除,自动生成EXE文件,因此它的破解能力更强,在破解者手中对共享软件的发展威胁更大。它还有在DOS下的版本,名为TR。
二. 反汇编工具Wdasm8.93黄金版和Hiew。
Cracker常将Soft-ICE和Trw2000比作屠龙刀,将Wdasm8.93则比作倚天剑。Wdasm8.93可方便地反汇编程序,它能静态分析程序流程,也可动态分析程序。在原有的普通版的基础上,一些破解者又开发出了Wdasm8.93黄金版,加强了对中文字符串的提取。对国产共享软件的威胁也就更大了。例如开心斗地主这个很好玩的共享软件,用黄金版对其反汇编可以直接看到注册码,普通版不能,您说它厉害不?Hiew是一个十六进制工具,它除了普通十六进制的功能外,它还有个特色,能反汇编文件,并可以用汇编指令修改程序, 用它修改程序,方便快捷!这也是Cracker们常用的静态反汇编工具。
三. Visual Basic程序调试工具Smartcheck。
这是专门针对Visual Basic程序的调试程序,由于VB程序执行时从本质上讲是解释执行,它们只是调用 VBRUNxxx.DLL 中的函数 ,因此VB 的可执行文件是伪代码,程序都在VBXXX.dll 里面执行。若用Soft-ICE跟踪调试只能在VBdll里面用打转转,看不到有利用价值的东西,而且代码质量不高,结构还很复杂。当然只要了解其特点用Soft-ICE也可破解 ,但SmartCheck的出现,大大方便了Cracker。SmartCheck 是 NuMega 公司出口的一款出色的调试解释执行程序的工具,目前最新版是v6.03。它非常容易使用,你甚至于不需要懂得汇编语言都能轻易驾驭它。它可将VB程序执行的操作完全记录下来,使破解者轻而易举的破解大部分VB程序。
四. 十六进制编辑器Ultraedit。
十六进制编辑器可以用十六进制方式编辑文件,修改文件的内容。虽然Hiew就是一款是十六进制工具,但它是DOS界面,因此很多破解者又准备了一款windows下的工具,这样的工具很多,如:Ultraedit、WinHex、Hex Workshop 等,其中Ultraedit比较有特色,操作方便,更有汉化版可用,它是非常出色的十六进制编辑器,建议您也找一个用用。
五. 注册表监视工具
主要有RegShot、Regmon或RegSnap等。在微软操作系统中,众多的设置都存放在注册表中,注册表是Windows的核心数据库,表中存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序的正常运行。在应用软件安装时,有可能将一些必要的信息放进去,如安装时间、使用次数、注册码等。RegShot、Regmon或RegSnap就是监视注册表变化的工具,通过它可以了解、监视应用程序在注册表中的动作,破解者常利用它们来监视应用程序在注册表中的变化。
六. 文件监视工具Filemon。
可监视系统中指定文件运行状况,如指定文件打开了哪个文件,关闭了哪个文件,对哪个文件进行了数据读取等。通过它,任何您指定监控的文件有任何读、写、打开其它文件的操作都能被它监视下来,并提供完整的报告信息。破解者经常利用Filemon监控文件系统,以便了解程序在启动、关闭或验证注册码时做了哪些手脚,并由此进行相应的解密。
七. 脱壳工具Procdump。
现在许多软件都加了壳,“壳”是一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。经过加壳的软件在跟踪时已无法看到其真实的十六进制代码,因此可以起到保护软件的目的。Procdump就是个对付软件加壳的脱壳工具,它可剥去许多种壳,还文件本来面目,这样再修改文件内容就容易多了。由于它还允许使用者自己编写脚本文件,因此利用它能脱去新版加壳软件的壳。它同时还是一款优秀的PE格式修改工具,是脱壳必备工具!
八. 侦测文件类型工具
这样的工具有Typ、Gtw、FileInfo和冲击波2000等。它们被用来侦测软件被加壳类型,其中冲击波2000能轻易的找到任何加密壳的入口点,包括ASProtect以及幻影的加密壳都可以。这类软件一般是配合Procdump和调试软件使用的,用它们找到程序加壳类型,用Procdump或Soft-ICE、Trw2000脱壳。
九. 资源修改器 eXeScope。
eXeScope是一个可以修改软件资源的工具,功能强大 -
性格分析
1月18日出生的人永远保持着孩子般的天真烂漫。
有时你可能会责怪他们过于单纯,却绝对不会认为他们工于心计、求财爱富或是投机取巧。这天出生的人非常随遇而安,喜欢追求轻松的乐趣,对于伤脑筋的事情不太感兴趣。如果硬要将成人世界里的种种要求放在他们身上,则会让他们非常痛苦。因此,对这些人来说,最大的挑战就是在成为一个成熟的个体,同时又能保有一颗欢乐的童心。
这天出生的人通常也会是很好的父母。因为他们对于青少年期的孩子会喜欢什么,总是能了然于心。但是,他们和自己父母的相处反而问题多多,特别是在青少年时期。对这些人而言,脱离孩童时代是一件很痛苦的事情,所以父母必须对他们在这个转换时期的需要更为敏感、关心才行,而且最好不要将太多成人的要求施加于他们身上,或是坚持要他们立刻丢掉一些孩提时候的习惯,因为这些要求只会造成他们的身心失调,甚至埋下反抗的种子。
1月18日出生的人虽然喜欢轻松的生活,却又期许生活里要有很多的兴奋经验和冒险,好让他们随时保持精神振奋。一旦不能在每天的生活里找到这种兴奋经验之时,他们很可能会退缩自己的到幻想世界里,因为在那里,任何事情都可以发生。
爱情运
本日生的人不必做任何动作就可以博得异缘暮酶,他那种世俗的魅力使他在爱情上颇有斩获?
他很重视自己的伴侣。山羊座本日生的人只会用知性的态度去选择跟自己交往的对手。同时对于对自己的地位和名誉有贡献的对手,他特别有兴趣。看起来好象很冷静,可以超越一切事情的样子,不过因为没有安定的情绪生活,所以显得很混乱。平常是很抑制的,但偶尔也会采取令人惊讶的热情行动。虽然有见异思迁的癖性,但根本上他是保守的,同时他也期待对方的行动有知识性,不会引起别人的争议。
金钱运
本日生的人可以按照心里所想的,获得相当的财富。
虽然这日生的人有些狡猾、但很努力工作,是个野心家、很物质主义,这些都可以帮助他累积财富。但根本上,对他而言,金钱就是当他将抽象的概念现实化时,所产生的副产品。头脑很好,可以有效管理金钱,即使行有余力,也不浪费。他可以牺牲所有的东西,以维持地位和名声。
事业运
深思熟虑、思路井然有序是本日生的人的特点,所以他们当律师、作家、记者、研究者、科学家、政治学者、哲学家都可以成功。
敏锐的外表,不安全感和优柔寡断的内在。他讨厌处在正面下命令的立场,却喜欢在背地里扯线行使权力。充满想象力,心思细密,常常竭尽所能的执行他的工作,适合在大组织内或跟在别人手底下做事,从事的职业以可以实现抽象概念跟梦想的为宜。
健康运
1月18日出生的人必须注意自己活在梦想世界的倾向。
保持固定的社交活动,积极参与家庭聚会,适当地肩负责任等等,都能帮助他们与现实世界保持接触。绝对避免吃会制造幻象的药品,抗压力的药物也要小心使用。在饮食方面,尝起来有异国风味、闻起来很刺激、看起来很艳丽的食物,对他们再合适不过了。不过,这天出生的人也应该固定摄取一般性食物,像马铃薯、面包、根茎类蔬菜等。对非职业运动员的他们来讲,温和且适度的运动远较激烈的竞争性运动来得合适。另外,睡眠充足是最基本的需求,如果可能的话,白天睡个小觉也小有帮助。
幸运数字
1月18日出生的人都受到数字9(1+8=9)以及火星的影响。
数字9对其他数字有很大的影响力(任何一个数字加上9之后,会变成原来的数字,例如5+9=14,4+1=5;任何一个数字乘上9则会产生9,例如9×5=45,4+5=9),同样地,1月18日出生的人对周遭的人也有很大的影响力。由于天王星(相邻星座水瓶座的主宰行星)的影响,这天出生的人还必须特别小心被奇异、邪恶或很难相处的人吸引,碰上这种人,将来恐怕会纠缠不断。另外,土星(魔羯座的主宰行星)对火星的影响也造就了他们容易妥协、遭人利用的个性。
适合你的恋爱对象:
1月11日1月23日2月13日2月22日3月3日4月11日4月29日5月19日6月18日7月17日7月26日8月7日
适合你的朋友对象:
1月24日2月14日3月31日4月19日5月2日6月10日7月18日8月8日9月16日10月15日11月12日12月4日
-
2004-04-07
Debian 新手汉化跟我来 ---- 实战演练篇 - [Linux]
[版权信息]
出处:linuxfire
联系:master@linuxfire.com
版本:0.1
版权:GPL
转载请注明来自 linuxfire 和 linuxsir
最后修改:2003年6月27日 (不定期更新,尽请关注:)
测试环境:
Debian sid + XFree86 4.3 + Fvwm
此篇是 “Debian 新手汉化跟我来 ---- 理论辅导篇” 的姊妹篇,由于我理论没过关,所以先写实践经验,难免出错,还望多提意见。
汉化前,我假定你已经安装好基本系统和 X window,如果你还没做,请参考下面链接:
http://www.linuxsir.com/bbs/showthr...&threadid=14937
1、安装语言环境 locale
apt-get install locales # 注意是复数
如果已经安装,需要改变的话,请用下面命令:
dpkg-reconfigure locales # dpkg-reconfigure 是 dpkg 中一个很常用的工具
在配置表单中,我们只需选择两个 locale:
en_US ISO-8859-1 # 美式英语,带 ISO-8859-1 西欧字符集, en_GB 为英式英语
zh_CN.GBK GBK # 基于 GBK 的简体中文环境
参考文章:
http://www.cs.uu.nl/wais/html/na-di...1-charset.html
如果你对 locale 还没有概念,请参考于明俭老师的文章 “ Linux 国际化本地化和中文化”
http://www.opencjk.org/~yumj/i18n.html
2、我习惯用 startx 脚本启动 X ,把传递给它参数以及环境变量都写到一个文件.xinitrc,此文件存放在当前用户的 HOME 目录下,. 开头,故隐藏,用 ls -a 才能看到,如没有请自行建立。
编辑 ~/.xinitrc 文件,加入类似语句
LANGUAGE=zh_CN.GBK
LANG=zh_CN.GBK
LC_ALL=zh_CN.GBK
export LANGUAGE LANG LC_ALL
export XMODIFIERS=@im=fcitx
fcitx&
exec fvwm2
killall fcitx
手工添加的话,对于 bash 可用命令:
$ set LANG = zh_CN.GBK
$ export LANG
$ set LC_ALL = zh_CN.GBK
$ export LC_ALL
$ echo $LANG
$ echo $LC_ALL
$ ......
配置好后,用 locale 命令检查,范例如下:
$ locale
LANG=zh_CN.GBK
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=zh_CN.GBK
3、/etc/environment
加入
LANG=zh_CN.GBK
(有人要问,为什么上面写了,这里还写,:(我也不知道,反正有用:)
/etc/environment 这里可以书写一些环境变量,作用同 ~/.bashrc,不过是系统泛读。
例如我可以在这两处设置 ftp_proxy 与 http_proxy 两个环境变数
......
ftp_proxy=http://LOCAL-PROXY:PORT/
http_proxy=http://LOCAL-PROXY:PORT/
export ftp_proxy http_proxy
......
参考文章:
http://www.unet.univie.ac.at/aix/fi...environment.htm
4、fcitx 输入法中的 locale 设置
apt-get install fcitx
运行一下 fcitx ,在 ~/ 下多了一个 .gWuBi 目录。
vi ~/.gWuBi/profile
检查一下里面的是不是都是 zh_CN.GBK
5、配置 XFree86,是使用 xtt 模块,去掉 freetype 模块
$ dpkg-reconfigure xserver-xfree86
......
[ ] freetype
......
xtt
......
6、安装字体渲染引擎和管理工具,以及相关中文字体
软件简介:
老一辈: xtt(传统 X 字体服务器,XFree86 带了模块) + defoma
defoma - Debian Font Manager -- automatic font configuration framework
再也不用手工写字体,让 defoma 帮你管理吧
dfontmgr - GUI frontend for defoma, DEbian FOnt MAnager
一个很方便的图形化 defoma 字体管理工具
psfontmgr - PostScript font manager -- part of Defoma, Debian Font Manager
x-ttcidfont-conf - Configure TrueType and CID fonts for X.
新生代: xft2 + fontconfig
fontconfig - generic font configuration library
libxft2 - advanced font drawing library for X
libxft2-dev - advanced font drawing library for X (development files)
libpango1.0-0 - Layout and rendering of internationalized text
自动中文编码转换工具:
zh-autoconvert - Chinese HZ/GB/BIG5/UNI/UTF7/UTF8 encodings auto-converter
GPL字体:
ttf-arphic-bsmi00lp :文鼎PL细上海宋(Big5 码)
ttf-arphic-bkai00mp :文鼎PL中楷(Big5 码)
ttf-arphic-gbsn00lp :文鼎PL简报宋(GB 码)
ttf-arphic-gkai00mp :文鼎PL简中楷(GB 码)
其它字体请看:
http://www.debian.org/intl/zh/software
xfonts-intl-chinese - International fonts for X -- Chinese.
xfonts-intl-chinese-big - International fonts for X -- Chinese big.
中文帮助:
doc-linux-zh-s - Linux HOWTOs and mini-HOWTOs in Simplified Chinese in HTML
manpages-zh - Chinese manual pages
$ apt-get install defoma dfontmgr psfontmgr x-ttcidfont-conf fontconfig libxft2 l -
2004-04-07
Debian系统配制工具(转) - [Linux]
Debian系统配制工具,再不会无所是从了, debian也很亲切呀!
刚才论坛上看到有个兄弟提议罗列debian系统配制工具,我觉的很好,为了让更多兄弟看到,发新贴,望别介意。
都是命令行的配制工具:
rcconf
系统引导是你想要启动的服务,很有用工具。
base-config
基系统配制,第一次启动后,碰到的就是它吧,配制的方面很多哦,呵呵。
debconf Debian 包裹配制系统
dpkg-reconfigure 配制一个已经安装的包裹
很有用哦,任何安装的包裹都可以用它来配制。
apt-get install etherconf
dpkg-reconfiguration etherconf
网络的配制,包括主机名,IP,DHCP,DNS,GATEWAY,NETMASK。。。等。
如果如果你用lan上网,这几个文件很重要:
/etc/hostname主机名
/etc/network/interfaces 网络配制
/etc/resolv.conf DNS配制
如:
nameserver 202.96.104.18
nameserver 202.96.103.36
dpkg-reconfiguration xserver-xfree86
鼠标,键盘,显示器和显卡配制,能不能进X,全看它了。
或手工修改/etc/X11/XF86Config-4,作用一样。
modconf
大家肯定会在刚开始装系统时碰到那个另人望而生畏的基于表单的模块选取界面(我还曾专门写一贴,关于如何选取模块),就是它了。Debian想的非常周到,它把你须要的模块都做好了,只等你动手选了,以后忘了选或想移除模块,千万不要靠重装来解决问题,呵呵。
当然也可以手动添加了:
/etc/modules
这里写的都是你引导时要加载的内核模块,可以自己添加,
/etc/modules.conf
模块配制,这个不用自己改,
在你修改了/etc/modules后,可用update-modules来重建/etc/modules.conf和 /etc/chandev.conf。
几个好用的命令:
modprobe - high level handling of loadable modules
用来加载模块
modprobe -c 显示当前正被使用的模块配制
modprobe -l 显示能匹配的模块列表,你可以找你需要的模块
modprobe modname 加载模块
modprobe -r modname 移除模块
insmod - install loadable kernel module
给正在运行的内核安装一个可加载模块。
rmmod
从正在运行的内核卸载模块。
lsmod
列出已加载的模块。
modinfo modname
显示每个模块的信息,很有趣。
apt-setup
配制apt源,就是安装时的你看到的那个,帮助你写/etc/apt/source.list
apt-get install aptconf
dpkg-reconfigure aptconf
配制apt,如禁用哪个apt源,自定义添加apt源(就象是个储藏室)等,找的是你的source.list,好玩。
apt-get install timezoneconf
dpkg-reconfigure timezoneconf
配制时区,日期,和时间。
apt-get install localeconf
dpkg-reconfigure localeconf
配制locale,不用我说了吧。
locale
查看本地的locale
dpkg-reconfigure locales
功能同localeconf
cpanel,别人提醒的,呵呵,凑个数
中文图形配制工具。
呵呵,我怎么知道的呢?
呵呵,apt-cache search debconf
记得多看看男人(man)呀,不要花太多的心思在mm上呀 :)
-
2004-04-07
Debian的FAQ (转) - [Linux]
下面的FAQ是来自弟兄们的帖子中,都是一句话就能得到答案的。我整理出来,方便大家查找。
1.一般用户su root后无法运行任何图形界面的软件?
ln -s /home/normaluser/.Xauthority /root/.Xauthority
2. X 无法启动
将XF86Config-4中的Option "UseFBDev" "true"
用#注释掉,就可以了
debian认不了光驱?
ln -sf /dev/hd? /dev/cdrom
其中hd?就是你光驱所在的接口
3.我的声卡问题解决 /dev/dsp 权限不够
正确方法是
# adduser 用户名 audio
# adduser wide288 audio
比如用户名为wide288,重新登录wide288用户
通过knoppix安装装debian的办法
用Knoppix启动后在root shell下执行knx-hdinstall按提示做几十分钟后就有一个完整的debian系统了。
4.把rpm包转成deb包的工具
就是alien了
先apt-get install alien安装,装完试试用alien -d 把rpm包转成deb包,俺用它转了G五笔的deb包,使用正常
alien -i name-of-the-pakage.rpm
直接就能装上了,有时候能解决一些rpm包的所谓关联性问题
请教,X下鼠标显示一个怪怪的方块?先谢了!
是Trident显卡的驱动问题,好像Sis的显卡也有这个问题,解决方法是:
在XF86Config-4的Device字段添加一行:
Option "sw_cursor"
在xfree86的网站上说是: Option "SWCursor" "on" ,我没有试过.
5.请问如何使一个软件不进行升级
somebody said hold was a status flag to tell apt not to automatically upgrade a package. apt will place packages on hold if they require packages that are not currently installable; you can ’apt-get install pkgname’ to explicitly install the package. To put a package on hold, ’echo pkgname hold | dpkg --set-selections’ or use the ’=’ key on the package in dselect, or ’echo pkgname install | dpkg --set-selections’ to remove the hold
我们说 hold ,其实是一个状态标志,目的是告诉 apt 停止自动升级某个包裹。
apt 将让一些包裹处于 hold 状态,如果他们请求的包裹现在不可安装;
你能够使用 ‘apt-get install pkgname’ 来安装包裹。
为了让包裹置于 hold. ’echo pkgname hold | dpkg --set-selections ’ 或在 dselect 中使用 ’=’ 键于对应的包裹。
移除 hold 用
’echo pkgname install | dpkg --set-selections’
用synaptic,软件包的状态在gui界面中显示得一清二楚.
这样也许选择的更多
dpkg --get-selections \*>status.current
vi stantus.current//你想hold的package
dpkg --set-selections<stantus.current
6.“could not locate char-major-10-135 ”的解决
It’s harmless. Just means you do not have the RTC clock module compiled into your kernel, or the module has not been loaded. There should be an alias for this in
/etc/modules.conf:
alias char-major-10-135 rtc
If not, check /etc/modutils/arch/i386 (if you have an intel/amd system) and put it in there, then run update-modules.
modconf might allow you to force load the rtc module, if it exists, at boot by putting rtc in /etc/modules. That may help.
As a last resort, if your kernel doesn’t have it, you may want to install a kernel with rtc support or compile your own.
引自 www.debianhelp.com
相信很多朋友都会看到这个讨厌的信息,上面的方法能解决问题。:)
以下是转贴
解决关于"char-major-10-135"的错误,原因是新内核没有加入RTC支持,请在内核配置中的"character device"里将"enhanced real time clock support"选上Y或M就没这个错误了
建议选上这个支持,很多要编译的程序需要这个支持,譬如mplayer
不知道这些错误大家有没有遇见过
modprobe:modprobe:Can’t locate module char-major-108
modprobe:modprobe:Can’t locate module char-major-6
我的办法最简单:
不管数值是什么,我统统的;
alias char-major-10-135 off
最后用off就好啦,管它呢,又不影响使用
7. rxvt下[Home]、[End]按键无效该怎么办?
在~/.inputrc中加上下面的代码即可。
# rxvt
"\e[7~":beginning-of-line
"\e[8~":end-of-line
8. 快速的debian镜像
deb http://debian.cn99.com/debian stable main contrib non-free
deb http://debian.cn99.com/debian-non-US stable/non-US main contrib non-free
deb http://debian.cn99.com/debian-security stable/updates main contrib non-free
deb-src http://debian.cn99.com/debian stable main contrib non-free
deb-src http://debian.cn99.com/debian-non-US stable/non-US main contrib non-free
以上的 stable,根据需要可以设置成 testing 和 unstable
9.让vim支持中文
VIM当然支持中文!!!!!!
gvim也支持!!!!
在~/.gvimrc中加上
源码:set encoding=euc-cn
s -
2004-04-06
嵌入式Linux的移植 - [Embedded]
一、硬件体系结构简介
运行嵌入式linux的硬件平台主要包括如下几个部分:cpu(ARMv4指令集兼容)、uart、memory controller、定时器、flash存储器,sdram存储器,中断控制器和DMA。
二、编译环境和编译工具
linux操作系统源码绝大部分是用c语言开发的,有一些与硬件直接相关的代码则用特定于某一CPU体系结构的汇编来实现。这些源码只能用GNU的gcc编译工具来进行编译、链接。
GNU gcc可以运行于Linux/Unix操作系统上。如果要在Windows平台上运行gcc,则必须安装Cygwin。Cygwin可以在Windows中安装一个linux的运行环境,这样就可以在windows下运行原本只能在linux下运行的程序。
为了在PC上编译得到运行于目标CPU上的操作系统内核,还必须安装一个合适的交叉编译器。Gcc 提供了现成的针对MIPS、ARM、M68K、Sharc、PowerPC的交叉编译器。如果没有现成的交叉编译器,则需要自行设计。GNU网站提供了一些如何开发新的交叉编译器的文章。开发一个新的编译器,一般需要如下几个步骤:
1、编写机器描述脚本。采用gcc的RTL(Register Tansfer Language)语言描述针对某一CPU体系结构的机器指令与寻址方式、CPU浮点处理方式、endianess、c语言中各种数据类型的位宽、寄存器的个数和使用规则、堆栈和函数调用规则等体系结构的细节。
2、设计代码生成器。Gcc在对c语言源文件进行了词法和语法分析后,将产生一种中间格式文件(intermediate representation)。为了把这种中间格式文件转化为针对具体CPU体系结构的机器码,需要自行设计一个代码生成器。
3、设计汇编器
4、设计链接器
三、系统代码的修改
需要修改的系统源码主要有如下几处:
(1) bootloader相关代码。此代码位于linux-2.4.x\arch\armnommu\boot\compressed\目录下名为head.s的文件中。此处程序用汇编语言实现,需要修改的地方主要是设置memory map的代码,与memory controller的硬件实现相关。
(2) UART相关代码。UART相关代码位于\linux-2.4.x\drivers\char目录下的serial.c
(3) 定时器相关代码。linux中有如下函数调用star_kernel()->time_init()->setup_timer(),需要修改setup_timer()函数中的相关代码。
(4) 中断控制器相关。\linux-2.4.x\arch\armnommu\irq.c
除了上述的代码,还有其他多处需要修改。在修改源代码时,可按照uclinux启动和执行顺序依次修改整个平台。熟悉linux内核源码结构对操作系统移植有很大帮助。 -
2004-04-03
GCC内嵌汇编之语法详解 - [Linux]
内嵌汇编语法如下:
__asm__(汇编语句模板: 输出部分: 输入部分: 破坏描述部分)
共四个部分:汇编语句模板,输出部分,输入部分,破坏描述部分,各部分使用“:”格开,汇编语句模板必不可少,其他三部分可选,如果使用了后面的部分,而前面部分为空,也需要用“:”格开,相应部分内容为空。例如:
__asm__ __volatile__("cli": : :"memory")
1、汇编语句模板
汇编语句模板由汇编语句序列组成,语句之间使用“;”、“\n”或“\n\t”分开。指令中的操作数可以使用占位符引用C语言变量,操作数占位符最多10个,名称如下:%0,%1,…,%9。指令中使用占位符表示的操作数,总被视为long型(4个字节),但对其施加的操作根据指令可以是字或者字节,当把操作数当作字或者字节使用时,默认为低字或者低字节。对字节操作可以显式的指明是低字节还是次字节。方法是在%和序号之间插入一个字母,“b”代表低字节,“h”代表高字节,例如:%h1。
2、输出部分
输出部分描述输出操作数,不同的操作数描述符之间用逗号格开,每个操作数描述符由限定字符串和C 语言变量组成。每个输出操作数的限定字符串必须包含“=”表示他是一个输出操作数。
例:
__asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (x) )
描述符字符串表示对该变量的限制条件,这样GCC 就可以根据这些条件决定如何分配寄存器,如何产生必要的代码处理指令操作数与C表达式或C变量之间的联系。
3、输入部分
输入部分描述输入操作数,不同的操作数描述符之间使用逗号格开,每个操作数描述符由限定字符串和C语言表达式或者C语言变量组成。
例1 :
__asm__ __volatile__ ("lidt %0" : : "m" (real_mode_idt));
例二(bitops.h): -
在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。
1、简单的内嵌汇编
例:
__asm__ __volatile__("hlt"); “__asm__”表示后面的代码为内嵌汇编,“asm”是“__asm__”的别名。“__volatile__”表示编译器不要优化代码,后面的指令保留原样,“volatile”是它的别名。括号里面是汇编指令。
2、内嵌汇编举例
使用内嵌汇编,要先编写汇编指令模板,然后将C语言表达式与指令的操作数相关联,并告诉GCC对这些操作有哪些限制条件。例如在下面的汇编语句:
-
2004-04-03
编译器优化 → C关键字volatile → memory破坏描述符 - [Linux]
“memory”比较特殊,可能是内嵌汇编中最难懂部分。为解释清楚它,先介绍一下编译器的优化知识,再看C关键字volatile。最后去看该描述符。
1、编译器优化介绍
内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变量缓存到寄存器;调整指令顺序充分利用CPU指令流水线,常见的是重新排序读写指令。对常规内存进行优化的时候,这些优化是透明的,而且效率很好。由编译器优化或者硬件重新排序引起的问题的解决办法是在从硬件(或者其他处理器)的角度看必须以特定顺序执行的操作之间设置内存屏障(memory barrier),linux 提供了一个宏解决编译器的执行顺序问题。
void Barrier(void)
这个函数通知编译器插入一个内存屏障,但对硬件无效,编译后的代码会把当前CPU寄存器中的所有修改过的数值存入内存,需要这些数据的时候再重新从内存中读出。
2、C语言关键字volatile
C语言关键字volatile(注意它是用来修饰变量而不是上面介绍的__volatile__)表明某个变量的值可能在外部被改变,因此对这些变量的存取不能缓存到寄存器,每次使用时需要重新存取。该关键字在多线程环境下经常使用,因为在编写多线程的程序时,同一个变量可能被多个线程修改,而程序通过该变量同步各个线程,例如:
DWORD __stdcall threadFunc(LPVOID signal)
{
int* intSignal=reinterpret_cast<int*>(signal);
*intSignal=2;
while(*intSignal!=1)
sleep(1000);
return 0;
}
该线程启动时将intSignal 置为2,然后循环等待直到intSignal 为1 时退出。显然intSignal的值必须在外部被改变,否则该线程不会退出。但是实际运行的时候该线程却不会退出,即使在外部将它的值改为1,看一下对应的伪汇编代码就明白了:
mov ax,signal
label:
if(ax!=1)
goto label
对于C编译器来说,它并不知道这个值会被其他线程修改。自然就把它cache在寄存器里面。记住,C 编译器是没有线程概念的!这时候就需要用到volatile。volatile 的本意是指:这个值可能会在当前线程外部被改变。也就是说,我们要在threadFunc中的intSignal前面加上volatile关键字,这时候,编译器知道该变量的值会在外部改变,因此每次访问该变量时会重新读取,所作的循环变为如下面伪码所示:
label:
mov ax,signal
if(ax!=1)
goto label
3、Memory
有了上面的知识就不难理解Memory修改描述符了,Memory描述符告知GCC:
1)不要将该段内嵌汇编指令与前面的指令重新排序;也就是在执行内嵌汇编代码之前,它前面的指令都执行完毕
2)不要将变量缓存到寄存器,因为这段代码可能会用到内存变量,而这些内存变量会以不可预知的方式发生改变,因此GCC插入必要的代码先将缓存到寄存器的变量值写回内存,如果后面又访问这些变量,需要重新访问内存。
如果汇编指令修改了内存,但是GCC 本身却察觉不到,因为在输出部分没有描述,此时就需要在修改描述部分增加“memory”,告诉GCC 内存已经被修改,GCC 得知这个信息后,就会在这段指令之前,插入必要的指令将前面因为优化Cache 到寄存器中的变量值先写回内存,如果以后又要使用这些变量再重新读取。
使用“volatile”也可以达到这个目的,但是我们在每个变量前增加该关键字,不如使用“memory”方便。 -
2004-04-02
AT&T与INTEL的汇编语言语法的区别 - [Linux]
1、大小写
INTEL格式的指令使用大写字母,而AT&T格式的使用小写字母。
例:
INTEL AT&T
MOV EAX,EBX movl %ebx,%eax
2、操作数赋值方向
在INTEL语法中,第一个表示目的操作数,第二个表示源操作数,赋值方向从右向左。
AT&T语法第一个为源操作数,第二个为目的操作数,方向从左到右,合乎自然。
例:
INTEL AT&T
MOV EAX,EBX movl %ebx,%eax
3、前缀
在INTEL 语法中寄存器和立即数不需要前缀;AT&T 中寄存器需要加前缀“%”;立即数
需要加前缀“$”。
例:
INTEL AT&T
MOV EAX,1 movl $1,%eax
符号常数直接引用,不需要加前缀,如:movl value , %ebx,value为一常数;在符
号前加前缀$表示引用符号地址, 如movl $value, %ebx,是将value的地址放到ebx中。
总线锁定前缀“lock”:总线锁定操作。“lock”前缀在Linux 核心代码中使用很多,特
别是SMP代码中。当总线锁定后其它CPU不能存取锁定地址处的内存单元。
远程跳转指令和子过程调用指令的操作码使用前缀“l“,分别为ljmp,lcall,与之
相应的返回指令伪lret。
例:
INTEL AT&T
CALL FAR SECTION:OFFSET lcall $secion:$offset
JMP FAR SECTION:OFFSET ljmp $secion:$offset
RET FAR SATCK_ADJUST lret $stack_adjust
4 、间接寻址语法
INTEL 中基地址使用“[”、“] ”,而在AT&T 中使用“(”、“) ”;另外处理复杂操作数的
语法也不同, INTEL 为Segreg:[base+index*scale+disp] , 而在AT&T 中为
%segreg:disp(base,index,sale),其中segreg,index,scale,disp都是可选的,在指定
index而没有显式指定Scale的情况下使用默认值1。Scale和disp不需要加前缀“&”。
INTEL AT&T
Instr instr
foo,segreg:[base+index*scale+disp] %segreg:disp(base,index,scale),foo
5、后缀
AT&T 语法中大部分指令操作码的最后一个字母表示操作数大小,“b”表示byte(一个
字节);“w ”表示word(2 个字节);“l ”表示long(4 个字节)。INTEL 中处理内存操作数
时也有类似的语法如:BYTE PTR、WORD PTR、DWORD PTR。
例:
INTEL AT&T
mov al, bl movb %bl,%al
mov ax,bx movw %bx,%ax
mov eax, dword ptr [ebx] movl (%ebx), %eax
在AT&T 汇编指令中,操作数扩展指令有两个后缀,一个指定源操作数的字长,另一个
指定目标操作数的字长。AT&T 的符号扩展指令的为“movs”,零扩展指令为“movz”(相应
的Intel指令为“movsx”和“movzx”)。因此,“movsbl %al,%edx”表示对寄存器al 中的
字节数据进行字节到长字的符号扩展,计算结果存放在寄存器edx中。下面是一些允许的操
作数扩展后缀:
bl: 字节->长字
bw: 字节->字
wl: 字->长字
跳转指令标号后的后缀表示跳转方向,“f”表示向前(forward),“b”表示向后(back)。
例:
jmp 1f
1: jmp 1f
1:
6、指令
INTEL 汇编与AT&T 汇编指令基本相同,差别仅在语法上。关于每条指令的语法可以参考I386 Manual。
-
2004-04-02
大一时C语言期末作业(模拟TC环境) (二) - [Windows]
大一时C语言期末作业(模拟TC环境),留念:) (二)
[code]
void pulldown(int n) /* xia la cai dan */
{
int i,j;
if(n==9||n==10||n==12)c=0;
else c=1;
if(num<11)gettext(count[n][1],count[n][2],count[n][3]+c,count[n][4]+1,buf4);
window(count[n][1]+1,count[n][2]+1,count[n][3]+c,count[n][4]+1);
textbackground(0);
clrscr();
window(count[n][1],count[n][2],count[n][3],count[n][4]);
textbackground(15);
textcolor(0);
clrscr();
box(2,1,count[n][4]-count[n][2]+1,count[n][3]-count[n][1],n);
for(i=0;i<count[n][4]-count[n][2]-1;i++)
{
if(*menu[n][i]!=’1’)
{
gotoxy(4,i+2);
textcolor(0);
cprintf("%s",menu[n][i]);
textcolor(RED);
for(j=4;j<14;j++)
{
if(menu[n][i][j-4]==redmenu[n][i])
{gotoxy(j,i+2);
cprintf("%c",redmenu[n][i]);
break;}
}
}
}
gettext(count[n][1],count[n][2],count[n][3],count[n][2]+1,buf1);
gettext(count[n][1],count[n][2],count[n][3]+c,count[n][4]+1,buf2);
if(n>10)gettext(count[n][1],count[n][2],count[n][3],count[n][2]+1,bufmenu1);
textbackground(2);
textcolor(0);
gotoxy(3,2);
cprintf(" %s ",menu[n][0]);
textcolor(4);
for(j=4;j<14;j++)
{
if(menu[n][0][j-4]==redmenu[n][0])
{
gotoxy(j,2);
cprintf("%c",redmenu[n][0]);
textcolor(0);
}
}
putlast();
}
void updown(void)
{
int j;
if(num==10||num==9||num==12)c=0;
else c=1;
puttext(count[num][1],count[num][2],count[num][3]+c,count[num][4]+1,buf2);
start2:if(num<11)puttext(count[num][1],y,count[num][3],y+1,buf1);
if(num>10)puttext(count[num][1],count[num][2]+y-2,count[num][3],count[num][2]+y-1,bufmenu1);
if(key==0x4800)y=y==2?count[num][4]-count[num][2]:y-1; /*up*/
if(*menu[num][y-2]==’1’)y=y-1;
if(key==0x5000)y=y==count[num][4]-count[num][2]?2:y+1; /*down*/
if(*menu[num][y-2]==’1’)y=y+1;
putlast();
if(num<11)gettext(count[num][1],y,count[num][3],y+1,buf1);
if(num>10)gettext(count[num][1],count[num][2]+y-2,count[num][3],count[num][2]+y-1,bufmenu1);
textbackground(2);
textcolor(0);
if(*menu[num][y-2]!=’1’)
{
gotoxy(3,y);
textcolor(0);
cprintf(" %s ",menu[num][y-2]);
textcolor(4);
for(j=4;j<14;j++)
{
if(menu[num][y-2][j-4]==redmenu[num][y-2])
{gotoxy(j,y);
cprintf("%c",redmenu[num][y-2]);
break;}
}
}
key=bioskey(0);
switch(key)
{
case 0x4800:
case 0x5000:goto start2;
default:break;
}
return;
}
void review() /*close cai dan*/
{
int j;
if(num==10||num==9||num==12)c=0;
else c=1;
if(num<11)puttext(count[num][1],count[num][2],count[num][3]+c,count[num][4]+1,buf4);
if(num>10&&num!=15){puttext(38,2,80,23,buf3);pulldown(count[num][0]);num=count[num][0];}
if(num==15){puttext(38,2,80,23,buf3);pulldown(8);pulldown(12);num=count[num][0];}
if(num<11)
{
window(1,1,80,2);
textbackground(15);
textcolor(0);
gotoxy(count[num][0],1);
cprintf(" %s ",mainmenu[num]);
textcolor(4);
gotoxy(count[num][0],1);
cprintf(" %s",redm[num]);
}
return;
}
void box(int startx,int starty,int high,int width,int n) /*box*/
{
int i,j;
gotoxy(startx,starty);
putch(0xda);
for(i=startx+1;i<width;i++)putch(0xc4);
putch(0xbf);
for(i=starty+1;i<high;i++)
{
gotoxy(startx,i);putch(0xb3);
gotoxy(width,i);putch(0xb3);
}
gotoxy(startx+1,width);
for(j=0;j<16;j++)
{
if(*menu[n][j]==’1’)
{
gotoxy(startx,starty+j+1);
putch(0xc3);
for(i=startx+1;i<width;i++)putch(0xc4);
putch(0xb4);
}
}
gotoxy(startx,high);
putch(0xc0);
for(i=startx+1;i<width;i++)putch(0xc4);
putch(0xd9);
}
void putlast() /*zhuang tai lan*/
{
window(1,25,80,25);
textbackground(15);
textcolor(4);
clrscr();
cprintf(" F1 ");
textcolor(0);
cprintf("Help ?%s",menui[num][y-2]);
window(count[num][1],count[num][2],count[num][3],count[num][4]);
return;
}
void outbox()
{int i;
window(20,5,50,15);
textcolor(15);
textcolor(15);
clrscr();
putch(0xc9);
for(i=2;i<30;i++)putch(0xcd);
putch(0xbb);
gotoxy(3,1),cprintf("[ ]");
gotoxy(15,1),cprintf("%s","Message");
for(i= -
2004-04-02
大一时C语言期末作业(模拟TC环境),留念:) - [Windows]
今天整理电脑,看到我大一时写的这个程序
用TC写的模拟TC开发环境界面,应该算是我的第一个程序,代码可能比较乱[face10]
[CODE]
#include <process.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>
#include <stdio.h>
void init(void);
int read(int *mx,int *my,int *mbutt);
int control(int mx1,int my1);
int mouse();
void outbox(void);
void run(void);
void drow(void);
void pulldown(int n);
void updown(void);
void review(void);
void putlast();
void box(int startx,int starty,int high,int width,int n);
char *mainmenu[]={"?,"File","Edit","Search","Run","Compile","Debug","Project","Options","Window","Help"};
char *menu[17][20]={
{"Repaint desktop","1","GREP","Turbo Assembler","Turbo Debugger","Turbo Progiler"},
{"New","Open... F3","Save F2","Save as...","Save all","1","Change dir...","Print","Dos shell","1","Quit Alt+X"},
{"Undo Alt+BkSp","Redo Shift+Alt+BkSp","1","Cut Shift+Del","Copy Ctrl+Ins","Paste Shift+Ins","Clear Ctrl+Del","Copy example","1","Show clipboard"},
{"Find...","Replace...","Search again Ctrl+L","1","Go to line number...","Previous error Alt+F7","Next error Alt+F8","Locate function..."},
{"Run Ctrl+F9","Program reset Ctrl+F2","go to cursor F4","Trace into F7","Step over F8","Arguments..."},
{"Compile Alt+F9","Make F9","Link","Build all","1","Information...","Remove messages"},
{"Inspect... Alt+F4","Evaluate/modify... Ctrl+F4","Call stack... Ctrl+F3","Watches ","Toggle breakpoint Ctrl+F8","Breakpoints..."},
{"Open project...","close project","1","Add item...","Delete item","Local options...","Include files..."},
{"Application...","Compiler ","Transfer...","Make...","Linker ","Librarian...","Debugger...","Directories...","1","Environment ","1","Save..."},
{"Size/Move Ctrl+F5","Zoom F5","Tile","Cascade","Next F6","Close Alt+F3","Close all","1","Message","Output","Watch","User screen Alt+F5","Register","Project","Project notes","1","List all... Alt+0"},
{"Contents","Index Shift+F1","Topic search Ctrl+F1","Previous topic Alt+F1","Help on help","1","About..."},
{"Add watch... Ctrl+F7","Delete watch","Edit watch...","Remove all watches"},
{"Code generation...","Advanced code generation...","Entry/Exit code...","C++ options...","Optimizations","Source...","Messages ","Names..."},
{"Settings...","Libraries..."},
{"Preferences...","Editor...","Mouse...","Desktop...","Startup...","Colors..."},
{"Display...","1","Portability...","Ansi violtions...","C++ warnings...","Frequent errors...","Less frequent errors..."},
{""}};
char *menui[16][20]={
{"Repulldown the screen","1","Transfer to this program","Transfer to this program","Transfer to this program","Transfer to this program"},
{"Create a new file in a new Edit window","Locate and open a file","Save the file in the active Edit window","Save the file in the active window under a new name","Save all modified files","1","Change the current working directory","Print the contents of the active window","Temporarily exit to DOS","1","Exit Turbo C++"},
{"Undo the previous editor action","Redo the previously undone editor action","1","Remove the selected text and put it in the Clipboard","Copy the selected text and put it in the Clipboard","Insert selected text from the Clipboard at the cursor position","Delete the selected text","Copy program example from the Help window into the Clipboard","1","Open the Clipboard window"},
{"Search for text","Search for text and replace it with new text","Repeat the last Find or Replace operation","1","Move the cursor to a specific line number","Move the cursor to the position of the previous message","Move the cursor to the position of the next message","Search for a function declaration while debugging"},
{"Make and run the current program","Restart the program from beginning","Run t -
2004-04-02
早期Linux 系统开发的主要贡献者 - [Linux]
从Linux 的早期源代码中可知,Linux 系统的早期主要开发人员除了Linus 本人以外,最著名的人员之
一就是Theodore Ts’o (Ted Ts’o)。他1990 年毕业于MIT 计算机科学专业。在大学时代他就积极参加学校中
举办的各种学生活动。他喜欢烹饪、骑自行车,当然还有就是hacking on Linux,后来他开始喜欢起业余无
线电报运动。目前他在IBM 工作从事系统编程及其它重要事务。他还是国际网络设计、操作、销售和研究
者开放团体IETF 成员。Linux 在世界范围内的流行也有他很大的功劳。早在Linux 操作系统刚问世时,他就怀着极大的热情为linux 的发展提供了maillist,几乎是在Linux 刚开始发布起(1991 年开始)就一直为Linux 做出贡献的人,
也是最早向Linux 内核添加程序的人(Linux 内核0.10 版中的虚拟盘驱动程序ramdisk.c 和内核内存分配程
序kmalloc.c)。直到目前仍然从事着与Linux 有关的工作。他当时在北美洲地区最早设立了linux 的ftp 站
点(tsx-11.mit.edu),而且至今仍然为广大linux 用户提供服务。他对linux 作出的最大贡献之一是提出并实
现了ext2 文件系统。该文件系统已成为linux 世界中事实上的文件系统标准。最近他又推出了ext3 文件系
统,大大提高了文件系统的稳定性和访问效率。作为对他的推崇,第97 期(2002 年5 月)的linuxjournal
期刊将他作为了封面人物,并对他进行了采访。目前,他为IBM linux 技术中心工作,并从事着有关
LSB(Linux Standard Base)等方面的工作。
Linux 社区中另一位著名人物是Alan Cox。他原工作于英国威尔士斯旺西大学(Swansea University
College)。刚开始他特别喜欢玩电脑游戏,尤其是MUD(Multi-User Dungeon or Dimension,多用户网络游
戏)。在90 年代早期games.mud 新闻组的posts 中你可以找到他发表的大量posts。他甚至为此还写了一偏
MUD 的发展史(rec.games.mud 新闻组,1992 年3 月9 日,A history of MUD)。由于MUD 游戏与网络密切
相关,慢慢的他对计算机网络开始感兴趣。为了玩游戏并提高电脑运行游戏的速度以及网络传输的速度,
他开始接触各种类型的操作系统,为他的游戏选择一个最为满意的平台。由于没钱,即使Minix 他都买不
起,当Linux 0.11 和386BSD 发布时,他考虑良久总算买了一台386SX 电脑。由于386BSD 需要数学协处
理器的支持,而386SX 中是不带的,所以他安装了Linux 系统。于是他开始学习带有免费源代码的Linux。
开始对Linux 产生了兴趣,尤其是有关网络方面的实现。在关于Linux 的单用户运行模式问题的讨论中,
他甚至赞叹Linux 实现的巧妙(beautifully)。Linux 0.95 版发布之后,他开始为Linux 系统编写补丁程序(修改程序)(记得他最早的两个补丁程序,都没有被Linus 采纳),成为Linux 上TCP/IP 网络代码的最早使用人之一。后逐渐加入Linux 的开发队伍,并开始成为维护Linux 内核源代码的主要负责人之一,也可以说成为Linux 社团中在Linus 之后最为重要的人物。以后Microsoft 公司曾经邀请他加盟,但他却干脆地拒绝了。从2001 年开始他负责维护Linux 内核2.4.x 的代码(Linus 主要负责开发最新开发版内核的研制(奇数版,比如2.5.x 版)。
《内核骇客手册》一书的作者Michael K. Johnson 也是最早接触Linux 操作系统的人之一(从0.97 版)。
他还是著名Linux 文档计划(Linux Document Project - LDP)的发起者之一。曾经在Linux Journel 工作,
现在RedHat 公司工作。 -
2004-04-01
找到《Linux内核完全注释0.11(0.95)》一书,爱不释手:) - [Linux]
Linus 在最初开发Linux 操作系统内核时,主要参考了3 本书。一本是M. J. Bach 著的《UNIX 操作系统设计》,该书描述了UNIX 系统V 内核的工作原理和数据结构。Linus 使用了该书中很多函数的算法,Linux 内核源代码中很多重要函数的名称都取自该书。因此,在阅读本书时,这是一本必不可少的内核工作原理方面的参考书籍。另一本是John H. Crawford 等编著的《Programming the 80386》,是讲解80x86 下保护模式编程方法的好书。还有一本就是Andrew S.Tanenbaum 著的《MINIX 操作系统设计与实现》一书的第1 版。Linus 主要使用了该书中描述的MINIX 文件系统1.0 版,而且在早期的Linux 内核中也仅支持该文件系统,所以在阅读本书有关文件系统一章内容时,文件系统的工作原理方面的知识完全可以从Tanenbaum 的书中获得。
Linux 诞生和发展不可缺少的五个支柱:UNIX 最初的开放原代码版本为Linux 提供了实
现的基本原理和算法、Rechard Stallman 的GNU 计划为Linux 系统提供了丰富且免费的各种实用工具、
POSIX 标准的出现为Linux 提供了实现与标准兼容系统的参考指南、A.S.T 的MINIX 操作系统为Linux 的
诞生起到了不可忽缺的参考、Internet 是Linux 成长和壮大的必要环境。
Linux-0.11 版本是在1991 年12 月8 日发布的。在发布时包括以下文件:
bootimage.Z - 具有美国键盘代码的压缩启动映像文件;
rootimage.Z - 以1200kB 压缩的根文件系统映像文件;
linux-0.11.tar.Z - 内核源代码文件;
as86.tar.Z - linux bruce evans’二进制执行文件;
是16 位的汇编程序和装入程序;
INSTALL-0.11 - 更新过的安装信息文件。
目前除了原来的rootimage.Z 文件,其它四个文件均能找到。
Let’s start learning !!!
[face10][face10][face10][face10][face10][face10][face10][face10][face10][face10][face10] -
2004-03-31
修改网卡的MAC地址--最终版 - [Windows]
一、简单的修改方法 (推荐)
其实不论 98 还是 2000 ,自身都已经提供了更改网卡地址的功能,只是平时大家都没上这方面想,因此没有注意到而以,很简单的哦 .....
现在我们先来看看 WIN2000 。在桌面上的网上邻居图标上单击右键,选择“属性”,在弹出的“网络和拨号连接”窗口中一般有两个图标,一个是“新建连接”图标,一个是“我的连接”图标。当然了,如果你的机器上有两个网卡的话,那就有三个图标了。现在假设你只有一个网卡,那就在“我的连接”图标上单击右键,选择“属性”,这时会弹出一个“我的连接属性”的窗口。在窗口下面有一个“配置”按钮,点击该按钮后就进入了网卡的属性对话框了,这个对话框中有五个属性页,点击第二项“高级”页,在“属性”标识下有两项或多项,现在你应该能看到一个叫“ Network Address ”的属性项了吧,点击该项,在对话框右边的“值”标识下有两个单选项,默认是“不存在” ,现在你只要选中上面一个单选项,然后在右边的框中输入你想改的网卡 MAC 地址(注意要连续输入,不要带“-”),如“ 00E0404000A0 ”,点“确定”, OK !你已经大功告成了! 可用ipconfig /all 命令看看修改结果:)
在 98 下面的修改和 WIN2000 下差不多。在“网上邻居”图标上单击右键,选择“属性”,弹出一个“网络”对话框,在“配置”框中,双击你要修改的网卡,出来一个网卡属性对话框。在“高级”选项中,也是点击“属性”标识下的“ Network Address ”项,在右边的两个单选项中选择上面一个,再在框中输入你要修改的网卡 MAC 地址,点“确定”后,系统会提示你重新启动。接下来就不用我说了吧!:)(重启后你可以用“ winipcfg ”看看修改的结果)
如果你想把网卡的 MAC 地址恢复原样,只要选择“ Network Address ”项右边的“没有显示”再重新启动即可。在 WIN2000 下面是选择“不存在”,当然也不用重新启动了。
二、注册表修改的方法
由于驱动或网卡的关系,有的机器中没有“ Network Address ”项,那我们只有通过修改注册表来进行修改了。
◆ Windows2000 的修改
1 、在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000 、 0001 、 0002 等主键下,查找 DriverDesc ,内容为你要修改的网卡的描述,如“ Realtek RTL8029(AS)-based PCI Ethernet Adapter ”。
2 、在其下,添加一个字符串,命名为 NetworkAddress ,其值设为你要的 MAC 地址(注意地址还是连续写)。如: 00E0DDE0E0E0 。
3 、然后到其下 Ndi\params 中添加一项名为 NetworkAddress 的主键,在该主键下添加名为 default 的字符串,其值是你要设的 MAC 地址,要连续写,如: 000000000000 。(实际上这只是设置在后面提到的高级属性中的“初始值”,实际使用的 MAC 地址还是取决于在第 2 点中提到的 NetworkAddress 参数,这个参数一旦设置后,以后高级属性中的值就是 NetworkAddress 给出的值而非 default 给出的了。)
4 、在 NetworkAddress 的主键下继续添加名为 ParamDesc 的字符串,其作用为指定 NetworkAddress 主键的描述,其值可自己命名,如“ Network Address ”,这样在网卡的高级属性中就会出现 Network Address 选项,就是你刚在注册表中加的新项 NetworkAddress ,以后只要在此修改 MAC 地址就可以了。继续添加名为 Optional 的字符串,其值设为“ 1 ”,则以后当你在网卡的高级属性中选择 Network Address 项时,右边会出现“不存在”选项。
5 、重新启动你的计算机,打开网络邻居的属性,双击相应网卡项会发现有一个 Network Address 的高级设置项,可以用来直接修改 MAC 地址或恢复原来的地址。
◆ Win9x 的修改
1 、在 HKEY_LOCAL_MACHINE\system\Currentcontrolset\services\class\net\0000 、 0001 、 0002 等下,找到 DriverDesc 字符串。
2 、在其下,添加一个字符串,名字为 NetworkAddress ,其值设为你要的 MAC 地址,注意要连续写。如: 00E0DDE0E0E0 。
3 、然后到其下 Ndi\params 中添加一项名为 NetworkAddress 的主键,在该主键下添加名为 default 的字符串,其值写你要设的 MAC 地址,注意要连续的写,如 00E0DDE0E0E0 。
4 、继续添加名为 ParamDesc 的字符串,其作用为指定 NettworkAddress 主键的描述,其值可自己命名,如“ Network Address ”,这样以后打开网络邻居的属性,这样在网卡的高级属性中就会出现 Network Address 选项,就是你刚在注册表中加的新项 NetworkAddress ,以后只要在此修改 MAC 地址就可以了。
三、Linux下的修改:
1.必须关闭网卡设备,否则会报告系统忙,无法更改。
命令是:"/sbin/ifconfig eth0 down"
2.修改Mac地址,这一步较Windows中的修改要简单。
命令是:"/sbin/ifconfig eth0 hw ether 00 -
2004-03-27
如何在嵌入式LINUX中增加自己的设备驱动程序 - [Embedded]
如何在嵌入式LINUX中增加自己的设备驱动程序
驱动程序的使用可以按照两种方式编译,一种是静态编译进内核,另一种是编译成模块以供动态加载。由于uClinux不支持模块动态加载,而且嵌入式LINUX不能够象桌面LINUX那样灵活的使用insmod/rmmod加载卸载设备驱动程序,因而这里只介绍将设备驱动程序静态编译进uClinux内核的方法。
下面以UCLINUX为例,介绍在一个以模块方式出现的驱动程序test.c基础之上,将其编译进内核的一系列步骤:
(1) 改动test.c源带代码
第一步,将原来的:
#include
#include
char kernel_version[]=UTS_RELEASE;
改动为:
#ifdef MODULE
#include
#include
char kernel_version[]=UTS_RELEASE;
#else
#define MOD_INC_USE_COUNT
#define MOD_DEC_USE_COUNT
#endif
第二步,新建函数int init_test(void)
将设备注册写在此处:
result=register_chrdev(254,"test",&test_fops);
(2) 将test.c复制到/uclinux/linux/drivers/char目录下,并且在/uclinux/linux/drivers/char目录下mem.c中,int chr_dev_init( )函数中增加如下代码:
#ifdef CONFIG_TESTDRIVE
init_test();
#endif
(3) 在/uclinux/linux/drivers/char目录下Makefile中增加如下代码:
ifeq($(CONFIG_TESTDRIVE),y)
L_OBJS+=test.o
Endif
(4) 在/uclinux/linux/arch/m68knommu目录下config.in中字符设备段里增加如下代码:
bool support for testdrive CONFIG_TESTDRIVE y
(5) 运行make menuconfig(在menuconfig的字符设备选项里你可以看见我们刚刚添加的support for testdrive选项,并且已经被选中);make dep;make linux;make linux.text;make linux.data;cat linux.text linux.data > linux.bin。
(6) 在 /uclinux/romdisk/romdisk/dev/目录下创建设备:
mknod test c 254 0
并且在/uclinux/appsrc/下运行make,生成新的Romdisk.s19文件。
到这里,在UCLINUX中增加设备驱动程序的工作可以说是完成了,只要将新的linux.bin与Romdisk.s19烧入目标板中,你就可以使用自己的新设备test了。






