ucore实验
文章平均质量分 56
hacwalker
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ucore lab1
任务一: 首先,我进行了makefile文件的分析,分析结果使用另一个文档表示了出来。可以看到在bin目录下生成了ucore.img文件,此时可以在lab1文件夹下执行make qemu可以显示 This is a bootloader: Helloworld! 一个被系统认为符合规范的硬盘主引导扇区的特征是什么?通过对sign.c文件的分析可知,在文件中存在原创 2013-01-30 18:12:52 · 1533 阅读 · 0 评论 -
ucore lab1 任务二
任务二:1. 首先开启qemu调试模式.开启gdb调试工具,连接到qemu中:2. 从0xfff0开始单步跟踪BIOS的执行从上图可看出本身执行就是从fff0执行的,进行反汇编得到的结果为:3. 在初始化位置0x7c00设置实地址断点,测试断点正常。首先设置断点:然后运行程序执行到断点处:原创 2013-01-30 18:19:37 · 822 阅读 · 0 评论 -
ucore lab1 任务三
任务三:查看BIOS中前6条指令的内容,参考PHIL STORRS I/O PORTS DESCRIPTION大致了解并说明这些指令的含义。使用gdb进行调试,结果如下图所示: 发现指令并不是真正的指令,具体问题现在不太明白.但是使用qemu进行本地调试可知如下结果:但是经过上机操作发现在QEMU本地调试下,step命令无法发挥作用。为了完成实验,我采取了以原创 2013-01-31 00:15:32 · 1126 阅读 · 0 评论 -
ucore lab1 任务四
任务四: Bootloader如何做准备并进入保护模式的? 通过查询相关指令含义总结bootasm.s的具体执行流程为: 首先在实模式下运行---〉打开A20端口---〉加载GDTR,进入保护模式---〉调用bootmain函数 .setPROT_MODE_CSEG, 0x8 #kernel code原创 2013-01-31 00:42:52 · 1241 阅读 · 0 评论 -
ucore lab1 任务五
通过阅读bootmain.c,了解bootloader如何加载ELF文件。分析bootloader如何读取硬盘扇区的以及bootloader如何加载ELF格式的OS。首先我们来分析BOOTMAIN.C文件 bootmain(void) { // read the 1st page off disk readseg((uintptr_t)ELFHDR, SEC原创 2013-02-01 08:21:12 · 1191 阅读 · 0 评论 -
ucore lab1 任务六
任务六:1.首先要明白什么是函数调用堆栈(上网查资料)分析下述代码的堆栈调用 int Add(int x, int y){return x + y;}void main(){int *pi = new int(10);int *pj = new int(20);int result = 0;result = Add(*pi,*pj);原创 2013-02-01 08:21:48 · 1011 阅读 · 0 评论 -
ucore lab1 任务七
任务七:1.中断向量表中一个表项占用多少字节?2.完成初始化函数idt_init3.完成中断处理函数trap()实验过程:中断向量表中一个表项的代码为:struct gatedesc { unsignedgd_off_15_0 : 16; // low 16bits of offset in segment unsig原创 2013-02-16 21:40:05 · 904 阅读 · 0 评论
分享