Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置。然后让程序继续运行直到这个断点。跟踪/boot/boot.S文件的每一条指令,同时使用boot.S文件和系统为你反汇编出来的文件obj/boot/boot.asm。你也可以使用GDB的x ...
这篇博文是对Lab 中的Exercise 的解答 Lab Exercise : 使用GDB的 si 命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么。但是不需要把每个细节都弄清楚。 答: 在这里我们将尽可能的去分析每一条指令,由于题目中说我们只需要知道BIOS的几条指令在做什么就够了,所以我们也会尽可能的去分析,由于能力有限,这里面有很多问题还没有解决,希望大家谅解。以后有机会会 ...
2015-12-26 16:10 5 5724 推荐指数:
Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置。然后让程序继续运行直到这个断点。跟踪/boot/boot.S文件的每一条指令,同时使用boot.S文件和系统为你反汇编出来的文件obj/boot/boot.asm。你也可以使用GDB的x ...
Lab 1 Exercise 10 为了能够更好的了解在x86上的C程序调用过程的细节,我们首先找到在obj/kern/kern.asm中test_backtrace子程序的地址, 设置断点,并且探讨一下在内核启动后,这个程序被调用时发生了什么。对于这个循环嵌套调用的程序 ...
Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间的?堆栈指针又是指向这块被保留的区域的哪一端的呢? 答: 1. 首先需要判断 ...
Lab 1 Exercise 5 再一次追踪一下boot loader的一开始的几句指令,找到第一条满足如下条件的指令处: 当我修改了boot loader的链接地址,这个指令就会出现错误。 找到这样的指令后,把boot loader的链接地址修改一下,我们要在boot ...
Exercise 1.8 我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码。尝试去完成这部分程序。 解答: 在这个练习中我们首先要阅读以下三个源文件的代码,弄清楚他们三者之间的关系: 三个文件分别为 \kern ...
Lab 1 Part 1: PC bootstrap 我们继续~ PC机的物理地址空间 这一节我们将深入的探究到底PC是如何启动的。首先我们看一下通常一个PC的物理地址空间是如何布局的: ...
Part 3 Kernel Address Space JOS把32位线性地址虚拟空间划分成两个部分。其中用户环境(进程运行环境)通常占据低地址的那部分,叫用户地址空间。而操作系统内核总是占据高地址的部分,叫内核地址空间。这两个部分的分界线是定义在memlayout.h文件中的一个宏 ULIM ...
Lab 1 Part 3: The kernel 现在我们将开始具体讨论一下JOS内核了。就像boot loader一样,内核开始的时候也是一些汇编语句,用于设置一些东西,来保证C语言的程序能够正确的执行。 使用虚拟内存 在运行boot loader时,boot loader中的链接 ...