练习2:理解通过make生成执行文件的过程。
题目:使用qemu执行并调试lab1中的软件
为了熟悉使用qemu和gdb进行的调试工作,我们进行如下的小练习:
从CPU加电后执行的第一条指令开始,单步跟踪BIOS的执行。
在初始化位置0x7c00设置实地址断点,测试断点正常。
从0x7c00开始跟踪代码运行,将单步跟踪反汇编得到的代码与bootasm.S和bootblock.asm进行比较。
自己找一个bootloader或内核中的代码位置,设置断点并进行测试
答案:
1.从CPU加电后执行的第一条指令开始,单步跟踪BIOS的执行。
$ cd labcodes_answer/lab1_result/
$ make lab1-mon
2.在初始化位置0x7c00设置实地址断点,测试断点正常
b *0x7c00
c
3.从0x7c00开始跟踪代码运行,将单步跟踪反汇编得到的代码与bootasm.S和 bootblock.asm进行比较
反汇编的代码与bootblock.asm基本相同,而与bootasm.S的差别在于:
1.反汇编的代码中的指令不带指示长度的后缀,而bootasm.S的指令则有带指示长度的后缀。
2.反汇编的代码中的通用寄存器是32位(带有e前缀),而bootasm.S的代码中的通用寄存器是16位(不带e前缀)。
lab1 练习三 https://blog.csdn.net/qq_42815549/article/details/103001048