Exercise DS】的更多相关文章

#include <iostream> using namespace std; typedef struct Node { Node *next; int data; }Node, *List; typedef struct DNode { DNode *prior; DNode *next; int data; }DNode, *DList; void creatList(List &l) { l = new Node; Node *p = l; int data; ) { Nod…
Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置.然后让程序继续运行直到这个断点.跟踪/boot/boot.S文件的每一条指令,同时使用boot.S文件和系统为你反汇编出来的文件obj/boot/boot.asm.你也可以使用GDB的x/i指令来获取去任意一个机器指令的反汇编指令,把源文件boot.S文件和boot.asm文件以及在GDB反汇编出来的指令进行比较. 追踪到bootmain函数中,而且还要具体追踪到readsect()子函数…
这篇博文是对Lab 1中的Exercise 2的解答~ Lab 1 Exercise 2: 使用GDB的'si'命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么.但是不需要把每个细节都弄清楚. 答: 在这里我们将尽可能的去分析每一条指令,由于题目中说我们只需要知道BIOS的几条指令在做什么就够了,所以我们也会尽可能的去分析,由于能力有限,这里面有很多问题还没有解决,希望大家谅解.以后有机会会尽可能的把没分析的命令去补全. 首先注意这里是紧接着Lab 1 Part 1.2那篇博文…
本实验链接:mit 6.828 lab1 Exercise 7. 题目 Exercise 7. Use QEMU and GDB to trace into the JOS kernel and stop at the movl %eax, %cr0. Examine memory at 0x00100000 and at 0xf0100000. Now, single step over that instruction using the stepi GDB command. Again,…
本实验的网站链接:mit 6.828 lab1 Exercise 3. 题目 Exercise 3. Take a look at the lab tools guide, especially the section on GDB commands. Even if you're familiar with GDB, this includes some esoteric GDB commands that are useful for OS work. Set a breakpoint at…
tex文档: \documentclass[a4paper, 12pt]{article} % Font size (can be 10pt, 11pt or 12pt) and paper size (remove a4paper for US letter paper) \usepackage{amsmath,amsfonts,bm} \usepackage{hyperref} \usepackage{amsthm,epigraph} \usepackage{amssymb} \usepac…
$subscriptionName = "Windows Azure Enterprise Trial" #订阅名称 $location = "China East" $serviceName = "hollis" #云服务名称 $storageAccount = "hollispremium" #存储账户名   #虚拟网络变量 $vnetName = "hollisvneteast" $subNetNam…
Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间的?堆栈指针又是指向这块被保留的区域的哪一端的呢? 答: 1. 首先需要判断操作系统内核是从哪条指令开始初始化它的堆栈空间的. 前面已经分析过boot.S和main.c文件的运行过程,这个文件中的代码是PC启动后,BIOS运行完成后,首先执行的两部分代码.但是它们并不属于操作系统的内核.当main.…
Lab 1 Exercise 10 为了能够更好的了解在x86上的C程序调用过程的细节,我们首先找到在obj/kern/kern.asm中test_backtrace子程序的地址, 设置断点,并且探讨一下在内核启动后,这个程序被调用时发生了什么.对于这个循环嵌套调用的程序test_backtrace,它一共压入了多少信息到堆栈之中.并且它们都代表什么含义? 答: 先找到这个子程序的地址,打开obj/kern/kern.asm.在这个文件中我们查到调用test_backtrace子程序指令的地址为…
Exercise 1.8       我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码.尝试去完成这部分程序. 解答: 在这个练习中我们首先要阅读以下三个源文件的代码,弄清楚他们三者之间的关系: 三个文件分别为 \kern\printf.c,\kern\console.c, \lib\printfmt.c 首先大致浏览三个源文件,其中粗略的观察到3点: 1.\kern\printf.c中的cprintf,vcprintf子程序调用了\…