💡 理解
寄存器的含义,本身也是计算机学院毕业的同学,这个词也常常出现在专业课上,但一直没弄懂它具体是什么,可以用来做什么。
唯一知道的是,它是 CPU 的重要组成部分。这周开始看经典的 CSAPP 课程,突然就理解了。
课程从英特尔的发展历史讲起,如今已发展到了第 15 代 CPU。我自己的电脑也从第八代升级到了第 13 代,性能提升显而易见,这也进一步激起了我的兴趣。之前选购 CPU 时也搜到过很多概念,比如 AMD 的大三级缓存,借此机会终于明白了高速缓存的具体实现。
然后讲到指令集架构:
Intel 系列:
x86
:泛指英特尔架构IA32
:32 位版本Itanium
:失败的架构(已停用)x86-64
:当前主流的 64 位架构
ARM: 几乎所有手机都使用的架构,功耗低、效率高。 当前苹果的 M 系列芯片采用 ARM 架构,之前的 Intel 芯片则是 x86-64 架构。
RISC-V: 一个新兴的开源指令集架构,适合教育、研究和实验。
寄存器只是一个通用的名字(registers),它存储的是内存地址,类似于 C 语言中的指针。在 CPU 中有多个寄存器,它们有不同的名字与功能。
例如:
寄存器 %rax
,原意是 Accumulator(累加器);寄存器 %rbx
的英文来源是 Base(基址寄存器),可以自由使用。
那么寄存器的具体作用是什么呢?结合指令理解:
假设 %rbx
寄存器存放的地址是 0x1000
,内存中对应的数据是:“内存[0x1000] = 42”,当执行如下指令时,将 %rbx
中存放地址的数据拷贝到 %rax
中,那么 %rax
的值就变成了 42:
movq (%rbx), %rax → rax = 42
类比到 C 语言就更直观:
int rbx = 42;
rax = rbx;
return rax;
这样一来,就很容易理解 C 语言源代码的编译过程:
C(源代码)→ 汇编程序(文本)→ 可重定位目标程序(二进制 .o
文件)→ 最终通过链接器(linker)生成一个可执行文件。
至此终于明白了寄存器的含义和作用。
🎧 所听
E195 对话半佛仙人:世上无难事,只要肯放弃(地球online🎮非典型通关秘籍)
卷不过所以放弃,不是不努力,而是你的努力没有任何意义。
🧠 所想
观察一个人,不看他说什么,而要看他做了什么。以前半佛在 B 站更新的频率特别高,说明他至少曾经是个卷王。如今可能财富自由了,便可以松弛地谈谈对人生的看法。当然,也不必太过较真,他提供的是一种解脱的思路,或许能让那些深陷焦虑和自我怀疑的人稍微跳出来喘口气,给自己多一些可能性。