• 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

  • 相关阅读:
    Js 获取当前时间
    C# 将datatable 转换json
    easyui 文本框验证长度
    js 为label标签和div标签赋值
    easy ui datagrid 设置冻结列
    Ext Grid 加载超时设置timeout: 180000
    jQuery uploadify-v3.1 批量上传
    MVC5+EF6+BootStrap3.3.5 博客系统之项目搭建(一)
    C# list 筛选FindAll
    ExtJS 添加图标icon
  • 原文地址:https://www.cnblogs.com/joe-w/p/12578568.html
Copyright © 2020-2023  润新知