林's profile不及格的程序员-八神PhotosBlogListsMore ![]() | Help |
|
不及格的程序员-八神海格雷尔的地盘,记录它的生活与快乐!!! March 18 函数的可变数目参数 与 栈 .函数是写程序中被广泛使用的通用模块,目前流行的主要语言或平台一般都支持的可变数目参数,可实现方式大不一样。 就是说当函数被调用时,参数的个数是不固定的。 C/C++的实现 该平台实现可变数目参数的函数,最复杂,它靠调用者将参数压栈传递给它,同时在调用完成函数时,调用者负责清理栈,将栈空间恢复,维持栈平衡。 经典的C语言函数printf就支持可变数目的参数,因为它约定了由调用者清理栈。这种约定很重要,不然调用者清理栈,函数本身也清理栈,栈的结构就会被破坏. 因为只有调用者知道要传给它多少个参数.如果由函数本身清理,就会出现问题,它根本不知道外层都有哪些栈空间传递过来. x86平台下有几种约定方式,c调用协定(支持) 标准调用协定 快速调用协定 this调用协定 clr调用协定 x64调用协定(支持) .NET 平台 以C#为例,它也可以通过在函数中使用params关键字实现可变数目参数(其实是假的,其实即时编译器会成类似数组的参数传过进去),它使用的是快速调用协定,通过cx与dx寄存器传递参数首地址。 由clr运行时的即时编译器来处理计算函数参数的个数与地址。 总之它是假的,并不是真正用像"c调用协定"的方式使用栈空间操作。 WEB平台的javascript 更简单js解析器会在函数范围内维护一个对象(类似数组) ,它包含了全部函数的使用的参数... 不过现在比较时兴将javascript编译成本地码的js引擎,我猜它们的实现方式也应该类似以上两种形式,每家都有各自的高招. March 16 谁发明的 Ctrl + Alt + Del 组合键,以及它在Windows中的重要性.![]() 最初该组合键并不是为最终用户开发的,仅仅是为了帮助当时写程序的人方便重新启动电脑而设计,不用去按电源键(重新加电对电子元件有伤害). 如今Windows 操作系统 赋予这个组合键非常重要的使命,获取登录口令. 没有任何程序可以阻止它,或者偷盗用户输入的口令. 在windows 启动时,系统创建了两个桌面,一个是与最终用户交互的,另一个就是监视 Ctrl + Alt + Del 按键组合的登录桌面. 这就是为什么当你按Ctrl + Alt + Del 组合键时,桌面上的窗口与图标全部消失的主要原因. 操作系统对这个组合键有特别对待,所以其它的程序是无法通过这些来假冒登录窗口或者偷盗用户口令的,因为这是两个不同桌面环境. March 11 儿子的伤心事 每天回家我都会问问儿子在幼儿园的生活,可它并不喜欢回答我. 可能是还不带习惯那里的生活,以前它有妈妈天天陪着,现在没有了,当然要想妈妈了. 另一个原因就是有其它的小朋友根它抢玩具了,或是打架了. 每当我问到:"儿子,今天有小朋友跟你打架没?" 它就开始支支唔唔 语言瘪声瘪气 开始要哭的感觉. 所以它不喜欢回答我这样的问题,总是在闪躲,因为它一回忆,就有一些伤心.... 还指着身上被小朋友碰过的地方,说"好腾 (疼)" 呵呵 然后我又问:"明天还上学吗?",它说"不去了...". 这两天 送它上托 都比较难,连哄带骗的... March 10 用按位或操作将 浮点数 转成 整数use bitwish Operators "|" Convert a floating-point value to an int 0|1.5 = 1 由于位操作只对整型才有意义,所以表达式中的浮点数会首先被js解析器转换成整型. 然后再用js解析器本身的语言(例如:c++)的或操作将算运符两边的数值运算,所以该例的结果得到整数1. February 23 儿子也知道害羞了儿子再过3个月就三周岁了 昨晚我开了一罐可乐,让它帮我拿过来给我和老婆喝. 我们喝了之后,它看上去很着急,连忙说我也要喝,可是这句话它只说出了一半,说到半到就不说了,还把头低下了,有点不好意思. 它看上去真是好玩极了 我最后还是把可乐递给它了,它抱起来 喝了一口 ,美滋儿的. January 11 用WinDBG调试器 修改 星际争霸 等游戏. 再也不需要游戏修改器了 最初我用过金山游侠 不过不是全部游戏它都支持. 已经成功用Windbg 修改本机,以及本地联网,局域网对战模式下 修改金钱. 求生之路联网模式,客户端一直保持着与服务器端的数据包平衡校验通信,服务器端记录着客户端各种数据. 所以枪弹改了也没有用,还是用命令密技吧. 同时还可以修改比如记事本,计算器等程序中的值... 计算器中查询 s -[s]d 000AED40 000b63Fc 270e //9998 s -[r]d 000AED40 000b63Fc 270f //9999 0:001> s -[s]u 000b6000 l300 "9998" 000b6016 0039 0039 0039 0038 000d 000a 0049 0020 9.9.9.8.....I. . Saved 1 hits 记事本中 查 9998中的9,由于是unicode所以查 0039,它代表数字9。 0:001> s -[s]w 000b6000 000b6300 0039 000b6016 0039 0039 0039 0038 000d 000a 0049 0020 9.9.9.8.....I. . 000b6018 0039 0039 0038 000d 000a 0049 0020 0068 9.9.8.....I. .h. 000b601a 0039 0038 000d 000a 0049 0020 0068 0061 9.8.....I. .h.a. Saved 3 hits 0:001> s -[s]w 000b6000 l300 0039 000b6016 0039 0039 0039 0038 000d 000a 0049 0020 9.9.9.8.....I. . 000b6018 0039 0039 0038 000d 000a 0049 0020 0068 9.9.8.....I. .h. 000b601a 0039 0038 000d 000a 0049 0020 0068 0061 9.8.....I. .h.a. Saved 3 hits 0:001> s -[s]u 000b6000 l300 "datagridview" 000b604e 0064 0061 0074 0061 0067 0072 0069 0064 d.a.t.a.g.r.i.d. 000b6144 0064 0061 0074 0061 0067 0072 0069 0064 d.a.t.a.g.r.i.d. 000b625c 0064 0061 0074 0061 0067 0072 0069 0064 d.a.t.a.g.r.i.d. 000b658e 0064 0061 0074 0061 0067 0072 0069 0064 d.a.t.a.g.r.i.d. Saved 4 hits December 15 Google G1 手机上星期六 去小北手机电子市场买了
系统,功能,软件 都很合我心意.
2100元.
儿子自已与奶奶在家呆一天,好像心里明白爸爸,妈妈出去了 也没有閙,就是自已玩这儿玩那儿的.
我们回来一看屋里乱的一团了,能玩的全都已经在地上扔着了 到处都是.
我们一进屋,它眼睛看着我们,小脸马上就笑开了颜,小嘴都合不上了.... 看的出来这是想我们了...
昨天它妈妈领它到卖玩具的小卖店转了一圈,它看哪个都摸一摸,然后再放回去,不说它要.
后来那个店员说了一句,你家孩子真好,别人家的小孩早就要了...
它听后好像明白了,然后就不听话了 喊着说要那把冲锋枪 呵呵
如果是别人家的,它一般都不会说要的,但如果有人说可以买,那就... November 26 软件调试星期四,天气:有雾
最近一些工作中,涉及到一些软件调试的工作,于是上网搜索找到了<<软件调试>>这本书,国内作者中文原创,内容丰富,美不胜收啊嘿嘿
希望还不了解软件调试的朋友们,认真的学习学习吧.
对于刚刚进入此行业的程序员来说,软件调试是一个熟悉又陌生的领域,熟悉是因为经常会听到人说"你调一下程序,看看变量值对不对?",陌生是因为大部分程序员不知道在IDE开发环境中按F5键跟踪程序运行到底发生了什么事儿。
通过阅读<<软件调试>>这本书,你将了解到什么是软件调试.
代码为什么可以跟踪(trace)、调试(debug),
什么是ring0(内核级)ring3(用户级)调试,在书中你都将找到答案.
如果你是新手,本书将带你走入神密的计算机内部世界,了解关于最早的计算机以及调试工具的历史。
如果你是老手,你也许会找到共鸣,回想到以前被软件的bug折磨的日日夜夜,就连做梦都在想究竟哪有问题。
如果你是桌面程序编写者,该书可以成为你的调试参考书。
当Windows发生该死的蓝屏时,当Office程序突然停止响应,你能用本书中学到的知识恢复还没有存盘的文件或者寻找问题的跟源。
如果你是一个Web前端程序员,写javascript代码,会用firebug调试js,你真不想知道背后都有哪些事情发生吗?
通过软件调试技术来跟踪它吧,ie我说不好(没源码),火狐(Firefox)你的却可以。
一本书的内容不能囊获所有,虽然它很厚,但它是国内目前最好的关于软件调试书籍,感谢作者的辛劳与奉献。
想知道的更多,就快找找相关的书吧!
这是我买的两本书,第一次印刷与第二次印刷的, 第一次的比第一次书显的厚一些.
|
|
|||
|
|