chapter1练习 ===================================================== .. toctree:: :hidden: :maxdepth: 4 - 本节难度: **低** 本节任务 ------------------------------- - 运行 ch1 分支的代码。 - 结合实验指导书,掌握代码的基本结构。 - 自学 ``.ld`` ``makefile`` 两个格式文件的基本使用方法。能够基本读懂 os/kernel.ld 和 Makefile。 - 运行 ``make debug``, 自学 gdb 调试的方法,完成问答作业(lab1 报告要求)。 编程作业 ------------------------------- 无 .. ch1问答作业:: 问答作业 ------------------------------- 1. 请学习 gdb 调试工具的使用(这对后续调试很重要),并通过 gdb 简单跟踪从机器加电到跳转到 0x80200000 的简单过程。只需要描述重要的跳转即可,只需要描述在 qemu 上的情况。 tips: - 事实上进入 rustsbi 之后就不需要使用 gdb 调试了。可以直接阅读代码。`rustsbi起始代码 `_ 。 - 可以使用示例代码 Makefile 中的 ``make debug`` 指令。 - 一些可能用到的 gdb 指令: - ``x/10i 0x80000000`` : 显示 0x80000000 处的10条汇编指令。 - ``x/10i $pc`` : 显示即将执行的10条汇编指令。 - ``x/10xw 0x80000000`` : 显示 0x80000000 处的10条数据,格式为16进制32bit。 - ``info register``: 显示当前所有寄存器信息。 - ``info r t0``: 显示 t0 寄存器的值。 - ``break funcname``: 在目标函数第一条指令处设置断点。 - ``break *0x80200000``: 在 0x80200000 出设置断点。 - ``continue``: 执行直到碰到断点。 - ``si``: 单步执行一条汇编指令。