自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 我只是一个普通不能在普通的人

今天第一次周末加班,感觉好累,回来啥都不想干,就想听着歌,悠闲的上下网。在这个陌生的城市,这只是很普通很平常的一天,原来生活就是那么简单。平平凡凡

2010-09-11 22:34:00 714 2

原创 我的激情 怎么了!

<br />来新的公司已经8个月了,完全进入一个全新的数据通信行业,开始极不适应,太多术语不懂,小组开会的时候根本不知道他们在讲什么。还好,已经开始慢慢适应的,渐渐走入这个行业,心也慢慢平静下来了,现在看到新来的同事能看到我当时的影子,虽然只有才8个月。<br /> <br />从毕业到现在虽然工作才两年了,自己变化很大,已经不是刚出来毛手毛脚的小伙子了。现在开始解决一个问题或者一个项目,会静下心来看看到底怎么回事,是个什么东西,不会在什么都不知道的情况下就跑过去问别人。其实投入进去看,看明白了也就那么回事

2010-09-04 12:05:00 1016 5

原创 了解一下IRETD/ RET/ RETF

<br />IRETD/ RET/ RETF 有什么区别,今天GOOGLE了一下:<br />RET, and its exact synonym RETN, pop IP or EIP from the stack and transfer control to the new address. Optionally, if a numeric second operand is provided, they increment the stack pointer by a further imm16 b

2010-08-14 22:12:00 5084

转载 今天碰到一个问题,在网上查了一下,发现有人碰到。转一下

<br />老于第五章P209的exception_handler函数在我的2.6.18的内核编译的时候会出现一个错误:undefined reference to `memset'<br />这是因为(推断一下应该是这个原因):其中的二维数组err_description[][64]的赋值造成的。在linux编译这段二维数组赋值的时候会调用到C库函数memset。而老于这章的makefile中用ld连接的时候并没有使用-lc选项,所以会有上面提到的错误。当修改makefile增加-lc选项的时候再使用ma

2010-08-09 23:36:00 1957 2

转载 《自己动手写OS》勘误区

<br /> 《自己动手写OS》看了也半月有余,发现不少书中的笔误或错误,于是开辟一篇博客详述其中的错误之处,以后会不断更新。<br />P154  表5-2  Program header 1 下数第三行,第四行的 0x8049110 该为 0x8048110<br />P158  LABEL_FILENAME_FOUND 标号下 and  di, 0FFF0h 改为 and  di,  0FFE0h<br />书中多次在定义描述符时,对描述符的界限定义出现错误,例P85 代码3-25 中 Descrip

2010-08-08 14:47:00 908

原创 GetFATEntry详解,书上没讲清楚,转下别人的解释,不然真看不懂。

<br />函数GetFATEntry。参数存放在ax寄存器中,表示一个簇号。输出结果是该簇号在FAT表中的FATENTRY,它的内容仍然是一个簇号,表示文件下一部分所在簇的簇号。这里要仔细地体会“簇号”和“簇”之间的差别,否则在看代码的时候,很容易就会迷失。“簇”表示一个或多个扇区的集合。FAT12中,一个簇就是一个扇区,512字节。簇号,从软盘的数据区开始,从2开始编号(0,1为系统使用),本质上是一个基于FAT表的索引。<br />GetFATEntry:<br />    push    es<br

2010-07-25 22:16:00 1735 1

原创 自己动手写操作系统--debug调试

启动 Debug,它是可用于测试和调试 MS-DOS 可执行文件的程序。 Debug [[drive:][path] filename [parameters]] 参数 [drive:][path] filename 指定要测试的可执行文件的位置和名称。 parameters 指定要测试的可执行文件所需要的任何命令行信息。 ++ 说明 使用 Debug 命令但不指定要测试的文件 如果使用没有位置和文件名的 Debug 命令,然后键入所有的 Debug 命令以响应 De

2010-07-07 22:59:00 877

转载 汇编指令集

<br />一、数据传输指令<br />     1. 通用数据传送指令.<br />MOV     (MOVe) 传送字或字节.<br />MOVS    (MOVe String)     串传送指令<br />MOVSX    先符号扩展,再传送.<br />MOVZX    先零扩展,再传送.<br />PUSH     把字压入堆栈.<br />POP      把字弹出堆栈.<br />PUSHA    把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.<br />POPA    

2010-07-07 22:46:00 636

原创 自己动手写操作系统--几个问题

1 有关DOS下emm386错误运行书中程序发现DOS提示错误“emm386:unrecoverable privileged operation error #n9.press enter to reboot..”解决方法如下:      在dos下修改config.sys文件,将emm那一行去掉即可,或在该行前键入REM 。注意需要重新启动虚拟机才能生效!      (修改文件的命令为:edit config.sys)2 清屏代码pmtest1这个程序中没有清屏过程,只是直接现实红色“P”,加入以下代码

2010-07-07 22:43:00 1360

原创 自己动手写操作系统--搭建环境

书上习惯用virtual PC和bochs,但是我习惯了VMware,最后还是用vmware搭建了dos环境步骤如下:1 安装nasm。编译书中的汇编程序需要用到汇编软件Nasm。可以到http://sourceforge.net/project/showfiles.php?group_id=6208下载Windows和DOS版本的Nasm。  我用的是window版本,下载后解压,然后把nasm.exe ndisasm.exe拷贝到c:/windows/system32/下   这样,就可以在“开始->运

2010-07-07 22:01:00 1042

原创 稍微总结下实模式和保护模式

这段时间一直在看这块的东西,今天总结一下:要理解实模式和保护模式,先讲讲intel x86 cpu发展的历史从8086开始讲吧,8086是16位cpu(为什么是16位,是指地址线吗?不是的,因为8086就是20位地址线,一般是指处理器中的“算术逻辑单元”ALU的宽度。系统总线中的数据部分,称为“数据总线”,通常与ALU具有相同的宽度)。8086是20位地址线,即能寻址2的20次方即1M地址空间。而8086的ALU宽度只有16位,如何寻址1M空间呢??intel是这样实现的:                 

2010-07-05 21:22:00 893 1

原创 一段汇编,引自《自己动手写操作系统》

最近在看这本书,看得很郁闷,全是汇编,下面贴一段代码:主要是讲如何从实模式进入保护模式基本上没动,抄的书上的,编译也过了,就是没输出结果,头痛!!!待解决。。;=============================================; pmtest1.asm; 编译方法: nasm pmtest1.asm -o pmtest1.com; robbie 2010-06-30;=============================================%include "pm.i

2010-07-04 21:54:00 944 1

原创 归并排序

<br />归并排序原理很简单,是将两个或两个以上的有序表组合成一个新的有序表。<br /> <br />假设初始序列有n个记录,则可看成n个有序的子序列,每个子序列长度为1,然后两两归并,得到n/2个长度为2或1(怎么?为什么有1的可能,想想知道吧,如果是奇数序列呢)的有序子序列;再两两归并,.........如此重复,直至得到一个长度为n的有序序列为止,这种排序称为2-路归并排序。如果还不明白。。。就看看如下图:<br /> <br />49   38     65     97      76    

2010-06-27 17:05:00 672

转载 linux pc-lint

1. PC-Lint 是什么?如果你真的不知道它是什么? 那么请私下询问 Google, 但千万不要声张:-).简单而言, PC-Lint 是 Gimpel Software 公司出品的一个很牛的软件, 你可以叫它吹毛求疵器, 因为它能够做比编译器严格得多的(包括但不限于)语法检查.事实上这个工具有两个版本: 一个叫 PC-Lint, 是针对 PC 机的 (主要是对付 Windows, MS-DOS, OS/2 等系统), 以可执行文件形式发布; 另一个叫 FlexeLint, 是针对其它系统的 (比如 L

2010-06-21 22:30:00 14500 2

原创 进程管理--学习笔记

<br />这几天在公司闲暇时间看了一下Robert Love的《linux内核设计与实现》(当然,我看的是中文翻译版哈。看到英文就头痛)进程管理、调度、系统调度、中断这几章,觉得这本书真的写的很好,对我这种级别的人刚好,看起来没那么卡,不像最开始接触linux的时候就抱起《linux内核源码情景分析》来看,看得我“云里来雾里去”,现在想起来真的觉得就是一口吃成大胖子,还没学会走路就开始跑了,好了,废话少说,这里把进程管理这章好好复习一下,希望有兴趣的人一起来学习!<br /> <br />1 几个概念<b

2010-06-21 22:12:00 926

原创 pc-lint

<br />今天准备搭个pclint环境,不然写的代码好多隐藏问题检查不出来,还没弄好,明天继续,下面在网上找了一些pclint安装资料,贴上来吧。。,这个工具非常好,值得推荐,能检查很多问题,还能自己配置“检查约束”<br /> <br />        PC-Lint是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。<br />        C语言的灵活性带来了代码效率的提升,但相应带来了代码

2010-06-17 00:13:00 910

原创 堆排序

<br />堆的定义<br />什么是堆呢?书里是这样说的:完全二叉树中所有非终端结点的值均不大于(或不小于)其左右孩子结点的值。堆可以有两种情况,直接看下面例子吧:<br /> <br />             96<br />          /       /<br />        83      27<br />      /    /      /<br />    38   11  09<br /> <br />{96, 83, 27, 38, 11, 09} 如上图所示,所有非终端结

2010-06-15 21:43:00 932 3

转载 C中的预编译宏定义

<br />今天看到linux内核对swap宏的定义成下面那样,很纳闷,为什么要do while,复习下预编译宏,转了个帖子,里面有介绍!!<br /><br />#define swap(x,y) /<br />    do { unsigned long _temp=x; x=y; y=_tmp} while (0)<br /> <br /> <br />在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处

2010-06-15 11:48:00 651 2

转载 typeof关键字简介

<br />今天用到typeof,看一下它的用法<br /><br />typeof关键字是C语言中的一个新扩展。只要可以接受typedef名称,Sun Studio C 编译器就可以接受带有typeof的结构,包括以下语法类别:声明 函数声明符中的参数类型链表和返回类型 类型定义 类型操作符s sizeof操作符 复合文字 typeof实参 <br />编译器接受带双下划线的关键字:__typeof和__typeof__。本文中的例子并没有遵循使用双下划线的惯例。从语句构成上看,typeof关键字后带圆括

2010-06-15 10:30:00 918

原创 快速排序

<br />今天把快速排序写好,贴上代码,后面简单把原理讲一下<br /> <br />/****************************************************************<br />    Function: sort_partion<br />        Date: 2010-06-10<br />      Author: Robbie<br /> Description: 将数列分割成两部分<br />       Input: INT *piDat

2010-06-14 09:45:00 505

原创 插入排序

<br />今天复习了一下插入排序,先把代码贴上,后面把原理讲一下<br /> <br /> /****************************************************************<br />    Function: SORT_Insert<br />        Date: 2010-06-10<br />      Author: Robbie<br /> Description: 插入排序<br />       Input: INT *piData 

2010-06-10 22:54:00 501 1

原创 选择排序

选择排序和冒泡排序思路上有一点相似,都是先确定最小元素,再确定第二小元素,最后确定最大元素。他的主要流程如下:1.数组A = {5,3,6,2,4,7},对他进行排序2.确定最小的元素放在A[0]位置,我们怎么确定呢,首先默认最小元素为5,他的索引为0,然后用它跟3比较,比他大,则认为最小元素为3,他的索引为1,然后用3跟6比,发现比他小,最小元素还是3,然后跟2比,最小元素变成了2,索引为3,然后跟4比,跟7比。当比较结束之后,最小元素也尘埃落定了。就是2,索引为3,然后我们把他放在A[0]处。为了使A[

2010-06-08 23:45:00 437 2

原创 冒泡排序

<br />呵呵,冒泡排序很简单,先练练手,贴上代码<br /> <br />/****************************************************************<br />    Function: SORT_Bubble<br />        Date: 2010-06-07<br />      Author: Robbie<br /> Description: 冒泡算法<br />       Input: INT *piData  待排序的数列<b

2010-06-08 22:47:00 417

原创 累!!

<br />今天上班有点累,在公司整了一天单元测试,不停的打桩,写测试例,测试,写的头都大了,最郁闷的事才发现1个bug,感觉效率很低啊。单元测试方法还有待加强~!<br /> <br />晚上十点回到家,环境基本搭建好了,开始把一些基本的库都整理一下,从排序算法开始吧。。。。,明天把冒泡算法代码贴上来,哈哈,很简单吧,慢慢来吧!!!呵呵。应该是要自己慢慢积累一些东西了,工作两年了,感觉进步太慢了,还是自己不够努力,得过且过。。<br /> <br />明天继续~fighting!!!

2010-06-07 23:58:00 420

转载 关于#ifdef __cplusplus extern

时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif     这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。   要明白为何使用extern "C",还得从cpp中对函数的重载处理开始说起。在c

2010-06-06 17:30:00 398

原创 (转)一个业内激励人的故事!!不看后悔哦

<br />一段真实在个人经历, 给那些迷失方向的朋友[转帖]<br />这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助。<br />一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS、数据库,应用程序,做过通信软件、硬件驱动、协议栈,到现在做操作系统内核和IC相关开发,这中间走了很多弯路,也吃了不少苦。 <br

2010-06-06 16:55:00 1564 1

原创 今天开始,每天写一篇文章,让纪录成为一种习惯!!

<br />如题,加油!

2010-06-06 15:45:00 470

原创 C语言18个经典问题答录(转)

<br />1.这样的初始化有什么问题?char *p = malloc(10); 编译器提示“非法初始式” 云云。<br /><br />答:这个声明是静态或非局部变量吗?函数调用只能出现在自动变量(即局部非静态变量) 的初始式中。<br />因为静态变量的地址必须在编译的过程中就确定下来而malloc()申请的内存地址是在运行时确定的。<br /><br />2. *p++ 自增p 还是p 所指向的变量?<br /><br />答:后缀++ 和-- 操作符本质上比前缀一目操作的优先级高, 因此*p++

2010-06-06 01:49:00 514

原创 今天开博,勉励自己,该努力了。。

每天下班回家就停止学习了,感觉这样很空虚,今天在CSDN开个博客,坚持每天回家看看博客,写写代码,坚持!!!希望有志同道合的朋友一起共勉!!

2010-05-05 19:49:00 525 2

空空如也

空空如也

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

TA关注的人

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