您的位置:首页 > 其它

《30天自制操作系统》笔记一二

2014-04-18 20:48 411 查看
最近买了本书《30天自制操作系统》,打算跟着这本书来对操作系统有个更为深入的理解。

这个系列的博客(其实所有博客基本也都是)主要还是作为一个学习的笔记来用的,或者说备忘,所以可能排版也比较随意,大家不要太介意哈~

第一天主要是安装相关的软件,以及学会用模拟操作系统的运行。我们希望能够在虚拟机中打出QEMU。

第二天学习到的主要是寄存器的一些知识以及Makefile的基本知识。

从第一天来看,总的来说,我们所做的事情是:

helloos.nas ==> 利用nask.exe编译 ==> helloos.img ==> 在qemu中运行。

这里要用到两个软件:nask.exe以及qemu。

其实主要还是熟悉整个操作流程而已,更多的还是软件的使用,并没有太多理论上的知识收获。(就我个人来说)

第二天则比较有意思。

首先是helloos.nas文件的分析。

由于这学期也是在学习计算机组成原理,所以汇编学起来也还比较快。

值得留意的一些指令是:

ORG    0x7c00 ;指明程序的装载地址

DB是define byte,1B;

DW是define word,2B;

DD是define double-word,4B

RESB是reserve byte;

在RESB 0x1fe-$中,$是指前面所已经输出的字节,所以这句指令是说将该文件后面的全部保留下来。

然后还有寄存器们(16b,分割线后面的是8b):

AX == accumulator           | AL, AH

CX == counter                   | BL, BH

DX == data                         | CL, CH

BX == base                        | DL, DH

SP == stack pointer

BP == base pointer

SI == source index

DI == destination index

ES == extra segment

CS == code segment

SS == stack segment

DS == data segment

FS, GS:无名

还有一些需要记一下的是:

直接输出信息:

MOV SI, msg ; Source index
loop:
MOV AL, [SI]
ADD SI, 1
CMP AL, 0
JE fin
; call BIOS
MOV AH, 0x0e
MOV BX, 15
INT 0x10

JMP loop
msg:
DB 0x0a, 0x0a
DB "Hello, xavier!"
DB 0x0a
DB "How are you?"
DB 0x0a
DB 0主要还是从http://community.osdev.info/?%28AT%29BIOS 可以找到更多信息。(日文!= =||)
0x00007c00~0x00007dff:启动区内容的装载地址

helloos.nas ==> helloos.img ==> 在qemu中运行:

../z_tools/nask.exe helloos.nas

../z_tools/make.exe -r helloos.img

copy helloos.img ..\z_tools\qemu\fdimage0.bin
../z_tools/make.exe -C ../z_tools/qemu


最后就是一些Makefile的入门知识。

语法就是

ipl.bin: ipl.nas Makefile
../z_tools/nask.exe ipl.nas ipl.bin ipl.lst要制作ipl.bin就需要文件ipl.nas以及Makefile,需要执行语句:
../z_tools/nask.exe ipl.nas ipl.bin ipl.lst


Makefile能够分析文件依赖性。
常用的大概是这样:

default:
../z_tools/make.exe img

ipl.bin: ipl.nas Makefile
../z_tools/nask.exe ipl.nas ipl.bin ipl.lst

helloos.img: ipl.bin Makefile
../z_tools/edimg.exe imgin:../z_tools/fdimg0at.tek \
wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img

img:
../z_tools/make.exe -r helloos.img

asm:
../z_tools/make.exe -r ipl.bin

run:
../z_tools/make.exe img
copy helloos.img ..\z_tools\qemu\fdimage0.bin
../z_tools/make.exe -C ../z_tools/qemu

install:
../z_tools/make.exe img
../z_tools/imgtol.com w a: helloos.img

clean:
-del ipl.bin
-del ipl.lst

没错,基本上就这么多了~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: