摘要: http://blog.csdn.net/zmnqazqaz 阅读全文
posted @ 2014-06-11 22:35 敷衍。 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 注意: 1.封装函数,使用者不需要要了解底层细节,我们把内部使用的函数用static 声明. 2.我们存储的数据类型为void *, 由用户决定函数类型 3.代码尽可能减少代码量#ifndef DLINK_H#define DLINK_H//用户应该只操作Dlink,避免操作节点.不需要了解细... 阅读全文
posted @ 2014-04-14 22:25 敷衍。 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 当我们的代码量比较大的时候,需要思考一个问题,是否需要合并重复代码. 这里用链表举例.比如:我们有两个需求 1.求和 2.求最大值 对于链表来说,这两个函数均会遍历链表,那么我们可以把遍历链表的方法提取出来,因为这个方法很常用,我还可以用来排序的时候用,所以如果我有很多函数用到遍历的... 阅读全文
posted @ 2014-04-14 22:04 敷衍。 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 首先,需要说明的是,一个函数名代表的是一个地址,即一个函数的首地址。 知道了这一点便很容易理解函数真正的意义了。 void Fun( int a );void main() { int (*pFun)(int); //这里定义了一个函数指针pFun pFun = Fun; //这里传值,可以任意形式如 pFun =&Fun,之类的,最后编译器都会认为是一个地址 (*pFun)(2); } void Fun( int a ){ return;} 接着,我定义出一种函数指针类型,方便我操作,比如我可以这样定义我的类型... 阅读全文
posted @ 2014-04-11 16:30 敷衍。 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 对于之前我们制作好的内核文件,我们还需要下面三个步骤一:制作镜像二.安装grub2三.启动这里不描述U盘如何安装了,如果你能掌握制作虚拟镜像的方法,自然U盘不在话下了,只需修改一下有些步骤即可完成了.这里所有的步骤都是在UBUNTU 下完成的,其他linux命令稍有不同,本人没有安装其他版本的linux 也就没有实验过,不过你可以参考我的思路,然后修改修改命令,你的制作文档就完成了.一 制作虚拟设备镜像,这里我们模拟一个U盘1 产生虚拟镜像方法一:DD工具创建镜像 dd if=/dev/zero bs=512 count=20480 of=a.img*方法二:(需要安装BOCHS,当然还有各种 阅读全文
posted @ 2014-04-11 11:37 敷衍。 阅读(2187) 评论(0) 推荐(0) 编辑
摘要: 上一篇讲完简述了利用grub内核引导的流程.下面就是代码时间了.首先来看boot.S,规范上提供了范例代码,这里用NASM语法改写global loader ; making entry point visible to linkerextern kmain ; 这是kernel的入口函数 global start,_start ;默认的链接入口地址 MODULEALIGN equ 1<<0 ; align loaded modules on page boundaries... 阅读全文
posted @ 2014-04-11 11:10 敷衍。 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 在制作操作系统的过程中,首先的第一步就是要加载内核,但是加载内核又涉及到一个很长的话题. 曾经做过一个FAT32文件系统下加载内核的一整段汇编代码,感觉到这样写代码万分有压力,而且这方面的东西,太过底层,甚至上说和操作系统没有什么直接的关系. 所以,为了简化这步骤,我们利用上一个很强大的加载器,grub2. 如何用grub2等引导程序去引导我们制作的内核呢? 这里给出一个答案:我们必须受到一些约束才能完成这些工作,关于这个约束就是multiboot规范(当然还有别的解决办法) 接下来,我们开始用grub2+multiboot来引导我们的简易操作系统内核. 首先,还是介绍一下大致... 阅读全文
posted @ 2014-04-10 23:32 敷衍。 阅读(436) 评论(0) 推荐(0) 编辑
摘要: BIOS的功能 目前市场上主要的BIOS有AMI BIOS和Award BIOS以及Phoenix BIOS,其中,Award和Phoenix已经合并,二者的技术也互有融合。从功能上看,BIOS分为三个部分:自检及初始化程序;硬件中断处理;程序服务请求;(一)自检及初始化 这部分负责启动电脑,具体有三个部分,第一个部分是用于电脑刚接通电源时对硬件 部分的检测,也叫做加电自检(Power On Self Test,简称POST),功能是检查电脑是否良好,通常完整的POST自检将包括对CPU,640K基本内存,1M以上的扩展内存,ROM,主 板,CMOS存储器,串并口,显示卡,软硬盘子系统及键.. 阅读全文
posted @ 2013-08-12 16:51 敷衍。 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 这些是必须要用的环境。sudo apt-get install build-essentialsudo apt-get install g++sudo apt-get install libgtk2.0-dev安装命令$tar-vxzf bochs-2.6.2tar.gz$cd bochs-2.6.2$./configure --enable-debugger --enable-disasm$make$sudo make install错误:checking for default gui on this platform... x11 ERROR: X windows gui was sel 阅读全文
posted @ 2013-08-12 16:41 敷衍。 阅读(500) 评论(0) 推荐(0) 编辑
摘要: 为了简洁起见,FAT32的内容 可以参考 数据重现 该书 介绍FAT32的内容,下面只说对FAT32的应用现在,跳入做U盘引导正题 ,就是讲分区格式化为FAT32文件系统先看看 大致 FAT32结构保留区中 第0号扇区是DBR扇区(FAT32的dbr不只只有1个扇区 )数据区的 数据按簇存放,不满一个簇就按簇存放,大于一个簇分多个簇存放。簇号从2簇开始(不是0簇) 而且从数据区开始才以簇描述数据块,之前的描述按扇区来讲。FAT表: FAT表 按每个簇号 32bit,4字节,存放的是改簇号的下一簇地址 第0,1号记录不用 从二号开始用。也和数据区从2号簇开始对应根目录:存放在数据区的第二簇中,如 阅读全文
posted @ 2013-08-04 16:51 敷衍。 阅读(246) 评论(0) 推荐(0) 编辑