rCore-Tutorial-Book-v3
rCore-Tutorial-Book-v3 copied to clipboard
rCore-Tutorial-Book-v3/chapter0/2os-interface
操作系统的接口 — rCore-Tutorial-Book-v3 0.1 文档
https://rcore-os.github.io/rCore-Tutorial-Book-v3/chapter0/2os-interface.html
注解“API 与 ABI 的区别”第一段“基于不同高级语言编写的应程序”最后应为“应用程序”
第二个注解“是的应用程序只需基于对...”应改为“使得应用程序只需基于对...”
配图使用什么工具绘制,这种手写风格很赞
请问配图是使用https://excalidraw.com/么
@yaoliu 是的。
图很棒。看过csapp之后有了共鸣
看到说ABI那段一直想不出来ABI是怎么被用户空间程序调用的,没忍住就先去看了linux内核设计与实现🤣
“下面是一些值得了解的功能列表:->下面列出了一些值得了解的功能:”感觉会更通顺一点
“使得应用程序只需基于对简单的抽象概念的访问来到达对计算机系统资源的使用”中的“到达”应改为“达到”
👍
亲爱的作者大大,最后一行:“这里我们看到,API中的各个参数和返回值分别被RISC-V通用寄存器 x10 (即存放系统调用号,也保存返回值)、 x11(存放
fd ) 、 x12 (存放 buf )和 x17 (存放 len )保存。”
按照代码的逻辑,应该是x17(存放系统调用号)吧?其他寄存器存储内容也偏差一位。换句话说,这四个寄存器存储的内容描述是否应该“循环左移一位“?当然x10的确是保存返回值。后面章节相应部分描述正确。内容繁多工作量大可以理解,为作者的无私贡献表示感谢。🌹
@VisualMike-I 客气了,多谢勘误。
捉个语句不通顺的bug:原文接口距离中提到println!时,原句是这样:“ 这里的 println! 一个宏”,这句话不是很通顺,改成“这里的println!是一个Rust宏”似乎更好。
因此 API 是用来约束编译器 (Compiler) 的:一个 API 是给编译器的一些指令,它规定了源代码可以做以及不可以做哪些事。
我不太理解这里的“约束编译器”具体指什么。在我的理解中编译器将源码转化为汇编代码,而在这个转化过程中一定会涉及到 ABI 中的函数调用,所以我的观点是编译器应由 ABI 约定。当然 API 是和源码相关联的,但这更多是一个语法相关的问题。
也用此画图板,我说看着怎么如此亲切