1 Star 0 Fork 0

WHC/xv6-course

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
34a-Q&A.org 1.60 KB
一键复制 编辑 原始数据 按行查看 历史
殊蕤 提交于 2023-11-18 15:36 . add

答疑二

是否预计讲 xv6-riscv 架构

  1. 暂时没有计划讲
  2. 体系结构比较多, 建议先掌握一个, 用的时候再查手册
    • riscv
    • mips
    • arm
  3. riscv 建议 MIT

视频 33 中 forkret 如何跳转到 trapret

答案: ret 的语义, x86 手册 详细调试

(gdb) x/8i $pc
=> 0x80103890 <forkret+16>:     mov    0x8010a000,%eax
   0x80103895 <forkret+21>:     add    $0x10,%esp
   0x80103898 <forkret+24>:     test   %eax,%eax
   0x8010389a <forkret+26>:     jne    0x801038a0 <forkret+32>
   0x8010389c <forkret+28>:     leave
   0x8010389d <forkret+29>:     ret
   0x8010389e <forkret+30>:     xchg   %ax,%ax
   0x801038a0 <forkret+32>:     movl   $0x0,0x8010a000
(gdb) n
=> 0x801038a0 <forkret+32>:     movl   $0x0,0x8010a000
394     forkret(void)
(gdb) lay asm
(gdb)
(gdb) x/x $esp
0x8dffffb0:     0x80105852
(gdb) f
#0  0x801038c4 in forkret () at proc.c:410
410     }
(gdb) x/i $pc
=> 0x801038c4 <forkret+68>:     ret
(gdb) si
=> 0x80105852 <trapret>:        popa
trapret () at trapasm.S:26
26        popal
(gdb) p/x $pc
$1 = 0x80105852
(gdb) bt
#0  trapret () at trapasm.S:26
(gdb)
#0  trapret () at trapasm.S:26
(gdb)

视频 34 中 如何调试用户进程

  • init.c
  • sh.c
kernel

就是手工切换符号文件

init.c

(gdb) symbol-file _init

sh.c

(gdb) symbol-file _sh
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/whc_softHardware/xv6-course.git
git@gitee.com:whc_softHardware/xv6-course.git
whc_softHardware
xv6-course
xv6-course
master

搜索帮助