Posts by Topic: notes
Rust 语言基础学习
yang - 2023-04-06
NOTE: 有的人可能开了 rustlings 的 lsp 功能,但是仍然没有智能提示/补全功能,这可能是因为 rust-analyzer 插件更新后和当前的 rustlings 不兼容导致的,可以将 rust-analyzer 插件的版本回退,暂时解决此问题: 很多概念看一遍记不住,在学和练的过程中经常要回头看之前的章节才能想起来。 Rust 的文档和教程中的代码片段都可以在线运行,每一个都可以运行看一下结果,加深印象和理解。 2023-03-27 类型系统、流程控制、模式匹配等基本概念 阅读《Rust 语言圣经》基础部分内容,之前也有简单看过一些,了解了 Rust 语言的一些基本特性,包括基本数据类型、所有权概念、复合类型、流程控制和模式匹配等。 根据学习的内容完成了 rustlings 的相关练习。 Rust 中使用所有权机制和可变性对变量的操作进行限制,这是它的一大特点。使用时要经常注意变量的所有权转移问题,以及变量在一个作用域内只能有一个可变引用或多个不可变引用。 Rust 中使用 match 进行匹配实现多分支的情况。match 的匹配需要列出所有匹配的情况,如匹配一个 u8 类型的数字可能就要列出 0~255 个情况。不过我们可以使用 _ 进行通配,直接匹配所有没有列出的情形。(注意只在必要的时候使用,不然可能因为忘了处理特殊的值而出现逻辑 BUG。) match 还可以使用 guard 形式(不知道怎么翻译,看守?)进行条件约束的匹配,如下: match value { x if x < 0 => println!("Negative number"), ...
RISC-V 特权架构学习
yang - 2023-04-05
2023-04-05 RISC-V特权指令级架构 特权级别 特权体系结构 为什么需要分层 需要一些管理、保护共享资源和隔离实现细节的方法,于是将软件栈进行了清晰的分层。 软件层级与谁通信通过什么通信 应用程序AEE (Application Execution Environment 应用程序执行环境)ABI (Application Binary Interface 应用程序二进制接口) 操作系统SEE (Supervisor Execution Environment 监管者执行环境)SBI (Supervisor Binary Interface 监管者二进制接口) 超级监管程序HEE (Hypervisor Execution Environment 超级监管者执行环境)HBI (Hypervisor Binary Interface 超级监管者二进制接口) 以上名词翻译仅供参考。 ABI 应用程序二进制接口,包含 user-level ISA 和一组用于与 AEE 互动的 ABI 调用 (ABI calls)。传统的操作系统中 AEE 是由 OS 提供的。 SBI Supervisor 二进制接口,与 Supervisor 执行环境交互(SEE)。SBI 包括 user-level ISA 和 supervisor-level...