自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

剑神一笑的游戏世界

梦开始的地方

  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

原创 实现一个lua 调试器

简介:  LUA没有自带调试器,只提供了一套调试库,可以实现符合自己需要的调试器.晚上没事,改写了一下以前的一个GDB风格的LUA调试器,可嵌入到应用程序中,在需要的时候触发并调试,有需要的朋友可以参考下. 支持如下命令:    h             帮助信息    c             继续动行    s             单步运行(不跳过函数调用)    n         

2009-04-07 22:46:00 7728 5

原创 emacs auto-complete

    晚上在家写自己的网游服务端底层库,休息时在网上闲逛,无意中发现一篇介绍emacs auto-complete的文章,正是自己想要的东西。比hippie-expand使用更方便,快捷。于是便下载下来,配置成功。另补充原文没有详细讲解的二点:    生成etags:在工程目录下执行 find -name "*.h" -or -name "*.cpp" -or -name "*.c"

2009-03-03 21:55:00 2755

原创 人生-游戏

    离最后一次更新这个BLOG,竟有二年了。    看着自己多年前在这留下的只言片句,回忆起过往岁月的点滴,觉得人生就像一场不能存档读档的游戏。    说到游戏,也是有缘,读大学时,我只是喜欢玩游戏,从来没有想过要自己做游戏,也没想到会进入游戏业界。那时候我满脑子想的都是设计,实现一个很酷的语言及其编译器,然后有很多用户来使用它。结果在完成了一个实验性的能跑的PASCAL编译器后,却一

2009-02-23 01:18:00 997

原创 一个emacs扩展,从指定目录或文件中搜索指定关键字

    这段时间在熟悉一套系统的代码,经常要查找某个变量或函数名在哪些文件中被引用到了 ,虽然在linux下面grep一下就行了,但要查看每处的上下文,还是得打开文件.还好用的是emacs,有什么不爽就自己扩展    刚用elisp时倒郁闷了一把,elisp貌视不支持尾递归(??还需查证) ,我一上来就用在scheme中惯用的过程自调用的方式来进行递归查找目录中的文件,结果很轻易就会超过elisp

2007-04-25 20:52:00 7994 8

原创 放弃,才有所得。

     觉得自己在技术上又到了一个必需放弃一些东西的时候了  前段时间学了保护模式编程,就有用WinGDB调试WIN内核,了解一下其内部实现的冲动,也有看看FreeBSD的代码,自己实现一个支持保护模式,多任务,虚拟内存的简单os的冲动.       一直很喜欢编译技术,现在在用lua语言,又有看看lua源代码的冲动。想研究语法和语义,就想看看和面向过程,面向对象完全不同思想的函数式语言,就又有

2006-12-31 15:01:00 1696 1

原创 为什么我用emacs

 本来从未打算过写这类东西,自己用什么只是自己的事,但最近在网上见过很多贴子中的回复,认为用emacs和vi"之流",弃强大的IDE不用,纯属装牛B.  对于这种可能连emacs,vi和记事本的区别都没搞清,却非要把我和其它emacs,vi用户定性为装B的人,实在没啥好说的,算算自己从初三后开始自学编程,到现在也有8年多了吧.由于自学,难免学得杂,不完全回忆,接触过(接触就是起码在上面写过程序,编

2006-12-05 22:47:00 3013

原创 第一次飞行

    开始敲下这段话时,窗外下面正是一片片阳光照耀着的白云,伴随着张学友的歌声,心潮起伏.    虽然从初中起,我就经常一个人坐着火车,汽车东奔西跑,坐飞机却是第一次.早上上飞机前,心里忐忑,必竟还是踏在陆地上踏实.但上了飞机后注意力就放在其它地方上去了,而且,运气好的是我有一个靠窗的位置.    飞机准备起飞了,助跑加速时我没感到太大的不适,然后飞机就斜着,扎向了蓝天.透过弦窗,成都,这个我待

2006-10-12 16:44:00 1517 1

原创 一键在emacs中切换C++ .h文件和.cpp文件

一直用emacs写c++程序,有时候要在.cpp和.h文件中切换,下面的代码可以实现这个功能(绑定到了F11上),要使用的话添加到.emacs文件中即可,郁闷的是调试的时候,因为太久没用正则表达式了,忘了"."符号有特殊的含义而没有加转义符,花了不少时间来查错 :-(      .另外也有.hpp结尾的C++源码文件(例如boost),有需要时可以修改;;定义在cpp文件和.h文件中切换的函数;;

2006-09-18 02:42:00 3566 1

原创 反qj浩方...

    一直喜欢玩魔兽PRG地图,少不了用浩方对战平台,但浩方对我们这些非付费用户一直是另眼相看,广告弹得比你关得还快,今天点快了,一不小心就被其装了雅虎上网助手,受不了了.决定反qj,我的浩方版本是 Ver 4.5.8 Build:0803    先是去掉弹出图形弹出广告,先用spy++查查弹出广告窗口的名字和类名,然后用od重运行GameClient,然后在登陆后,广告弹出前在ShowWind

2006-08-11 19:31:00 2198 8

原创 兄弟们,走好

六月都市的天空,抬头看不见星星.毕业设计,答辨搞定了,然后就是过几天照毕业照,吃散伙饭,哭一场或醉一场.然后4年的大学生活,就这样逝去小陈陈想回夹江考公务员,波波娃可能回他老家德阳,佳娃倒是满怀激情的上班了,大家一天天的改变着.多年后,我们还会记得宿舍里的夜半歌声,电饭煲中的自制火锅吗?倒想起那个笑话,四年学习生活,是我们上了大学,还是大学上了我们,或者接着再被社会强奸 兄弟们,走好

2006-06-15 00:05:00 1863 3

原创 编译器开发: 利用图的拓扑排序算法,计算源代码文件之间的依赖关系

    我们平常所使用的主流编译器,都具有多源代码文件支持.例如把一些类定义在相应的文件中,要使用到这些类时,需要包含定义这个类的文件(如C++),或引用类所在的名字空间(如JAVA),或将这个文件作为单元引用(如Object Pascal)    当我们自己要实现一个支持多源代码文件的编译器时,需要在编译某个源代码文件之前,先编译这个源代码所引用到的文件.例如有一个源文件 a.src,里面定义了

2006-05-22 23:10:00 4525

原创 Saipan编译器结构

我开发中的编译器名字暂时叫"Saipan" ,就是塞班岛的意思,那是个美丽的地方.目前它分为已下几个模块预处理->词法分析->语法分析->语义分析->字节码生成    以及 符号管理,类型系统,属性管理,错误处理 等几个部分,并在语法分析和语义分析中完成一些属性的计算.各个模块大概功能如下:预处理:         目前只是简单的去注释  (已完成)词法分析:     将源代码拆分成一个个的标识符

2006-05-19 23:46:00 2175 1

原创 预处理器,词法分析器完成

预处理器,词法分析器完成,不过这二个只算是编译器中最简单的部分,前路漫漫呐.预处理器很简单,就是去注释.如果打算加上宏或编译指令支持的话,也不大难.词法分析器以前做过PASCAL语言的,这次实现的是一个类C#语言的,需要加上对字符串中转义符的支持.做编译器的好处是,能自己得到很多以前不了解的知识,比如一个语言为什么要这样设计,有的是技术上的限制,有的是语法语义上的考虑,这些都是书上学不到的东西.打

2006-05-10 18:08:00 2541 2

原创 开始吧

    从去年开始,一直想实现一个开源的,纯面向对象的开发语言,做为练手用.但是因为工作忙,一直抽不出来时间.最近闲下来了,准备开始着手设计这个东东 :-)     以我目前的水平和对各种不同类型语言的了解,还远远不能够对主流开发语言的语法,语义,抽象程度等方面做出好的创新.所以决定模仿一个成熟的开发语言,呵呵,还没走好当然不敢跑啦.    我的目标是实现一个语法类似于C#的语言,编译成自己定义的

2006-05-03 17:26:00 1901 2

原创 今天看到二个"编译器",有感.

作为一个立志研究编译器技术的IT从业人员,国人自已的编译器相关的东西比较少.今天在CSDN上看到二条与编译器有关的新闻,我很是感兴趣,点进去一看,却是大失所望.先是第一个,题目是"中国人自已的编译器"根据链接进去一看,却是一个汉化了的ASM.我实在不知道开发语言非要和汉语扯上关系,然后就是中国人自已的了,更不要说汉化了的汇编语言?例如"mov eax, 0" 难道我敲成  "移动数据 数据寄存器,

2006-04-10 22:31:00 4730 23

原创 有必要练习一下口才和演讲的技巧

    昨天公司开技术会议,其中涉及到了我写的一个文档.老总突然叫我给同事们讲一下这个文档.结果我讲的效果十分的差.前言不搭后语,自已都不知道自已在说什么,最后汗水都讲了出来.    不善言辞,性格内向似乎是大部分开发人员的通病,其实我在很熟的朋友面前可不是这样,也能口若悬河,天花乱坠.    有问题要分析,有困难要克服.我先自我分析一下,为什么我在很多人面前讲文档就这么戳呢...    一、紧张

2006-02-25 15:46:00 2193

原创 动态修改其它进程的代码,实现DLL注入

传统的远程进程控制方式有利用HOOK技术注入DLL,和利用远线程在目标进程中建立新的执行线程的方式.远线程不被win9x所支持,而hook技术会对目标进程性能造成一定的影响.并具可以通过枚举消息链的方式发现.本文给出一种动态修改目标进程代码,注入DLL到目标进程的方法,效率高,不需要额外线程.缺点是使用难度大于上面二种办法,并且修改目标代码的方法,受到编译器的影响.使用不同的编译器时,需要根据编译

2006-02-23 10:50:00 5306 9

原创 用C++模拟DELPHI的set数据类型.

很多时候,我希望能用一个变量方便的表示多种状态.例如我有一个窗口类,要表示此窗口是否具有系统菜单,最小化按钮,最大化按钮,帮助按钮,可能需要四个变量来记录.bool hasSystemMenu;bool hasMinimize;bool hasMaximize;bool hasHelp;这样要占用更多的内存.虽然用位域可以节约内存,但操作不方便. DELPHI这点就做得不错,用set of 关键字

2006-02-21 17:30:00 3127 5

原创 给C++添加属性机制(继,得到成员在类中的偏移)

接上篇,时间不够,写得较乱我上一篇给C++添加属性机制的文章中,让属性类得到目标类的类指针,我使用了一个INIT_PROPERTY宏,在前几天和龙子龙孙聊天时,他告诉了我一个技巧,得到类成员在类中的偏移地址,如下(int)(&((type_name*)NULL)->member_name) 例如我有个类 Aclass A{public:    virtual int show() {}    in

2006-02-14 12:51:00 2426

原创 Borland一路走好

今天在CSDN首页看到了 Borland计划出售IDE产品线的消息,心中隐有一丝悲伤.虽然我本身己渐离DELPHI, BCB远去,但Borland一直是我心中最喜欢的软件公司.特别是DOS时代,那经典的TC和Trubo Pascal,还记得用Basic入门的我,用Trubo Pascal编译出第一个exe文件时的兴奋...比现在自已实现出Pascal编译器还兴奋....那狂热的日子...那时Bor

2006-02-09 23:28:00 1559

原创 给C++添加属性机制

    以前用DELPHI和C#时,对DELPHI和C#语法中的属性感到十分方便,在读写属性时能自动调用属性的get, set函数或代码.但我最喜欢的C++中没有属性机制.不过C++提供了范型编程和操作符重载机制,足以让一切变成可能.    假定要添加属性的类是目标类,给C++添加属性机制,我的想法是建立一个类,重载此类的 "=" 操作符,这样给这个类赋值时,会调用此类的operator = 函数

2006-02-08 13:03:00 4562 4

原创 IDA反汇编工具初探

看过>的朋友一定知道吸星大法吧,这是一种可以吸取他人内功来使自己功力增长的神功,(段誉的北冥神功也是这样, 扯远了...).对于程序员来说,增长自己编程功力的一个好方法是阅读其它人开发的程序的源码,从而把别人的技术来消化成为自己知识,这是不是很象吸星大法?但开源的程序毕竟是在少数,大多数程序都只会分发可执行文件及相关文件,这时我们要想查看此程序的代码,就只有把它反汇编,当然这需要一定的汇编功底,但

2003-11-13 00:11:00 13989 1

原创 用跨进程子类化技术实现对其它进程消息的拦载

  大家都知道每个窗口都有默认的窗口函数来进行对窗口消息的处理.  而子类化技术就是替换窗口的窗口函数为自己定义的函数的技术.例如下面的代码:var  Form1: TForm1;  OldWndProc: Pointer;implementation{$R *.dfm}function NewWndProc(hHwnd, Msg, wParam, lParam: LongWORD): Lon

2003-10-09 22:04:00 2864 2

原创 在其它进程中建立线程

  此方法不适用于9x系统  我们知道在NT及以上操作系统提供了一个函数VirtualAllocEx,利用这个函数我们可以在其它进程中申请一块内存,其定义如下  function VirtualAllocEx(hProcess: THandle; lpAddress: Pointer; dwSize, flAllocationType: DWORD; flProtect: DWORD): Poin

2003-09-17 09:02:00 1330

原创 win32调试API学习心得(三)

要学习如何修改被调试进程,先让我们来了解几个与此有关的函数.一.读指定进程内存:ReadProcessMemory  此函数的定义为:function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesRead:

2003-09-15 09:25:00 1970 1

原创 Win32调试API学习心得(二)

上一章讲解了如何用调试API来打开一个被调试程序,并给出了一个简单的例子,这一章将祥细讲解调试消息包含的内容. 类似于消息处理中的消息结构TMessage一样,调试事件也有自己特定的事件结构,那就是TDebugEvent, TDebugEvent在Delphi中的定义为:  TDebugEvent = _DEBUG_EVENT;  _DEBUG_EVENT = rec

2003-09-03 22:42:00 1845 1

原创 Win32调试API学习心得(一)

    最近学习了一下WIN32的调试API,并做了一个简单的调试器,略有心得,特写出来希望对需要的朋友有所帮助.参考资料:lczlion:>               彭春华:>概述:   Windows提供了一组供程序员使用的API,使用这些API,我们能够建立或捆绑到已运行的程序上来对他们进行调试,能获得程序的底层信息和调试信息.如果你原意的话,甚至可以对被调试程序进行任意的修改(用W

2003-08-24 15:33:00 1995

pkpascal 以前读大学时实现的一个pascal编译器

自己以前读大学时实现的一个pascal编译器 以前放的网站被墙了,重新找个地方放

2010-01-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除