《疯狂的程序员》55
七八月份,京北的天气确实要比南方好得多。下了火车,绝影才觉得首都无非也就是这样,想起小的时候别人问他长大了想去哪里,便奋兴地答道:想去京北,想去长城,想去**看升国旗。――去**看升国旗,那可是一代人的梦想啊。
可是慢慢地时易事移,现在这一代,又本不屑“去**看国旗”你问他们长大了想去哪里,便奋兴地答道:想去港香澳门,想去国美加拿大。以至于“去**看国旗”都成了一块笑料,那《狂疯的石头》里去京北领奖那个**前升国旗的镜头加上“我爱京北**”的背景音乐就是一个证明。
想起《狂疯的石头》,绝影马上就想起BugYang,那小子自从看了《狂疯的石头》便在办公室里时不时的哼两句“我爱京北**…”或者一个问题思考半天还没找到解决办法,便拍着脑袋自言自语道:“石头儿,我要的是石头儿!”
那BugYang肯定是很想来京北的,一来到京北必定被委以重任,正是证明自己实力的大好时机,说实话在公司那DAP做着实在没什么意思,据说绝影都已经把他做死了,现在让却让自己来给他收拾残局;二来还可以实现他看升国旗的理想,到现场去演绎一下“我爱京北**”这个绝影心里很清楚,但绝影肯定不会让BugYang跟他一起去京北,这点BugYang心里也很清楚,所以二人心照不宣,谁都不说破。
张厂长比绝影早一天到京北,跟陈董一起来街他,京北正是陈董的故乡,走的时候周总就悄悄告诉他,说啥不好都行,千万别在陈董面前说京北不好。京北什么都好,舂天风沙没有內蒙古大,夏天比四大火炉凉快,秋天有枫叶,冬天比吉林哈尔滨暖和。虽然绝影不太爱说客套话,但第一句还是学着国美人的腔调道:“哦,今天的天气真好啊。”
陈董拍拍绝影的肩膀说:“小绝啊,你终于来了,这次CASE很紧迫啊,你从来没让我们失望过,所以这次非得你亲自出马,其它人都不行。走,咱们先吃饭,边吃边说。”
吃饭的地方是在火车站对面的永和大王,因为是早晨,只是一顿简单的便饭,陈董一边吃一边说:“听周总说EB那个项目死掉了,当然,这不怪你,商务上的事情还是该由我来负责,也正因为EB失败了,所以这个CASE才尤为重要。EB上我们投⼊了那么多时间经历资金,现在弄得我们很被动,所以我们急需用这个CASE来缓解一下被动局面,当然,如果这个CASE做得好,对我们来说,意义绝对不比EB小。”
陈董一边说一便比划,张厂长⼲脆放下碗筷全力以赴来倾听。说实话一个软件公司,居然专门把自己这种“⼊门级”菜鸟程序员调来搞这CASE,看来这CASE是大有猫腻。绝影刚下火车,肚子饿得不行,一边大口大口吃包子,一边时不时点头嗯两声。
“咱们这次要做的,是对一个片进行逆向。京北这边一家公司生产一种小型DR,这里面有块重要的控制片,是Motorolar的,现在这种片停产了,他们本买不到,又没有源代码,现在是急得团团转,没有片他们还搞个庇的DR啊?我想起小绝前几次做了些逆向工程的工作,有点经验,所以就把这CASE接下来,先试一试吧。要是我们成功了,我跟他们谈的是他们所有DR上用我们的工作站,一年下来,也至少有五六十套订单啊。”
听到“逆向工程”这个词,绝影突然又不觉得饿了,马上来了精神,饭也不想吃了,连忙说:“片在哪里?看看先。”
“我这没有片,不过有个48K的Bin文件,小绝你看看能不能把他逆向出来,最后逆向成C代码,这样我们就可以选择任何一种片来重新开发了。”
陈董这句话是站着说话不疼,就凭一个Bin,要逆向一个片,还弄成C代码,谈何容易,绝影马上说:“这基本不可能。完全反汇编还有点希望,要想逆向成C代码,估计只能部分。”
“弄不出来也没关系,尽量试试,总之,我们的目的是用另外一种片实现它的功能。我想,逆向是这里面是一项很重要的工作。”
两人谈到这里,一向不爱发言的张厂长这次却揷嘴道:“我想还有个办法,绝影刚才说的是从逻辑上逆向,我想从功能上逆向,一快片,无非就是输⼊和输出,我想只要把所有输⼊对应的输出测出来,我们完全可以自己写程序用另外的片实现同样的功能。”
“这也不可能。”绝影马上打断他“一快片有多少输⼊引脚?就算十六个,那也是65536种输⼊,以有限的精力,本不可能全部测出的,而且输⼊的数据都是经过一定的算法来处理,还没见过谁笨到写65536个case语句,再有,关键是时序,如果他的片里有延时怎么办?怎么测,测得精确吗?”
张厂长望望绝影,都不说话了,现在就他们三个,在他们中,绝影在技术上就是权威,而且他不假思索,一二三说都头头是道有理有据,他说了不可能,就不可能。
陈董却说:“小绝啊,这你就太武断了。坦率地说,硬件方面,你的确比不过小张,这也是为什么这次让他来和你一起做这个CASE的原因,他的意见,还是很有参考价值的。”
绝影很不服气,还想说什么,可是陈董并不给他机会,一锤定音道:“就这样,你们俩各自都有自己的方案,就各自用各自的方案先去试试,先做一做再说。”
所以说汇编就是好。这么个Bin文件拿给BOSSLiu,就算他C++牛上天又如何?对他来说还不是就一堆二进制。但用汇编的人看法就不一样,在学校里学微机原理时就学了,汇编分两种,人工汇编和机器汇编,所谓人工汇编,顾名思义就是人工把汇编代码翻译成机器代码。你现在什么宏汇编器C++优化编译器都耍都有模有样又怎么样?要是没有汇编器编译器你还能有用武之地?
所以每当BOSSLiu吹嘘他C++什么虚基类类模板这样东西的时候,绝影都只说一句话:“《少林⾜球》看过么?‘天下武功出少林没听过吗你?’这是放之四海阶准的道理啊:()天下语言出汇编没听说过吗你?”
然后陈董走过来,关节地问:“你们两还需要什么吗?尽管说。”
这时候张厂长滔滔不绝地说:“我需要电庒表电流表,示波器,电阻之类的一些基本电子元件和一块PC板。”好像要东西越多越能体现出他的专业。
绝影却平淡地说:“我只需要一本《DevelopmentGuides》,当然,这个我会自己从网上下载。”好像要的东西越少月能体现出他的效率。
在绝影心中,你拿一大堆先进装备把人质救出来算个啥,不就是一个人质吗?还搞得像老美一样得机飞大炮坦克卫星加特种队部,俺就是要发扬勤俭节约的精神,就一把AWP一把绑匪毙了完事。啥是效率,这就是效率啊,纳税人的钱不是拿来让你拍电影的,公司的钱不是拿来让你体验新产品的。
下载到《DevelopmentGuides》,绝影一头埋在对Bin的反汇编中,也许是软件做得多了,他一直认为张厂长弄不出啥大成果出来,上次也就是弄了个遥控器出来,不过意义不大,除了他们本地那家医院,公司连一套都没卖出去过,到后来,周总把这事都忘了,有一次燕儿从工具箱深处挖出这么一个遥控器来,周总居然拿在手里翻来覆去得大量,还一边说:“这是啥时候买的东西?”越是这样,张厂长也越是想弄出大成果来证明他。
其实对照《DevelopmentGuides》上的指令集,完全可以把Bin反汇编出来,奈何这工作进展实在很缓慢,弄了一个上午,才翻译出一百来行代码,还不到二十分之一,而且还时时担心那一点反汇编错了,哪怕只错一点点,影响到后面代码的定位,后面所有的工作基本就⽩做了。照这个进度,要把这个CASE搞完,只怕只有在京北过年了。
虽然在很多时候懒人都被人鄙视,但不得不承认,懒人的确为我们的社会做了不少贡献,没有人懒得走路,就没有人发明汽车,没有人懒得爬楼梯,就没有人发明电梯,没有人懒得去做人工汇编,也就不会有人发明汇编器。
这一次,要不是绝影懒得去做人工反汇编,他也不会考虑做个反汇编器。不过他在决定做这个反汇编器的时候,心里还是很没底,以前还是菜鸟的时候,就听哪位牛人说:“如果你做出了反汇编器,就尝试做个汇编器,如果你成果做出来汇编器,就可以尝试做个编译器。”说实话从学写程序到现在,开发编译器这东西,尽管绝影很感趣兴,但从来都不敢碰,考软件设计师那编译原理都索全部放弃,为什么?编译器,那实在不是牛人就能做的东西,那是大牛才能做的!
没底归没底,仔细想想,其实这反汇编器也不是那么困难,自己手工反汇编了半天,那反汇编的流程基本已经摸得清清楚楚,在加上这片也设计得简单,还是定长指令集,这真是Motorola公司莫大的恩惠啊。用最笨的办法把每条指令的机器码、作数类型、指令加数据的长度、助记符弄成个结构体,再建一个表,把所有指令都收进去,到时候查表不就行了。
花了一天时间,当这个反汇编器诞生的时候,绝影始终还是不相信自己:难道我离大牛的距离又进了一步了?
马克思说得好,资本家总是不能満⾜的,今天他赚了100%的利润,不要以为他就知⾜了,他仍然会想:明天我怎么才能赚到200%的利润呢?绝影満以为这反汇编器一秒钟之內便能完成手工三四天才能完成的工作,已经是整个CASE里大巨的里程碑,值得自己好好骄傲一阵子。陈董却拍拍绝影的肩说:“小绝啊,真是从来没让我们失望过。现在任务还很紧啊,你看看,抓点紧,试试把那汇编代码翻译成C代码吧。”
绝影听了就想吐⾎,早知如此,还不如就人工翻译,说不定花个三四天功夫,陈董还会让他休息一两天。
虽然明知自己中了资本家的计谋,但绝影还是不知悔改,也许程序员都是这样。这不是因为这个CASE做好了,又能有多少多少奖金,或者一下从技术经理升职成总经理。正如做反汇编器一样,反编译对绝影来说一样也是件很有意思的事情,因为他没做过,什么事情没有做,就不知道有多难,也不知道这里面会遇到什么样的困难,更不知道如何才能解决这些困难。
所以现在的很多年轻人,总以为读书破了万卷,下笔写起程序来就真的如有神助,于是参考书技术资料管他有用没用能下载的挂上BT全天24小时下载,一次就下载个十几G的,比MSDN还大,不能下的就书店图书馆网上书店全都搬回家,不管能不能看懂或者有没有时间看,总之,哪怕放在那里看看封面,也觉得离牛人的距离又进了一步。
有的或者又像BugYang一样认为有个牛人能带带自己,就如《鹿鼎记》中的韦小宝一样:“你赶紧传授我绝世武功吧,我好去卧底。”可是《鹿鼎记》中陈进南不是也说了么:“我看绝世武功的秘籍,用了三年,练功,用了三十年。”
反编译的工作比想像中要困难许多,几条汇编语言组织起来得翻译成得体的C语言,能翻译英文书的人英文都应该算了得了,但是翻译起英文著作来都还是牛头不对马嘴,更别指望这个世界有自动英文翻译器,有,那Google在线翻译,效果实在不敢恭维,就如别人笑你英文菜,说道:“你那英语,简直是Google在线翻译。”
这些绝影自己都没弄透彻,更别指望三五天时间里弄出个反编译器出来。
就在他骑虎难下的时候,张厂长突然大声宣布:“出成果了!”
绝影回头一望,他的表情,和BugYang完成任务时一模一样。
附记:
到今天,地震刚刚过去一周,但它带来的影响远远超过了想像。逝者已经逝去,生者为他们默哀,但生者也还在受着磨折。
这一周来,最大的心愿就是能好好洗个澡,能在上伸直了脚睡一觉,但偶尔冒死回去一下房子又时不时地摇一摇,吓得人提心吊胆。本来下定决心,昨天就回家去住,但刚1点多,又来了次大的余震,房子轰轰地响。赶紧又躲进厕所,叫百万进来,百万还全然不知。今天就再也不敢回家了。
今天在报纸上知道,昨天的那场余震,让江油又失去了13条生命。
一周过去了,露宿的人反而越来越多,明明有自己的房子,却要露宿街头,这里面有多少苦衷啊。
最近今天,朋友们聚在一起,都在讲这次地震,讲自己的亲人朋友,讲北川平武。很多人都说,以后在绵,恐怕不会有北川这个县了。这次我没有去北川,但据去过的朋友形容,相当惨烈,整个地直接沉下去,然后两边山倒下来把它盖上,就像包饺子一样。
女朋友作为支援者去了一次安县,回来就一直哭,说那里好恐怖:房子都倒得差不多了,路上还时不时有人等待救助,也时不时地摆放着一具具尸体。
安置到绵的灾民也越来越多,据说超过了50万。这几天很多人都是哭着去几个安置点寻找自己的亲戚朋友,又哭着从里面出来。
街上时常有警车和救护车经过,现在大部分救护车都是外地的,看了很感动。还有网上看到的捐款什么的,有些人在讨论,谁捐得多谁捐得少。其实捐多少都不重要,因为很多损失,本是没法用钱来衡量的。所以力所能及,能捐多少就捐多少吧,重要的是,希望你能捐出一份心,这个才是灾区民人最需要的。
说实话,刚经历地震的时候,很害怕地震,但是一周过去,我觉得流言比地震更可怕。