-
Notifications
You must be signed in to change notification settings - Fork 390
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
完成了lec05 20-40分钟的翻译 #3
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
还有前面那些图片,应该也是误删吧,还原一下吧。
* [3.8 QEMU](lec03-os-organization-and-system-calls/3.8-qemu.md) | ||
* [3.4 硬件对于强隔离的支持](lec03-os-organization-and-system-calls/3.4-ying-jian-dui-yu-qiang-ge-li-de-zhi-chi.md) | ||
* [3.6 宏内核 vs 微内核 (Monolithic Kernel vs Micro Kernel)](lec03-os-organization-and-system-calls/3.6.md) | ||
* [Lec05 RISC-V Calling Convention and Stack Frames](lec05-risc-v-calling-conventions-and-stack-frames/README.md) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
其他章节都乱了,重新调整一下吧
@@ -48,5 +48,3 @@ ECALL会跳转到内核中一个特定,由内核控制的位置。我们在一 | |||
> | |||
> Frans教授:我认为有一些操作系统是用C++写的,这完全是可能的。但是大部分你知道的操作系统并不是用C++写的,这里的主要原因是Linus不喜欢C++,所以Linux主要是C语言实现。 | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这三个变更没有必要吧
@@ -0,0 +1,4 @@ | |||
# Lec05 RISC-V Calling Convention and Stack Frames | |||
|
|||
[https://pdos.csail.mit.edu/6.828/2020/schedule.html](https://pdos.csail.mit.edu/6.828/2020/schedule.html)\) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
最后的转义符从md看起来会多个括号。
有学生说看起来用x86处理器代替RISC-V处理器的唯一优势就是你可以获得性能提升,然而这些性能提升带来了大量的代价与复杂性以及潜在安全问题。那么为什么我们仍然在用x86而非迁移到其他处理器架构(比如RISC-V),主要原因是整个世界一直在使用x86,如果突然地开始把所有处理器都换成RISC-V,这会带来很大的风险,这会使得很多重要的设备失去支持。 | ||
|
||
不过intel也在他们的CPU里添加了一些有意思的功能,比如安全方面实现了可由代码定义的内存私有区域(encaves),又比如有一些具有超特异性的指令在进行特定运算时非常高效。在许多种不同场景下,intel的CPU都有一个完美的指令能够以远超risc-v的效率完成任务。一个更实际的答案是,RISC-V确实过于年轻且此前没有人为个人PC实现RISC-v处理器,而SiFive直到近期才宣布公告,他们是第一批想要做个人PC的RISC-V处理器的,所以在现实层面上,他们的RISC-V处理器不可能运行所有为intel处理器设计的软件。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
encaves -> enclaves
有学生说看起来用x86处理器代替RISC-V处理器的唯一优势就是你可以获得性能提升,然而这些性能提升带来了大量的代价与复杂性以及潜在安全问题。那么为什么我们仍然在用x86而非迁移到其他处理器架构(比如RISC-V),主要原因是整个世界一直在使用x86,如果突然地开始把所有处理器都换成RISC-V,这会带来很大的风险,这会使得很多重要的设备失去支持。 | ||
|
||
不过intel也在他们的CPU里添加了一些有意思的功能,比如安全方面实现了可由代码定义的内存私有区域(encaves),又比如有一些具有超特异性的指令在进行特定运算时非常高效。在许多种不同场景下,intel的CPU都有一个完美的指令能够以远超risc-v的效率完成任务。一个更实际的答案是,RISC-V确实过于年轻且此前没有人为个人PC实现RISC-v处理器,而SiFive直到近期才宣布公告,他们是第一批想要做个人PC的RISC-V处理器的,所以在现实层面上,他们的RISC-V处理器不可能运行所有为intel处理器设计的软件。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
又比如有一些具有超特异性的指令 -> 又比如intel实现的一些高度特殊的指令
有学生说看起来用x86处理器代替RISC-V处理器的唯一优势就是你可以获得性能提升,然而这些性能提升带来了大量的代价与复杂性以及潜在安全问题。那么为什么我们仍然在用x86而非迁移到其他处理器架构(比如RISC-V),主要原因是整个世界一直在使用x86,如果突然地开始把所有处理器都换成RISC-V,这会带来很大的风险,这会使得很多重要的设备失去支持。 | ||
|
||
不过intel也在他们的CPU里添加了一些有意思的功能,比如安全方面实现了可由代码定义的内存私有区域(encaves),又比如有一些具有超特异性的指令在进行特定运算时非常高效。在许多种不同场景下,intel的CPU都有一个完美的指令能够以远超risc-v的效率完成任务。一个更实际的答案是,RISC-V确实过于年轻且此前没有人为个人PC实现RISC-v处理器,而SiFive直到近期才宣布公告,他们是第一批想要做个人PC的RISC-V处理器的,所以在现实层面上,他们的RISC-V处理器不可能运行所有为intel处理器设计的软件。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
risc-v 大小写保持一致吧
> | ||
>![image5.4-03](../.gitbook/assets/image5.4-03.png) | ||
|
||
如果你对内核到底长啥样很感兴趣,你可以去看一下kernel.asm,这里有xv6内核的完整汇编代码,左边的这些数字都是标明指令在内存中的地址的标签,十分方便,这里的标签是函数声明的位置,这些汇编代码在我们debug的时候会很有用,希望过一会儿我演示的时候会用上它们。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
左边的这些数字都是标明指令在内存中的地址的标签,十分方便,这里的标签是函数声明的位置
这里的两个标签指代不清。原文中第一个标签说的是指令在内存中的地址,第二个标签是说汇编代码中有一些函数的标签。但是这的翻译好像两个是同一个标签,建议改一下。
|
||
第一个窗口是源代码窗口,正如David所说,kernel.asm左边的这些数字在调试时非常有用,你可以通过这些数字得到地址。我们可以在gdb窗口右上角看到“PC:0x800065e2”,我们在kernel.asm里搜索这个特定的地址,我们可以发现这正是sum_to函数的起始地址。所以当你看到这些地址时,你可以直接到kernel.asm里寻找问题出现的具体行,或者依此设置断点。 | ||
|
||
如果我们想在tui窗口中看汇编代码,我们可以键入`layout asm`,然后tui窗口中就会显示所有的汇编指令,我们也可以键入`layout reg`来查看寄存器的内容,如果你想滚动查看这三个窗口中某一个的内容,你可以指定聚焦其中之一,比如想滚动浏览寄存器窗口,键入`focus reg`就可以聚焦到寄存器窗口了,此时使用方向键或者滚动鼠标就可以滚动浏览该窗口,现在我们再键入`focus asm`就可以聚焦到源代码窗口了。我们来看看寄存器窗口,t0包含的值为0x1,a0包含的值为0x5。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
t0包含的值为0x1
这个时间点,t0的值是0x80002840,你看成tp的值了。
![image5.4-10](../.gitbook/assets/image5.4-10.png) | ||
|
||
关于gdb调试的内容我就不再赘述了,你们可以去Google查找更多的gdb指令。 | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
31:53,有个同学问为什么gdb显示的是汇编地址,而不是c代码的行号。可以翻译一下。
33:26,有个同学问同一行多条指令,如果设置断点会停在哪。也可以翻译一下。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
gdb这块完全可以自行Google
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这里大概有5分钟的空白,一部分是介绍tmux的,一部分是学生的提问。tmux的介绍如果嫌麻烦跳过倒还好,学生的问答最好加上吧,毕竟也算是跟课程内容相关。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
还是改了很多不相关的文件。
No description provided.