上一页 1 ··· 14 15 16 17 18
摘要: 信息 = 位 + 上下文 CSAPP的开篇就明确地强调了这一点,而这次的缓冲区溢出的实验将这句话发挥到了极致。(实验文件见这里) 举个例子:菜刀可以用来切菜,也可以用来砍人。对于厨师菜刀就是切菜工具,对于罪犯就是杀人工具。这里的菜刀就是位,菜刀还是那把菜刀,但上下文(厨师、罪犯)不同了,那么信息(切菜、砍人)也就不同了。断章取义的理解一样事物必然不能看到全貌。 那么放在计算机里的解释就是:一坨01的数据,你可以把它解释成整型、浮点、字符、指令、寄存器。数据还是那些数据,就看你的上下文(解释器、解释方法、组织方法)了,不同的解释结果是南辕北辙的。 ===============level 0== 阅读全文
posted @ 2011-06-09 19:40 chkkch 阅读(5294) 评论(3) 推荐(2) 编辑
摘要: 实验文件:http://files.cnblogs.com/remlostime/bomb.zip 题中给出了一个二进制文件(可执行文件),共6个关卡,每关要输入一个密码才能过关,就像解谜游戏一样,还是很有意思的,同时对于程序(函数,返回值,堆栈的组织)如何运行的有更深的理解。 破解唯一可用的线索就只有这个二进制文件了。这题是对于反汇编能有更深入练习,加上还能熟悉gdb,objdump这类调试工具和反汇编工具。每一关的考察点也是由浅入深。 最开始的时候很没头绪,就只是按照提示用objdump –d bomb把汇编代码整个打印出来,然后大致浏览了一下,差不多几十页的样子,发现其中有六个函数pha 阅读全文
posted @ 2011-05-21 13:16 chkkch 阅读(47889) 评论(6) 推荐(2) 编辑
摘要: CSAPP习题思考(位操作) 现在发现写技术方面的文章真是不容易,不像写随感文,随便热血一下两三个小时就出来了。这篇文章至少用了5、6个小时,但依然感觉没写到位,很多想说的却写不出来。想和说(写)是两种境界,所以每次看pongba洋洋散散五六千字,看着不累而且有趣,其背后的心血和深厚沉淀都不是一时半会儿练就的。记得以前哪个牛人说过:“如何把一个问题解释给一个毫无技术背景但同样很聪明的人听,让别人理解,这才代表自己真正理解了问题。”所以Joel把写作列为优秀程序员的必备素养之一。写作的过程就像和心灵对话,不断在找自己的茬(各种论证的弱点、表述的清晰性、思维过程的总结等等),然后慢慢提高。 言归正 阅读全文
posted @ 2011-04-28 18:25 chkkch 阅读(3076) 评论(5) 推荐(1) 编辑
摘要: 最近在上金博的《计算机原理》。为什么说是最值得上的课,原因有二。 一者,教材是CMU的人写的久负盛名的《Computer Systems:A Programmer’s Perspective》(http://book.douban.com/subject/1230413/),从一个程序员的角度看待计算机的硬件,没有太多的硬件理论知识,而是以如何结合硬件和编译器的角度去写出更高效的程序,debug出那些诡异的错误,如何真正的理解一个程序从启动到运行结束到底在硬件上做了什么,这本书提供了很好的支持。所以这课不像计算机体系结构那般,整天教CPU、流水线、SRAM之类的,我们将来实际不太会接触的理论, 阅读全文
posted @ 2011-04-10 22:52 chkkch 阅读(10487) 评论(23) 推荐(6) 编辑
摘要: 总体概括了我们将要学到什么?1) 避免由计算机表示数字方式引起的数字错误2) 优化C代码3) 缓冲去溢出4) 链接时的错误5) 编写自己的Shell6) 编写自己的Web服务器之后,书中以一个Hello World程序如何在计算机中运作的引出了整个计算机的硬件体系结构。信息是什么?信息就是位+上下文,相同的数据根据不同的上下文可以理解为整数、浮点、命令等等。Hello.c又是如何编译的呢?而Hello的二进制又是如何在计算机中运行的?之后又进一步引出了所有的I/O设备都能被抽象为文件。至此,一个比较粗略的计算机漫游便完成。 阅读全文
posted @ 2011-03-29 21:56 chkkch 阅读(974) 评论(0) 推荐(0) 编辑
摘要: 自从Space关了之后就没再怎么写blog了,也不知道怎么写,但总还是要强迫自己写点什么的,写作的技艺对于表达自己的想法十分的重要,重新捡起来不算件容易的事,但真想做也并非很难。写作的素材就暂定为最近看得一些书的思考和最近的学习吧,虽然并不高深,但总还算是原创。第一本:《深入理解计算机系统》,原书是CMU的本科生课程教材,写得可谓非常之好,用程序员的眼光去看待计算机硬件。不像计算机体系结构那么枯燥,而且非常实用,教你如何写出高质量的程序,如何发现程序中不易被察觉的bug,如何从编译器的角度看问题写程序。这么课在我认为算是复旦计算机学院少有的几门值得一学的课了,非常的基础又非常的重要,如果认真学 阅读全文
posted @ 2011-03-27 23:01 chkkch 阅读(518) 评论(1) 推荐(0) 编辑
摘要: 这次的北大五子棋比赛(http://www.botzone.org/RATE/)给我的受益良多,在AI的博弈算法上算是有了初步的认识,在如何从零开始学习新知,如何组织代码重构代码,如何测试这种种的问题上都给了我许多锻炼。1)如何从零开始学习?最直接的方法莫过于google一下,在过程中发现五子棋的AI资源相对于国际象棋之类的要少得多,但还是有一个网站的资源比较全http://gomocup.wz.cz/gomoku/download.php,基本上记录了所有重要的与五子棋相关的论文了。五子棋的资源相对少的另一个原因是它已被L.V.Allis证明是具有先手必胜策略的棋类,在他的论文Gomoku 阅读全文
posted @ 2011-01-07 21:24 chkkch 阅读(9835) 评论(5) 推荐(2) 编辑
上一页 1 ··· 14 15 16 17 18