世界的规则――给小牛同学的汇编语言推荐书今天中午一醒,看到小牛同学的短信,希望我帮他推荐汇编语言的书,还指明是
X86体系的。其实,想找X86以外的,我也只听说过AT&T体系,就是Linux用的这套,别的完全
不清楚。想着是哪几本对我最有影响,哪几本听说最好,入了神。如烟往事,全都浮现上
来。回忆一下汇编语言吧,也顺便怀念一下与汇编一起出现的朋友。一 学汇编有什么用恐怕不少同学会有这样的疑问。这是C#,是J2EE的时代,是乱七八糟很多新名词
的时代。很多同学都问过这样的问题:为什么我们要学习那些落后的过时的东西。因为汇编语言这种基础的技能,一直也没有过时。而且,它有很多别的用途。就像朋友不能现用现交,想跟人借笔记的时候给人买冰棍,知识也是一样。无论
从事计算机的哪个领域,只要不是打字或者单纯WORD排版,汇编--不仅如此--的
知识总是可以帮助你。当年我打游戏的时候喜欢改。英雄无敌II,三国群英传 是改得比较透彻的。英
雄无敌里,经常带着9999条黑龙,据介绍是不喜欢群居的动物,有强大的物理攻
击力,似乎还对魔法免疫,我常带着这么一大群黑龙,跑遍地图,遇神杀神,所
向无敌。三国群英传,大哥玩得比较多,通关无数遍。我主要负责替他把所有的
宝物都调出来。某马某剑某书,之类的。刘青华同学说,你这么玩就没意思了啊。大致意思是,游戏玩的就是挑战么。确
实,这些游戏改了以后,在我看来也淡而无味。但是我所享受的,不是游戏本身
的乐起,而正在于改。改游戏,锻炼了我对数据段的理解。数据段,正是汇编语言这门课的一个知识
点,涉及到数据以何种格式在内存中存储。大多数游戏都是int型,只有帝国时
代是个例外,是float型。后来破解游戏。就是那种运行的时候需要光盘或者注册码的。注册码和补丁那个
时候还不太好找,所以需要自己动手。soft-ice就是那个时候学会的,bpx,bpe
这样的指令,到现在还没有忘。前一段时间写驱动的时候用到,完全想不起来
了,正感慨,结果一走神的时候,发现指令已经上屏了,手指比大脑记得更牢固。破解游戏需要用到windows api和汇编的函数调用和出口,也涉及到各寄存器和
寻址方式。这全面的锻炼了汇编语言。我推荐的书中,罗云彬先生 就是以破解入手,后来汇编颇有心得。学汇编当然不是为了改游戏和破解软件。它的作用在于,我们可以深入理解C或者
其他高级语言所生成的代码--底层的体系是什么样的,可以调用哪些机制,为什
么会有这样的限制,等等。为什么C语言会是今天的这个样子,或者说,为什么像C语言这样的语言为什么可
以流行很多年,答案需要你学习了汇编语言才能理解。我们很容易向一个人描述什么是 红色。光谱为630-740nm的光就是红光,红光的
颜色就是红色。但是,除非你有视觉,能够亲眼看到红色,否则你永远也不知道
看到红色那是什么感觉。汇编语言作为基础对于计算机工程师的影响也是这样。
你尽可以听我描述它是如何重要,如何构成了计算机硬件和软件的桥梁,如何限
定了软件的功能,也提供给软件基础。但是这都白扯,亲身的体会,写汇编的经
验,是上述文字不能替代的。如果想了解我说的这种感觉,只有成为我。好在,在这一方面成为我并不困难,
学习汇编语言就可以了。IBM-PC汇编语言程序设计(第1版)
http://book.douban.com/subject/1012809/上面这本是我主要学习的,可能是我们教材,不太记得了。现在有第二版了,还
有一本清华的,作者是王爽。 我都没看过,没法评价。刚刚提到的这本,写得
挺明白的,也简单。汇编语言编程艺术
http://book.douban.com/subject/1231288/这本很多牛人说好,我也没看过。Intel微处理器
http://book.douban.com/subject/4872461/这本挺厚,也挺好。看着有点硬,那正是汇编以下的基础。再往后,就可以学习 接口 相关的内容了。二 有时候,汇编确实没有用当年两位师兄说,那些都是扯淡。他们指的就是汇编。一位是唐猛,他去了哈尔
滨的啥学校。毕业以后回来一次,跟我喝酒。彼时我还能喝点,被他灌得不行。
后来就渺无消息了。他当年对于我指出他的学校不重视他的答复是:我会汇编,
人家不需要汇编,那有啥用。另一位师兄是付彤。他去了附中工作,现在干得也好。他刚去的时候,我问,你
计算机好,有用吧。他说:没用,他的师兄问他的,唯一与计算机水平相关的就
是 你打字快不。除了打字快,别的都没用。当然,后来付师兄还组织和参加各
种计算机相关的比赛,用到的应该不只是打字。这种情况可能有一些同学也会遇到。汇编语言真的有用么?是的,它不能帮你倒杯水,也不能帮你把转身而去的女孩拦住。如果说,有用指
这个的话,世界上只有暴力是有用的,你可以随时利用暴少马上得到一些东西。
除此以后,所有的能力的作用都是间接的。如果你的岗位完全不需要你的汇编能力的话,我得说,你找错了岗位。这个世界
上岗位很多,真的存在一些岗位,是不必逢人非得违心地笑的。在那些岗位中,
我们更多的――虽然不是完全――只受到像汇编语言这种自然的和非人为的法则约
束,而不必受到人的评判。当然,那样的岗位,前提是你得具备获得那种岗位的能力。我想举一个不太恰当的例子,不太恰当的原因是有人可能会误解到另一方面。二
战的时候纳粹屠杀犹太人。传说,一位历史学家快要被送去死了,他说了一句话
救了他的命,他说,"我还是个木匠。"我并非指人文科学没有用处,而是指极端的情况告诉我们,有比人为的评判更深
刻的评判标准。我想,大家还记得小学老师对我们的要求,那并非上帝的裁判,
现在你身边一些人的指示,也是如此。三 底层的规则汇编语言突出的特点,还是它是底层的一个代表。它可以让我们更好的理解系统
如何运行。这也可以用来埋汰别人。毕竟,谁对这个世界的规则了解和运用越纯熟,谁就越
具有成为这个世界主人的资格。在这个世界,跟谁是你爸爸叔叔三姨姥爷关系不
大。这种规则,现实世界也一样有。人人网上一位潘同学说:"闪光灯一开,这家伙,满眼的LOGO"。这是一张照片是
标注,照片的内容估计是一条大河,或者海岸,满眼都是商标广告。我想说的是,这些LOGO都是霓虹灯的,是发光,而不是靠吸收光而被人看到的或
者被相机拍到的。所以,第一层,开闪光灯,不会让这些LOGO更亮。如果LOGO离
得近的话,不开闪光灯的效果更好。这也是为什么拍星星拍月亮拍晚上的灯的时候,不应该开闪光灯的原因。第二层,因为你的闪光灯估计非常之烂,所以根本照不了那么远。能照到2米开
外的闪光灯,就已经是那种大个的,你基本不会在旅游的时候携带的。这也是为什么在演唱会的时候拍照不要开闪光灯的原因。除非你也在舞台上,能
把观众都挡住那么近,否则闪光灯除了炫瞎歌手的那啥眼,实在不会让他的脸更
亮从而能让你的小光圈完成曝光。我们为什么能得出这些结论?因为我们对世界规则的了解。对这些规则我们熟练
到这样的程度,无论在什么情况下,我们都不会犯潘同学这样的错误。如果她读
了这一段,估计也记住了。这样,我们因为能够熟练使用世界的这部分规则,所以成为了有用而可靠的人。话说,二战时为什么历史学家要整死,不仅因为他们不能车钳铆电焊,更是因为
他们的工作太有用了――对于敌人有用。越是对敌人有用,越是要整死。不过,这
时我们是否要学习某些知识,就不能以有用这样的价值来衡量了。题外话。四 训练,就是学习与其他工程类课程差不多,而与人文类和某些理科课程不一样。汇编语言只有在
实践中才能真正理解。所以,一定要练习。做书上的习题是远远不够的。我并不是建议完成书上全部习
题,而是指无论你是否完成书上的习题,都一定要自己设计一些实验,来检验你
学到的知识,你的那些猜想,同时,也借此提高动手的能力。不能随手挥出一拳
都会符合规范的拳手,跟不能挥拳也没有什么差别,更不用说只会用嘴打拳的。一个典范的例子,李记者吹捧典同学的时候提到的。典同学当年学汇编的时候,
自己写了机器码的程序,用ultraedit之类的二进制编辑工具,自己对着指令表
一个字节一个字节写的。我当时说,这其实电子学单片机课程中必然会做的实验,手工把助记符转为机器
码,还要算指令周期。典同学的可贵正在于,他这么做,是没有老师指导的。只有那些在没有优秀教师指导的情况下,仍能复制甚至创造牛人的技术路线的,
才最终具有成为牛人的可能。而训练方法,正是技术路线中最重要的。
Author: 杨 贵福
pics
pics
pics
我们的痛苦
我们的痛苦一 更痛苦的未来一段时间以来,不少朋友跟我提到,我的博客里越来越多的笔误。最主要的原因
是我看不清显示器。看不清楚显示器,看不清楚我写下的东西,再想想越来越惨
淡的未来,我甚至连一个文字也不想写下。刚刚完成俯卧撑,只有50个。因为此前停了两周有余,我已经不敢尝试重新开始
的时候一下子就来100个,那就是又一个月不能做了吧。这两周的后半段,是因为
出差大连,返回就感到虚脱一样,讨论班的时候都不能始终保持注意力集中。在
这种状态下,我不敢俯卧撑。夏天,就是在这种状态下,我徒步约5公里,然后滑
囊炎了。这两周暂停俯卧撑的前半段,停下来的原因非常有趣。那天我左手腕疼,我想,
是真疼呢,还是借口呢?是借口吧。100个俯卧撑以后,我确认了,我的身体没
有骗我,是真的疼,因为这时已经抬不起来了。所以,第二天的俯卧撑是万万不
能了,因为无法支撑。徒步成滑囊炎的那天,也大致如此。我在想,那是借口吧,应该能暴走。我需要
这种体力的宣泄,以保证精神的愉悦。好吧,我想说的是,这就是未来:我需要徒步来保证心情,但是这会带来身体上
的痛苦;身体上的痛苦需要静养,而这会带来精神萎靡。在帝国时代游戏里,我
就是这样被电脑折磨得越来越衰弱最后死掉的--比如缺黄金,黄金需要农民采,
缺农民,农民需要增加房子和肉,房子需要石头,肉需要农民采,石头需要农民
采。农民需要农民,而你需要的,正是农民本身。这时我就会想起赵元良老师教导我的,这时受的苦与未来要经历的事相比,不过
是非常小的一点。是的。后来的实践证明,确实如此。这是非常可怕的影像,未来,只会越来越惨
淡,所以此刻就是最好的时光。如果想做什么,想实现什么,去做,就在此刻。
以后只会时间越来越少,越来越不可能完成。二 更痛苦的人,更准确地说,更惨的人前几天与建一谈人生。我提到,你就是太顺利了啊。建一反驳,不是的,我如何
如何不顺。我说:如果我高考失利,就只能去卖瓜子了。估计第二天就得去,我是没有机会
复读的。接下来我要说的,就与建一无关了。我比你还惨,也许,这会让你好受一点。当然,我真正想说的是:你并不怎么
惨,所以不用叫喊得那么大声。我之所以一直也不叫,是因为我看到那些比我还惨的人。他们总浮现在我的面
前,我还没有资格喊出声。我想到那些甚至没有机会受到教育的人,各种原因的。
本来他们可能是我的同学,甚至我的师长。我们本来有机会平等讨论很多更深刻
的问题。而现在,他们有些永远生活在出生地十几公里以内的地方,有些只与我
们讨论这把大葱到底有没有占你的便宜,有些只有试图欺骗或利用我们的时候才
会和我们说话--他们甚至并不觉得某些行为是错误的。我们认为自己很可怜,当我们感到自己的痛苦的时候。而还有一些人,他们比我
们更可怜,他们甚至不觉得痛苦,因为他们从来也没有看到更幸福的生活。不是
他们懒惰不去阅读和思考,而是生活从来没有给他们机会。三 那些似乎本应痛苦的人大连ACM-ICPC比赛中,我见到两个特别值得一提的同学。其中一位,我们看到他
拄着双拐走出赛场。他正与一位老师讨论比赛的意义,那位老师说:这样,我们
就会再有机会派队来参赛了。他让我想起瀚哥,参赛的意义,他当年曾经问过我。另一位让我印象深刻的同学,似乎是有白化病的。这一点确实引人注意,不过,
真正让我记住他的,是另外两件事。一件是,他读题的时候,眼睛贴近纸,距离
也就一寸左右。他读题的方法是标准的行扫描,我没有眼镜的时候也只能这样,
所以有点经验,这时完全无法看清题目全貌,你不得不记住所有的东西,然后在
大脑中重建。要清晰地记住,不能忘,因为回头重读的代价很大。第二件让我记
住他的事情是,他的赛队做出了七道或者八道题目。这次比赛完成题目最多的队
伍有两支,分别是九道题目。我们没有办法去可怜这两位似乎本应痛苦的同学,因为我们没有资格,他们远比
我们强大。四 假如只有三天光明其实,比三天光明更惨,我们无法得知属于我们的未来还有多久,也许还不足三
天。即使比三天更长,也是越来越惨淡。总体趋势只会更坏,而不是暂时如此。在这
样的情况下艰难前行,有时间甚至都不知道是为了什么。不过你看,我们毕竟还有三天光明可以注视,比那些先天失明从未看到过阳光的
人要幸福得多。毕竟,还有三天。好好珍惜吧。
单反训练
pics
大连,第36届ACM国际大学生程序设计竞赛,亚洲区大连赛区预选赛。
大连,第36届ACM国际大学生程序设计竞赛,亚洲区大连赛区预选赛。目前的战况,最牛的队已经完成8道题了,我们两个队,每个队2道题。软件工程
实践的数据告诉过我们,最牛的程序员一个人可以抵得上十个程序员。诚哉斯言。昨天,热身赛前,和两位教练去赛场里转了一圈。最靠近门口的,刚好是清华的
一个队。一位女同学正站在那里,我从她的视线里穿过,看到她漠然的目光看着
不知道什么地方。不高,消瘦,黝黑。我想起了当年哈尔滨比赛那个初中生,一
个人作为一支队伍,这支单人队伍完成了3道题,似乎排名也颇靠前。太多牛人值得羡慕了。前几天柴同学转了一篇文章,提到某某人是如何出名的,里面提到这位牛人最初
跟宿舍同学打赌,说自己能在一小时里完成一个 facebook instance。柴同学在
最后评论:这些都是扯淡,羡慕他的那些同学,你能在一小时内完成一个这样的
程序么,连环境都搭不起来吧。我猜想,柴同学的意思是:别只羡慕别人的成绩,多看看差距和实力。赛场的旁边是另一个赛场,运动会。枪声一响的时候就有很多人大喊大叫,为赛
道上的人助威。让我想起,足球,很多应该锻炼的人在看台上,为那些锻炼过度
的人加油。想起达拉斯小牛得了冠军,大家都很兴奋,开始历数经理(?)十一年如一日的
坚持,因而有如今的成就,以此励志。可是,我们坚持过么?坚持过多久?几次?我们还有多少时间可借坚持,或者挥霍?昨天爬牛角山,海拔不到200米,从山脚算起估计几十米。有同学累得不行。怎么
说呢,大家都觉得我的评论是开玩笑。我说:如果现在日本人打回来了,国家要
带咱们跑,你又跑不了,只好被抓住,抓拄以后就是严刑拷打,严刑拷打以后你
就投降了,投降以后就只能做汉奸啦。某个同学说:国家要是都需要咱们跑...好
吧,当成玩笑吧。即使不打仗,现在踢足球、做机器人、电子设备、编程序,哪
个我们又能比过人家了。好吧,那些都是咱们国家别人的事,哪些是我们的责任呢?很快就要结束比赛,无线网就要没了。说点别的。其实,此时在比赛现场,我想起很多。第一次去哈尔滨比赛,关同学在赛场里坐
立不安,我让志愿者给她送去咖啡;胡同学在进场前要求不比了,结果她们队做
出来三道题;我在上面走来走去,明明看到建一他们很高兴,汽球却迟迟不来,
原来是志愿者送得慢了。今天中午,秦同学来看我们,YMH,周老师,我,一起和秦吃了饭。他东北大学
研究生毕业以后在电信(网通?联通?还是记不住)工作,看起来过得不错的样
子。人还是腼腆,不过成熟多了。他已经两个多月没有徒步了,希望保重。我还想起来前几天座谈的时候,有同学希望计算机系的同学可以晚熄灯,我当时
讲的:如果你意识到生命是有限的,你的时间就会多出很多。其实,你永远也不知道,还有多么少的时间。
大连,诡异之城
大连,诡异之城坐901到星海广场,然后徒步整个下午。周,偶像,我,还有三位同学。另三位同学宅在宾馆里,说是做题了。广场上排布了一些游乐设施,但是游人稀少。游人比设施还要少,海风从设施周
围空荡荡的空间上穿过。许多巨大的海盗船跳楼机在空中摆来荡去,座位上空空的。空气里充斥着音乐声
和惊叫声。也不知道那惊叫声是否事先录制的。有时候能看到设施里伸出来两条
腿,远远地看去,以没有一丝云彩的蓝天为背景,不辨真假。也许那腿只是模型
吧。这一次开动的时候放上去,下一次,再换个位置,好象始终有人在玩的样子。有个大转盘似的东西,不停地剧烈振动,飞快旋转。转盘的周围坐着些轻年男
女,一直叫喊;中间站立着一位青年,施施然稳如泰山。我说:他站的地方似乎
转得慢啊。周老师说:他在中间。我说:他的角速度慢,角速度比周围的人慢。
他面对的人一直在变。偶像说:他的脚在动,他自己在转。可是,我分明看到他的脚跨立着,很少移动。而当时,我忘记打开相机的录像功
能。这次出行,我忘了带来总是随身携带的相机,一直在用周老师的。拍了很多照片,包括那些没有人玩的海盗船,摩天轮,各种转来转去的东西,没
有一个乘客,却驶来荡去。回去发上来。说到这想起来,这之前看到 蹦极的。似乎是位女士,按喇叭的要求挺胸抬头,背
向后弯着,变成了蓝天上的剪影。与此同时似乎是偶像喊了一句,"被推下去了"。
她后面的皮筋伸长缩知,几个起落,最后被拽到下面的船上了。那个剪影女士,有朋友在下面尖叫助的,可能也是个模型,而尖叫声是播放的?
告诉大家,真的有人蹦极,你也不妨一试。再之前,我们路过海滩。阳光极其明亮,海风却一点也不热。海滩上很多皮肤非
常白的家伙,仔细看,都是老外。我还看到有人披着极大的裙子,就像三毛提到
在撒哈拉里用来上厕所的那种装备,作用也是相同的--而这里是大连。周老师
说:经常下海的人,都会准备这装备。也有道理,厕所一元钱一次,我用过最贵
的。建筑风格,人群,都似乎是另一个国度。只有两次让我清楚意识到,没错,还是
这里。一次是我们跳上浮桥,浮桥在浪里起伏,尽头是快艇。有个小伙的声音在
身后远处喊,"下来"。另一次,有人朝两个小伙喊,"别扔石头砸着船。"这两声
大喊,都是纯正的胶东方言。现实,扑面而来。但是,这是最初发生的事情。此后的几个小时,我们如同穿过了某个隧道,也
许,至今还没有回来。另,我还在看 鬼吹灯,看到进入日本满蒙黑风口要塞一段。诈尸和小孩的一段。好在,我仍能通过网线了解人间之事。李记者的药量降了一些,因为胃肠反应太
严重,打针被白扎了两下;有同学正努力项目,刻苦得有点过头了似乎;有同学
们似乎在周四的时候没有出席,也忘了请假,黄同学提到一嘴,估计太温柔,没
有人能听懂。另另,此刻,偶像在审别人的文章,说太烂了,不得不拒,这之前还说要攒人品。
此刻,周老师东拼西凑,从一边墙引出网络,从对面的墙引出电源线,正查四川
赛区的八卦。另另另,最后一段徒步,就是大连理工大学里面,我发地图的那段,最诡异。我
看到了非常亮的路,非常黑的小林子。还有似乎有很多人声的体育场,灯火通明
的剧场,五四时期一样的大学生们在群情激昂。为了确定他们和她们是正常人
类,我凑近了问路。奇怪的口音。还有很多,今天不说了,以后单独告诉你。