2020/07/18
windows做实验被劝退,重新换wsl2做实验。装环境,升级系统花了整整一天时间,不过还是抽空又看了一些RISC的架构。
lab0实验完成:
一些细节:
ecall有点像ucore的syscall,不过是上层os向底层os请求的服务,目前还不太清楚这么设计的目的是什么。但是都是先赋值再切换状态。
pub fn console_putchar(c: usize) {
sbi_call(SBI_CONSOLE_PUTCHAR, c, 0, 0);
}
/// 从控制台中读取一个字符
///
/// 没有读取到字符则返回 -1
pub fn console_getchar() -> usize {
sbi_call(SBI_CONSOLE_GETCHAR, 0, 0, 0)
}
/// 调用 SBI_SHUTDOWN 来关闭操作系统(直接退出 QEMU)
pub fn shutdown() -> ! {
sbi_call(SBI_SHUTDOWN, 0, 0, 0);
unreachable!()
}
又找到了跟ucore类似的熟悉感觉。
最终快完成时遇到了一个很无语的问题:
因为windows更新了,wsl2不能用了,于是退回了一个版本,就可以用了。
运行完 make run,lab0 就结束啦。