Posts
-
2024-05-08 #lan
做rCore时的随手备忘 施工中🚧
Rust
所有权
- 堆上的变量才需要考虑所有权,因为栈上的变量直接深拷贝了。
- 可变引用
&mut
同时只能存在一个 - 可变引用与不可变引用不能同时存在
fn main() { let mut s = String::from("hello world"); let word = first_word(&s);
-
2024-02-16 #lan
为了开发Steam VR平台上面的东西,不得不在Windows系统上使用Visual Studio进行开发。Visual Studio上面很多配置都是需要去层层菜单里面找,用鼠标去点UI来配置(除非你还想直接碰xml这种玩意儿),这对于习惯了Linux上使用代码,CLI等等配置环境的我来说,感到非常不适应,踩了很多坑,在此总结一下这种 ~~UI操作构建系统~~ 的要点。
下面具体的菜单操作都是以
V
-
2024-02-07 #linux
基础概念
连接器将多个输入的
object
文件合并成一个输出的object
文件(又叫executable
), 每个object
文件都含有许多sections
, 即段, 每个段都有名字和大小, 大多数段含有数据, 段可以被标记为:loadable
: 运行时内容可被载入到内存allocatable
: 内存中留出的区域, 此区域不应该加载任何特定的内容- 其余的, 一般都是某种调试信息
每个
load
-
2024-01-16 #lan
新基础类型
- 虽然随着C99加入了
long long
类型而且编译器很早便支持了这个类型,但是直到C++11才正式加入标准 UTF-8
是一种可变长度的编码方法,一般直接用char
类型处理(C++20加入了char8_t
以和普通字符区分). 而UTF-16
和UTF-32
编码则分别对应char16_t
和char32_t
.
命名空间
- 可以内联命名空间,
inline namespace V2
,利用此特
- 虽然随着C99加入了
-
2024-01-04 #cpu
冒险与停顿
- 结构冒险
- 每个部件每个周期只能被一条指令使用
- 数据冒险
- 前递(forwarding)或旁路: 上级已经计算出新值,下一级(以及之后)不必等待,直接拿到数据 e.g.
sub x2, x1, x3; and x12, x2, x5
,其中x2
在sub
指令的EX阶段算出来新值后可以立即前递给and
指令的EX阶段 - 停顿(stall)或气泡: 无法前递的冒险(比如载入-使用型数据冒险)只能
- 前递(forwarding)或旁路: 上级已经计算出新值,下一级(以及之后)不必等待,直接拿到数据 e.g.
- 结构冒险