homework1:boot xv6

Homework 1

boot xv6

  1. 首先在启动块(bootasm.S)的起始位置0x7c00处设置一个断点。单步执行说明(在gdb提示符下键入si)。在bootasm.S中的哪个地方初始化了堆栈指针?

    bootasm.S 在 movl $start, %esp 处设置了堆栈指针,将栈顶指向了 0x7c00

  2. 单步执行对bootmain的调用;现在堆栈上有什么?

    call bootmain 位于物理地址 0x7c48,调用 bootmian 后,栈内有如下内容:

? 其中栈顶 0x7bfc 处存放的是 call bootmian 的返回地址,即该指令的下一条指令。

? 栈底0x7c00 存放的是

  1. bootmain的第一条汇编指令对堆栈有什么作用?在bootblock.asm中查找bootmain。

    bootmian 的第一条指令是 push %ebp ,用于保存 bootmian 的调用者的基址。

  2. 继续通过gdb进行跟踪(必要时使用断点,请参见下面的提示),并查找将eip更改为0x10000c的调用。该调用对堆栈有什么作用? (提示:请考虑一下此调用在引导序列中要完成的工作,并尝试在bootmain.c中标识此点,并在bootblock.asm中的bootmain代码中标识相应的指令。这可能有助于您设置合适的断点来加快速度上。)

    在 bootlock.asm 上找到了 entry = (void(*)(void))(elf->entry); 对应的地址为 0x7dae,在该点设置断点,然后单步调试,查看 sp 寄存其的变化。

    该调用将 0x7db4 (调用指令的下一条指令地址)放入了栈顶。

参考

https://blog.csdn.net/a747979985/article/details/94830777

原文地址:https://www.cnblogs.com/joe-w/p/12578568.html

时间: 2024-12-15 20:13:54

homework1:boot xv6的相关文章

WIN7删除多余的启动选项:boot.ini这个文件已经取消了

win7里面根本没有boot.ini文件,可以在开始的搜索栏中输入cmd,然后右键以管理员身份运行,然后输入bcdedit,我的情况如下. 看到***的字了吗,这就是grub4dos的启动文件的信息,右键点标记并框下标识符后,右键点一下就复制了,留作下面的步骤用,我的是{df12b00e-989e-11df-8bd6-002622e06f8a}. 然后再输入bcdedit /delete {ID},ID就是你上面复制的标识符.重启一下,应该直接进入win7了,没有选择的界面了. bcdedit

boot loader:grub入门[转]

Boot Loader: Grub 在看完了前面的整个启动流程,以及核心模块的整理之后,你应该会发现到一件事情, 那就是『 boot loader 是加载核心的重要工具』啊!没有 boot loader 的话,那么 kernel 根本就没有办法被系统加载的呢!所以,底下我们会先谈一谈 boot loader 的功能, 然后再讲一讲现阶段 Linux 里头最主流的 grub 这个 boot loader 吧! boot loader 的两个 stage 我们在第一小节启动流程的地方曾经讲过,在 B

Ubuntu boot分区满了,解决办法

查看当前系统启动用的内核版本 [email protected]:/boot# uname -rm 4.4.0-92-generic x86_64 [email protected]:/boot# 列出安装过的内核版本 [email protected]:/boot# dpkg --get-selections |grep linux-image linux-image-4.4.0-21-generic deinstall linux-image-4.4.0-45-generic deinsta

理解Docker(7):Docker 存储 - AUFS

(1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 cgroups 限制容器使用的资源 (5)Docker 网络 (6)若干企业生产环境中的容器网络方案 (7)Docker 存储 - AUFS Docker 存储可以分为分层文件系统和卷,本文将介绍 AUFS 分层文件系统. 1. 基础知识 1.1 Linux 的 rootfs 和 bootfs 一

【记录】CentOS 6。6误删除的boot分区恢复

实验环境:CentOS 6.6 Mini + VMware 朋友遇到,预防一下,自己先进行一下测试: 1.首先利用centos6镜像进入linux rescue救援模式. 按照步骤一步一步进行OK确认, 到这里已经进入到救援模式. 切换根目录: chroot /mnt/sysimage 启动ssh服务(也可以不启动): service sshd start 挂载光盘: mkdir -p /mnt/cdrom mount /dev/cdrom /mnt/cdrom 重新安装内核: cd /mnt/

马哥培训:第一周作业

本周作业内容:8月7日前完成 1.描述计算机的组成及其功能. 答:计算机由内设和外设两部分组成.内设包括:负责计算的中央处理器CPU.只读存储器内    存.主板.声卡.网卡.显卡.以及一些其它的特殊用途的功能板卡组成.外设主要包括:鼠标 键盘.显示器.打印机.扫描仪等输入输出设备,以及U盘,光盘等外存储器设备. 2.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别. 答:linux的发行版有非常非常多的分支版本,目前主要流行的发行版本有: 1.slackwer以及以slackwe

Linux:安装双系统(Win7+Ubuntu)后,Ubuntu正常,Win7无法启动

操作系统版本:Ubuntu14.04.1和Windows7 sp1x64版 故障现象: 先安装Windows7 SP1 64位版,后使用U盘安装Ubuntu 14.04.1.Ubuntu安装成功后,可正常启动,而GRUB上选择Windows 7菜单项,无法启动到Win7界面,直接返回GRUB菜单界面. 故障分析: 安装Ubuntu的过程中经历分区步骤,如下图.在指定Boot Loader时并未选择默认的选项/dev/sda,而是选择/dev/sda1.因为硬盘的活动分区是第一个分区sda1.Wi

Boot from Volume - 每天5分钟玩转 OpenStack(61)

Volume 除了可以用作 instance 的数据盘,也可以作为启动盘(Bootable Volume),那么如何使 volume 成为 bootable 呢? 现在我们打开 instance 的 launch 操作界面. 这里有一个下拉菜单"Instance Boot Source".以前我们 launch instance 要么直接从 image launch(Boot from image),要么从 instance 的 snapshot launch(Boot from sn

OpenStack 企业私有云的几个需求(1):Nova 虚机支持 GPU

本系列会介绍OpenStack 企业私有云的几个需求: GPU 支持 自动扩展(Auto-scaling)支持 混合云(Hybrid cloud)支持 物理机(Bare metal)支持 CDN 支持 企业负载均衡器(F5)支持 大规模扩展性(100个计算节点)支持 商业SDN控制器支持 内容比较多,很多东西也没有确定的内容.想到哪就写到哪吧.先从 GPU 支持开始. 1. 基础知识 1.1 VGA(图像显示卡),Graphics Card(图形加速卡),Video Card(视频加速卡),3D