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

最近买了本书《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

没错,基本上就这么多了~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值