linux 0.00的C语言改写
来源:互联网 发布:盯盘软件 编辑:程序博客网 时间:2024/06/05 04:26
导读:
linux 0.00的C语言改写
linux 0.00的C语言改写
这里把赵炯博士还原的Linux-0.00的head.s中的大部分代码用C语言重写的一遍。原来保护模式下的代码只在head.s文件中,全是汇编的。这是很经典的代码,区区300余行代码把保护模式的除虚拟地址以外的所有特性(如ldt,gdt,tss,idt,trap gate,interrupt gate)都展示出来了。
现在把其中大部分的汇编代码都改成了C语言来写, 一来检验一下自己对保护模式到底了解到什么程度,另外也希望对别人了解保护模式有点帮助。
如果真正理解了其中的源代码,那么对 Linux 0.11的进程调度应该是能很快理解了。
这个改来的linux 0.00增加了三个文件,分别是
init/init.c 包含了初始化gdt,ldt,tss,idt的所有代码
lib/protect.c 一些设置gdt,ldt,idt的函数
include/protect.h 保护模式下的一些数据结构
另外,对build.c也作了一些修改
有兴趣的可以继续对head.s作些修改,只到把head.s里的代码全部“淘空”,实现一个真正用C来写的“操作系统”
[本帖最后由 log10 于 2008-4-2 12:28 编辑 ]
附件
2008-4-2 12:28
下载次数: 388
linux-0.00的C语言改写.rar(2.53 MB)
本文转自
http://www.oldlinux.org/oldlinux/viewthread.php?tid=11052&extra=page%3D1
linux 0.00的C语言改写
linux 0.00的C语言改写
这里把赵炯博士还原的Linux-0.00的head.s中的大部分代码用C语言重写的一遍。原来保护模式下的代码只在head.s文件中,全是汇编的。这是很经典的代码,区区300余行代码把保护模式的除虚拟地址以外的所有特性(如ldt,gdt,tss,idt,trap gate,interrupt gate)都展示出来了。
现在把其中大部分的汇编代码都改成了C语言来写, 一来检验一下自己对保护模式到底了解到什么程度,另外也希望对别人了解保护模式有点帮助。
如果真正理解了其中的源代码,那么对 Linux 0.11的进程调度应该是能很快理解了。
这个改来的linux 0.00增加了三个文件,分别是
init/init.c 包含了初始化gdt,ldt,tss,idt的所有代码
lib/protect.c 一些设置gdt,ldt,idt的函数
include/protect.h 保护模式下的一些数据结构
另外,对build.c也作了一些修改
有兴趣的可以继续对head.s作些修改,只到把head.s里的代码全部“淘空”,实现一个真正用C来写的“操作系统”
[本帖最后由 log10 于 2008-4-2 12:28 编辑 ]
附件
2008-4-2 12:28
下载次数: 388
linux-0.00的C语言改写.rar(2.53 MB)
本文转自
http://www.oldlinux.org/oldlinux/viewthread.php?tid=11052&extra=page%3D1
- linux 0.00的C语言改写
- 学x86保护模式时对linux 0.00作的C语言改写
- 用C语言改写C++的类
- C语言改写与for循环等价的循环语句
- C语言IO改写图片内容
- 用C语言思想改写的用筛法求质数程序(第2修订版) 的一些源代码
- 根据C语言改写的java实现的,判定九宫格是否合法。记录
- 用C语言思想改写的用筛法求质数程序(第2修订版)
- 改写linux窗口程序设计的Qt例子
- 改写某个模拟器的go语言源码遇到的问题
- linux C 语言的 system
- linux的c语言 编程
- C 常用的 Linux C 语言函数库
- C实现ping功能的函数注释改写版
- Milenage算法的改写(c,c++变成java)
- 这是我最近改写的一个课本c程序
- 改写linux窗口程序设计的Qt例子(2)
- 改写linux窗口程序设计的Qt例子(3)
- Core C# and .NET
- 我的两个欲望
- Mastering ASP.Net with Visual C#
- Microsoft Visual Studio 6.0 Enterprise Edition
- ASP.NET Cookbook
- linux 0.00的C语言改写
- Professional Web Parts and Custom Controls with ASP.NET 2.0
- VC下线程同步的三种方法(互斥、事件、临界区) - pl2597758的专栏 - CSDNBlog
- IBM公司“蓝云”计划带来即可使用云计算
- struts2-上传文件(1)
- Programming ASP.NET, 3rd Edition
- LiMo吃掉LiPs的内幕。
- Focus On 2D in Direct3D
- 汇编初学者问题合集收藏