ucore

ucore

练习一

练习1.1 操作系统镜像文件 ucore.img 是如何一步一步生成的?

输入make V=
ucore
ucore
ucore
ucore
查看makefile文件可以找到
@$(call totarget,sign) $(call outfile,bootblock)
$(bootblock)
所以从上面可以看出ucore.img的生成过程:
编译所有生成bin/kernel所需的文件
链接生成bin/kernel
编译bootasm.S bootmain.c sign.c
根据sign规范生成obj/bootblock.o
生成ucore.img

练习1.2

一个被系统认为是符合规范的硬盘主引导扇区的特征是什么?

截取sign.c文件中的部分源码
ucore
ucore
试验发现主引导扇区
1.大小为512字节
2.多余的空间填0
3.第510个(倒数第二个)字节是0x55,
4.第511个(倒数第一个)字节是0xAA。

练习二

练习2.1 从 CPU 加电后执行的第一条指令开始,单步跟踪 BIOS 的执行。

修改lab1/tools/gdbinit ,内容为:
ucore
然后在 lab1执行
make debug
在 gdb 的调试界面,执行如下命令:
si //单步跟踪
在 gdb 的调试界面,执行如下命令,来查看BIOS代码:
x /2i $pc
得到如下结果:
ucore

练习2.2 在初始化位置0x7c00 设置实地址断点,测试断点正常

修改 gdbinit文件
ucore
得到如下结果,断点正常

ucore

练习2.3 从0x7c00开始跟踪代码运行,将单步跟踪反汇编得到的代码与bootasm.S和 bootblock.asm进行比较

1单步跟踪

输入两次 si
ucore