最新文章

好了,代码编译OK,也可以运行。现在是不是可以分析Kernel了呢? 别急,先分析下Image, 即dostest.img, 这里说的Image可以认为是虚拟软盘。 前面我写了个程序buildimg.c。就是将boot.bin,KERNEL.SYS,COMMAND.COM组装到doste
软件开发大郭
/
2023-02-04
/ /
20 阅读
DOS的交互命令工具是COMMAND,FreeDos用的是开源的FreeCom 编译此版本还需要TASM汇编软件:TASM 由于版本较老,在Windows XP下执行MakeFile,编译后不能正常运行(可能与我环境有关)。 折腾了一段时间,找到了正确编译的方法,如下,注:需要将t
软件开发大郭
/
2023-02-04
/ /
32 阅读
现在已经走到了执行第一个任务的地方了,如下 ``` main() |-->init_kernel() | |-->kernel() -> p_0() -> DosExec(..."COMMAND.COM".
软件开发大郭
/
2023-02-04
/ /
17 阅读
KERNAL.asm跳转到Main.c中的main函数,下面代码可读性就很强了,跟踪代码的执行流程应该不是难事。 我想说的是,kernel定义了很多全局变量,掌握了这些变量的用处,理解kernel基本上就没什么障碍了。 OK,下面主要以变量使用为切入点分析kernel, 几个关键的
软件开发大郭
/
2023-02-04
/ /
24 阅读
终于开始KERNEL代码分析了 这一节关注KERNEL.ASM文件,如前一节所述,KERNEL.ASM代码主要目的就是将INIT段copy 到内存高处,跳转到高处的INIT段执行,旧的INIT段被用作内核数据区和Stack区。 ![pic](/storage/image/2023/02/
软件开发大郭
/
2023-02-04
/ /
18 阅读
虽然CPU已经开始执行KERNEL代码了,先不急分析KERNEL。 不知道对于上节boot将KERNEL放置在0x600处还有没有其它疑问? 必须要放到0x600处吗? ``` 如果KERNEL.SYS已经给定好了,那boot必须得将KERNEL放到0x600处。 编译KERN
软件开发大郭
/
2023-02-04
/ /
20 阅读
好了,下面开始分析boot.bin了,放置在软盘的前512字节中。 如何判断一个软盘是引导软盘呢? 这个任务是交给在BIOS的。 BIOS会读取软盘的前512字节,如果第511个,512个字节的内容为0x55AA,就认定这是个引导软盘,将这512字节放置在内存0x7c00处,并跳转执行。
软件开发大郭
/
2023-02-04
/ /
23 阅读
PC,类似于Bochs,采用Java语言编写。O’reilly的《Beautiful Architecture》一书中对其有详细介绍。 不仅可以用JPC来调试操作系统,还可以研究它的代码,学习如何将一个复杂的计算机硬件系统分解成一个个小模块,组装起来。 JPC的虚拟CPU指令执行原理类似
软件开发大郭
/
2023-02-04
/ /
38 阅读
## 最快的X86 PC模拟器,纯JAVA开发 JPC是一个快速的现代x86 PC模拟器,能够启动Windows到Windows 95(以及安全模式下的Windows 98)和一些图形Linux。它具有功能齐全的图形调试器,具有时间旅行模式以及休息和观察点等标准功能。 ### 运行
软件开发大郭
/
2023-02-04
/ /
30 阅读
# 前言 本文使用通俗易懂的表述,深入浅出地介绍DPMI和DOS Extender(以DOS/4GW为例)的理论和基本使用技术,旨在让对DPMI不太了解的程序员能了解DPMI在C语言中的实现方法。限于本人水平及资料匮乏,文中难免存在不当之处,望各位读者不吝赐教。 # 什么是DPMI和DO
软件开发大郭
/
2023-02-04
/ /
42 阅读