操作系统第3天

通过汇编语言将磁盘的启动扇区读入,启动扇区会启动读入程序,将指定的几个扇区内部的内容读入计算机的内存,可以通过编写系列的汇编代码标识出磁盘扇区是否读进内存

通过nask.exe可以将nas文件输出sys文件,再通过ENDIMG合并到IMG文件中

C------->gas------->nas--------->obj--------->bim---------->hrb-------->sys--------->img
这是C语言翻译成机器指令的完整过程,成熟的编译器不会显示出中间文件,主要是方便用户使用

GLOBAL io_hlt定义一个全局变量,可以被C语言引用的链接,函数前面的必不可少
[SECTION .text]后面接上需要定义的函数内容
_io_hlt: ; void io_hlt(void);
HLT
RET
该函数构造还有待商榷,无法确定其中一些字段的作用,日后再加整理

附上makefile(30天自制操作系统):
从中可以看出编译过程中所使用到的程序以及文件类型的转换

TOOLPATH = ../z_tools/
INCPATH = ../z_tools/haribote/

MAKE = (TOOLPATH)make.exe -r NASK =(TOOLPATH)nask.exe
CC1 = (TOOLPATH)cc1.exe -I(INCPATH) -Os -Wall -quiet
GAS2NASK = (TOOLPATH)gas2nask.exe -a OBJ2BIM =(TOOLPATH)obj2bim.exe
BIM2HRB = (TOOLPATH)bim2hrb.exe RULEFILE =(TOOLPATH)haribote/haribote.rul
EDIMG = (TOOLPATH)edimg.exe IMGTOL =(TOOLPATH)imgtol.com
COPY = copy
DEL = del

�f�t�H���g����

default :
$(MAKE) img

�t�@�C�������K��

ipl10.bin : ipl10.nas Makefile
$(NASK) ipl10.nas ipl10.bin ipl10.lst

asmhead.bin : asmhead.nas Makefile
$(NASK) asmhead.nas asmhead.bin asmhead.lst

bootpack.gas : bootpack.c Makefile
$(CC1) -o bootpack.gas bootpack.c

bootpack.nas : bootpack.gas Makefile
$(GAS2NASK) bootpack.gas bootpack.nas

bootpack.obj : bootpack.nas Makefile
$(NASK) bootpack.nas bootpack.obj bootpack.lst

bootpack.bim : bootpack.obj Makefile
(OBJ2BIM) @(RULEFILE) out:bootpack.bim stack:3136k map:bootpack.map
bootpack.obj

3MB+64KB=3136KB

bootpack.hrb : bootpack.bim Makefile
$(BIM2HRB) bootpack.bim bootpack.hrb 0

haribote.sys : asmhead.bin bootpack.hrb Makefile
copy /B asmhead.bin+bootpack.hrb haribote.sys

haribote.img : ipl10.bin haribote.sys Makefile
$(EDIMG) imgin:../z_tools/fdimg0at.tek
wbinimg src:ipl10.bin len:512 from:0 to:0
copy from:haribote.sys to:@:
imgout:haribote.img

�R�}���h

img :
$(MAKE) haribote.img

run :
(MAKE) img(COPY) haribote.img ..\z_tools\qemu\fdimage0.bin
$(MAKE) -C ../z_tools/qemu

install :
(MAKE) img(IMGTOL) w a: haribote.img

clean :
-(DEL) *.bin -(DEL) *.lst
-(DEL) *.gas -(DEL) *.obj
-(DEL) bootpack.nas -(DEL) bootpack.map
-(DEL) bootpack.bim -(DEL) bootpack.hrb
-$(DEL) haribote.sys

src_only :
(MAKE) clean -(DEL) haribote.img

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容