
系统
文章平均质量分 62
ybb_y1b1b1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
实践计算机系统要素—编译器(1)
2009.11.08 晚上 于浦东家中 每当有所收获,便欣喜若狂,每每这时都非常渴望能够将这份喜悦与大家一起分享。我读过计算机书籍不能算多,但也不少,给我冲击最大的有三本书,游戏编程大师技巧(3D版),道法自然,计算机系统要素,大师技巧让我感慨怎么能有人将游戏开发讲解的如此透彻,让人感觉直击理论本质;道法自然让我感觉到了软件工程和设计模式在实际中是如何被应用的,计算机系统要原创 2009-11-08 20:56:00 · 957 阅读 · 0 评论 -
插件框架3 插件配置描述规范
配置描述信息主要完成两个事情:1、 定义哪个插件是系统启动主插件;2、 定义了插件的名称、实现功能点、具体的实现链接库; 所以需要两个类型的配置文件,分别形式如下:Plugin Name xxxx xxxxxxxxx原创 2011-09-17 16:27:22 · 998 阅读 · 0 评论 -
插件框架5 插件框架内核
与插件框架内核相关的几个职责:1、 系统启动时加载插件;2、 负责插件的初始化;3、 负责插件的关闭处理;4、 系统结束时释放插件资源;5、 执行主插件 以上是内核模块的职责划分,内核的实现模块划分如下:主模块 负责流程的执行插件原创 2011-09-17 16:28:55 · 1301 阅读 · 1 评论 -
插件框架2 插件规范
规范是什么?规范就是一种行为指导的描述。本质上交流用的语言就是一种应用很广的规范,大家都遵从这样一个规范,所以我写的内容,大家才可以看懂。 我们的插件规范指什么?更加准确或狭义上讲,是插件导出接口规范。也就是规定了插件导出接口的形式,这样插件加载器就能获取该接口,并用约定原创 2011-09-17 16:26:44 · 1706 阅读 · 0 评论 -
插件框架4 内核插件之日志插件
功能需求:能够扩展日志输出类别;默认包含文件输出;能够自定义消息属性;默认三类消息级别;提供简单的日志输出格式,可能有数字,文本的混合 方案:定义一个日志输出类别基类;日志主插件需要主要去加载所有扩展输出类别插件;日志主插件只提供文本原创 2011-09-17 16:28:11 · 1121 阅读 · 0 评论 -
插件框架之小工具插件示例工程
前边有几篇文章专门讲述了对插件框架的设计,本文将主要讲述如何建立一个稍微看上去像个样子点的插件系统示例。 目标系统描述该系统为用户提供了简单的常用功能,类似于一个简单工具包,每个工具包是一个插件。系统启动后自动缩小到系统托盘,在系统托盘的图标上点击鼠标右键弹出菜单,用原创 2011-09-21 23:29:32 · 1199 阅读 · 0 评论 -
插件框架之任务列表插件
简单的任务列表也有存在的意义,意义就是多台电脑之间的同步,同步有多种方式,可以建立一个服务器,也可以将数据按照一定规则存储到某共有的存储器上。但我还希望这个插件具有向朋友发任务的一个功能,并且在任务完成后可以通知任务发出者。 例如,小A有个小东西需要小B来帮忙完成,而小B原创 2011-09-22 21:23:15 · 1426 阅读 · 3 评论 -
插件架构1
插件框架在一定程度上也叫微内核框架,它的本质就是希望提供一组最核心的功能,而其它功能都可以在此基础上通过类似插件的技术来扩展实现。 我在准备开发这个插件框架的时候,首先想到的问题就是,这个“内核”到底该保函哪些东西?插件之间存在什么样的交互?以及如何进行交互? 我原创 2011-09-17 16:25:47 · 2101 阅读 · 3 评论 -
初识Node.js后的总结
在前几天,偶然的时间里,偶然的机遇下,看到了Node.js,发现很火,所以就简单了解了下,还有待更进一步了解。这里先把初步了解的一些信息做下整理。1、 Node.js是什么?简单说,就是可以让JS脚步能够跑在服务器后端上的一个程序。2、 Node.js最大优势是什么?可以利用你原有对JS脚步的知识进行服务器后端开发,虽然说学习一个新的编程语言对很多人来说问题不大,但如果要用好一个语原创 2012-06-30 10:10:45 · 1140 阅读 · 0 评论 -
C++脚本执行引擎
先晒晒代码,以及运行结果:extern "C" void Do(const char* str);extern "C" void DoInt(int);class CX{public:virtual int __attribute__((thiscall)) DoTest1(int i) = 0;};extern CX* pMyClass;原创 2012-11-09 22:57:56 · 2592 阅读 · 1 评论 -
跨平台编译我选择CMake
对于我们所有的程序员来说,我们只愿意将时间尽量放在一个平台上,虽然我们可以熟练使用多个平台操作系统,但很多时候我们只在一个平台上,无它,手熟耳。但我们写的程序往往被客户期望能够运行在多个操作系统上,这样就涉及到跨平台开发,其实更多指的是跨平台编译。对于这个问题,有两个比较鲜明的不同的解决方案,一个是我们使用一种工具,而这种工具可以在不同操作系统下相似的使用,另一个解决方案是通过一个统一的工具,原创 2012-12-01 18:54:36 · 1339 阅读 · 4 评论 -
高级语言如何映射到汇编的映射
语言的设计发展是从低级向高级发展的过程。汇编放一边不说,可以看看C是如何转换为汇编代码,我仅仅是对原理性东西做概要解释,所以有些地方可能不够准确。C语言我可以将程序内容,分为三个部分:变量、结构、函数。 变量一般分为函数内变量,函数外变量,这两者之间是有区别的,函数外变量,最终将被存放在一个全局堆空间,而函数内变量往往通过栈方式来构建出来,或者说是动态存在于栈空间。对于函数外原创 2013-09-01 10:22:25 · 1742 阅读 · 1 评论 -
windows下QT库编译
一、前言因为需要研究TestCocoon,所以就将该程序的源码下载了下来,准备研究看看它插桩是什么样的机制,用CMake生成VS工程的时候,报了不少错,是和QT相关的,也就是说我机子上没有安装QT库,所以没办法,我需要自己编译个QT库了。 二、QT下载我下载的QT原创 2011-08-31 15:36:31 · 2976 阅读 · 0 评论 -
TestCocoon安装使用小记
一、 TestCocoon介绍TestCocoon官方主页可以通过Google搜索到。它是一款支持C++、c#的插桩工具,支持多种编译器,包括VC、Intel C++、GCC、G++等。并提供了执行结果显示的软件。 二、 基本流程TestCocoon主要分为两个处原创 2011-08-31 15:07:33 · 3204 阅读 · 5 评论 -
基于表达式解析的计算器程序代码已经上传
这份代码是我构建计算机系统的万里长征中的第一步中的第一小步,为什么呢?因为第一步是构建编译器,而编译器中表达式的解析虽然很重要,但最多也就是毛毛雨的位置,当然我们这里不考虑商业级别的编译器。代码中注释格式不怎么好,容错性不好,扩展性一般,所以后期将进行很多持续的修改,主要在容错性上,以及变量的识别上做改进。 对于构建计算机系统这个工程来说,最近的里程碑是构建计算机原创 2009-11-19 20:48:00 · 1208 阅读 · 0 评论 -
关于CPU速度浅识
<br /> <br />一直以来我们都知道不同的CPU有不同的频率,但一直没有明白为什么CPU会有频率限制,电子运动不是光速吗?我错了,电子在导线中传输是有速度的,同时电子在导线中移动时,由于导线的阻力,会产生大量的热量。<br /> <br />CPU一般从寄存器取值,计算过后,将结果写入寄存器中,这个过程可以理解为CPU从一个时刻开始,不停同时向几个寄存器取值,但由于距离不同,干扰不同,可能造成电子到达时间不同,例如在0.1个周期时,第一寄存器值已经到达,而第二个寄存器值尚没有到达,但这个时候CPU对原创 2010-09-13 09:34:00 · 653 阅读 · 0 评论 -
计算机的灵魂-时钟
<br /> <br />许久以前,总是认为CPU是计算机的灵魂,但现在我的看法发生了一些变化。CPU作为计算机内部一个非常非常重要的部件存在,所有的运算都基本由它来完成,可谓功不可没,但只能称它为计算机的大脑,为何不能称他为计算机的灵魂呢?因为在我们的意识中,灵魂是一个更加虚无缥缈的东西,也是能够让一副皮囊具有生命力的东西,所以我说时钟比CPU更适合被称为计算机的灵魂。<br /> <br />时钟的魅力<br /> <br />时钟使得计算机不断周期性的进行着周而复始的运算,当CPU运算完一条指令,如何原创 2010-09-22 09:07:00 · 836 阅读 · 0 评论 -
计算机系统要素之汇编编译器
<br /> <br />汇编编译器用来将汇编程序翻译为二进制的机器码程序。<br /> <br />因为是学习计算机系统要素一书而写的这一部分代码,所以,二进制代码和汇编代码规范均采用该书所定规范。<br /> <br />规范描述:<br />1、语法规约和文件格式<br />汇编程序以"hack"为后缀名,二进制代码程序文件以"asm"为后缀名。<br /> <br />二进制代码文件由一行行1和0组成的字符串组成,每行16位,也就是说CPU为16位架构。<br />汇编文件也是由文本组成,每一行代表原创 2010-10-03 11:10:00 · 1339 阅读 · 0 评论 -
Lua与C++交互调用(1)
<br /> <br />1、 Lua脚本对c++接口的调用<br /> <br />1.1 简单示例<br />Lua脚本通过c++链接库调用c++提供的接口。c++提供的链接库需要按某种“样式”书写,才能够被lua脚本调用。<br />先通过一个简单示例来给大家一个很初步的认识:<br />首先建立一个空的c++动态链接库程序;<br />在其中建立test.h与test.cpp两个文件,其内容如下:<br /> <br />// test.h<br />// include headers<br原创 2010-10-12 10:48:00 · 3479 阅读 · 0 评论 -
从堆栈结构说线程的代价
<br /> <br />今天休息,并且也没有什么其它事情需要完成,所以就对程序堆栈进行了调试查看。<br /> <br />以前一直没有认真追究过程序的堆栈,只是觉得书上说的就是对的,并不需要验证,所以对程序堆栈的体会只是停留在书本上的描述。<br /> <br />实验工具:一台电脑,VS2008软件(其它工具也可以了,只是我机子装的是这个IDE)<br /> <br />实验目的:我想知道程序堆栈在内存中如何组织,启动一个线程占用了什么资源?最多可以启动多少个线程?<br /> <br />实验过程:原创 2010-10-16 21:25:00 · 1618 阅读 · 1 评论 -
网络、磁盘、内存哪种方式更适合保存数据?
<br />首先,我需要解释下网络在这里的含义,它并不是指存储到一个可以访问的计算机,而是指本机子的一个网络程序,当前程序通过网络连接将信息发送给对方,由对方进行存储管理。<br /> <br />一般来说,在我们的印象中,保存在内存中速度更快,接着是硬盘,最后是网络。相信很多朋友与我一样,一直对这个想法停留在想象层面,觉得这不需要进行测试验证,就像真理一样,但很对不起,它不是真理,测试完了以后,我都还有一点不敢相信。<br /> <br />测试内容:将20000条记录,每条记录大约60个字符,通过上述三原创 2010-11-11 22:17:00 · 1254 阅读 · 1 评论 -
QML学习(1)
<br /> <br />目标:能够熟练掌握QML的开发。<br /> <br /> <br />第一天:<br />QML是什么?<br />官方有很标准的定义,我个人觉得它是一个脚本语言,能够通过该脚本语言创建动态的场景,有点类似于FLASH。<br /> <br />为什么要学习QML?<br />因为现代程序对界面的需求越来越高,而一般的C++界面设计比较复杂,所以需要一种能够快速建立界面,并且能够很好的与下层逻辑进行衔接的方案,QML就满足了这样的需求。<br /> <br />QML初步理解:<原创 2011-01-24 21:18:00 · 1728 阅读 · 0 评论 -
QML学习(3)
<br /> <br />当你能够随意创建一个对象,随意添加一个交互动作时,你是不是觉得自己已经很NX了?如果这样,那只能说我们的视界还是有点小。<br /> <br />如果能够深入考虑一下问题,就会问自己几个问题,QML真正的优势到底在哪里?和FLASH有和异同?创建大程序时如何管理数据对象?这些问题先留给大家思考吧,因为我也还在思索着,哈哈。<br /> <br /> <br />今天就先来再做一个简单一点的例子,在页面上放两个文本对象,当编辑其中一个时,另一个对象的文本信息发生同样的变化。<br /原创 2011-01-26 21:17:00 · 2451 阅读 · 0 评论 -
测试中的插桩技术
<br />插桩的概念:插桩就是在代码中插入一段我们自定义的代码。<br /> <br />插桩的目的:由于我们插入的代码会一起被编译到可执行文件中,所以可执行文件在运行过程中必然会执行我们插入的自定义代码,这样我们可以记录任何我们渴望知道的信息,例如函数的调用信息等。<br /> <br />插桩器的难点:<br />1、 深入了解目标语言的语法,能够对其解析,进行语义理解;<br />2、 确定插入代码内容,位置;<br /> <br />近期我将要完成一款XX语言的插桩器,希望能够积累一些有价值的经验原创 2011-03-05 23:04:00 · 8695 阅读 · 0 评论 -
C++类内存结构分析
本文的目标是阐述清楚C++的类相关的内存结构问题。 这个问题对于已经很了解的人来说,太简单了,这还有必要拿出来与人分享吗?但对于那些不了解的人,始终有一层窗户纸不能被捅破,似乎总是不能非常到位的理解本质。 本文的阐述过程会分为几个阶段,类与对象的关系,对象到底是什么,类的函数时如何被处理的,多态是如何被处理的,其中最核心的是对类函数的实质的理解。 1、 类与对象的关系原创 2011-06-24 01:19:00 · 1983 阅读 · 0 评论 -
Windows线程、界面、消息剖析
对于很多人来说,VC开发Windows界面程序,一般都基于MFC界面库,当前MFC并非windows下唯一的VC界面库,但由于历史原因,其使用者绝对是最多的。我们不对MFC库进行研究,仅仅是研究下windows中线程、界面、消息直接的关系。 线程是什么?线程就是一个执行流,它可以原创 2011-07-14 18:45:38 · 4803 阅读 · 1 评论 -
.idata数据的解析
每类Section代表不同的数据,不同的数据存储组织方式一定是有非常大区别的。代码段与资源段一定区别巨大,这意味着我需要一个一个的学习每个段的解析。 idata段解析这个段主要存储的是导入符号信息。昨天花了很多时间研究符号的获取,但就在刚刚开始就卡壳了,很多人都是说读取了IMAGE_IMPORT_DESCRIPTOR,就可以获取到链接库名称,但这个字段是一个地址,我根本不能理解这个地址原创 2013-09-02 21:31:24 · 3057 阅读 · 0 评论