~cytrogen/gemini-capsule

98e6500af152e01fff271528f72ba668cf5b91da — Cytrogen a month ago d507759
按日期排序索引,文章标题下添加日期行
M index.gmi => index.gmi +6 -6
@@ 5,15 5,15 @@
## 近期文章

=> /posts/那些不受欢迎的想法.gmi 那些不受欢迎的想法
=> /posts/谈模仿学习与身份误区.gmi 谈模仿学习与身份误区
=> /posts/读那片血一般红的杜鹃花.gmi 读《那片血一般红的杜鹃花》
=> /posts/我的胶囊旅馆开张了.gmi 我的胶囊旅馆开张了
=> /posts/读大闸蟹.gmi 读《大闸蟹》
=> /posts/用笑脸玩扫雷.gmi 用笑脸玩扫雷
=> /posts/玩茂林源记.gmi 玩《茂林源记》
=> /posts/汇编语言学习·壹.gmi 汇编语言学习·壹
=> /posts/最能保障数字主权的-vps-公司.gmi 最能保障「数字主权」的 VPS 公司
=> /posts/4-个字符为一组构成的城市.gmi 4 个字符为一组构成的城市
=> /posts/玩茂林源记.gmi 玩《茂林源记》
=> /posts/用笑脸玩扫雷.gmi 用笑脸玩扫雷
=> /posts/女人的血.gmi 女人的血
=> /posts/初次走半马.gmi 初次走半马
=> /posts/读那片血一般红的杜鹃花.gmi 读《那片血一般红的杜鹃花》
=> /posts/2026-01.gmi 想法在丙午岁始迭代

=> /posts/index.gmi 所有文章


M posts/2026-01.gmi => posts/2026-01.gmi +1 -0
@@ 1,4 1,5 @@
# 想法在丙午岁始迭代
2026-02-01

这个月里我做了很多在笔记本上的工作,所以在阅读文章上花费的时间跟精力都变少了很多。


M posts/4-个字符为一组构成的城市.gmi => posts/4-个字符为一组构成的城市.gmi +1 -0
@@ 1,4 1,5 @@
# 4 个字符为一组构成的城市
2026-02-16

从小时候记事起,我就有一个奇怪的习惯,那就是看到商店招牌,会自动将上面的字符以 4 个一组的形式排列起来。


M posts/emacs-里配置邮箱服务.gmi => posts/emacs-里配置邮箱服务.gmi +1 -0
@@ 1,4 1,5 @@
# Emacs 里配置邮箱服务
2026-01-11

我开始在我的笔记本电脑上使用  EndeavourOS+i3WM 以及 Emacs 了。刚开始使用 Emacs,实在是被它的能力上限所折服,巴不得所有事情都让它来做——例如邮件收发。


M posts/index.gmi => posts/index.gmi +8 -7
@@ 1,17 1,18 @@
# 文章列表

=> 那些不受欢迎的想法.gmi 那些不受欢迎的想法
=> 谈模仿学习与身份误区.gmi 谈模仿学习与身份误区
=> 读那片血一般红的杜鹃花.gmi 读《那片血一般红的杜鹃花》
=> 我的胶囊旅馆开张了.gmi 我的胶囊旅馆开张了
=> 读大闸蟹.gmi 读《大闸蟹》
=> 用笑脸玩扫雷.gmi 用笑脸玩扫雷
=> 玩茂林源记.gmi 玩《茂林源记》
=> 汇编语言学习·壹.gmi 汇编语言学习·壹
=> 最能保障数字主权的-vps-公司.gmi 最能保障「数字主权」的 VPS 公司
=> 4-个字符为一组构成的城市.gmi 4 个字符为一组构成的城市
=> 玩茂林源记.gmi 玩《茂林源记》
=> 用笑脸玩扫雷.gmi 用笑脸玩扫雷
=> 女人的血.gmi 女人的血
=> 读那片血一般红的杜鹃花.gmi 读《那片血一般红的杜鹃花》
=> 2026-01.gmi 想法在丙午岁始迭代
=> 最能保障数字主权的-vps-公司.gmi 最能保障「数字主权」的 VPS 公司
=> 谈模仿学习与身份误区.gmi 谈模仿学习与身份误区
=> 初次走半马.gmi 初次走半马
=> emacs-里配置邮箱服务.gmi Emacs 里配置邮箱服务
=> 4-个字符为一组构成的城市.gmi 4 个字符为一组构成的城市
=> 2026-01.gmi 想法在丙午岁始迭代

=> /index.gmi 返回大厅

M posts/初次走半马.gmi => posts/初次走半马.gmi +1 -0
@@ 1,4 1,5 @@
# 初次走半马
2026-01-19

室友这些天喜欢看 橙飞一下 这个 BiliBili 频道。频道主是一位大胃王,也是一位马拉松跑者,吃饭的时候看他吃饭会格外香。不过呢他跑马拉松这件事情引起了室友那奇怪的好战之心,想要试试一天内走「全马」。不过嘛,结果从本文标题里就可以看出……


M posts/女人的血.gmi => posts/女人的血.gmi +1 -0
@@ 1,4 1,5 @@
# 女人的血
2026-02-12

女人,或者说有雌性生殖器官的人,又或者说需要生产卵子来进行繁殖生育的哺乳动物,都会有月经吧。以防万一有人不知道月经的底层逻辑,它本质上是卵子死去时流出的血液。女人需要每个月更换卵子,经历「流血的七天、安全期、卵子生成的发情期」这样的 28 天循环,直到无法生育。这期间有一个例外,那便是怀孕。


M posts/我的胶囊旅馆开张了.gmi => posts/我的胶囊旅馆开张了.gmi +1 -0
@@ 1,4 1,5 @@
# 我的胶囊旅馆开张了
2026-02-25

此胶囊旅馆非彼胶囊旅馆。虽说我对现实中的胶囊旅馆很感兴趣,但至今都没有睡过一次,去开张一家真正的胶囊旅馆更是无稽之谈。标题中的「胶囊旅馆」指的是通过 Gemini 协议提供内容的独立信息集合。


M posts/最能保障数字主权的-vps-公司.gmi => posts/最能保障数字主权的-vps-公司.gmi +1 -0
@@ 1,4 1,5 @@
# 最能保障「数字主权」的 VPS 公司
2026-01-30

我观看了一场名为「后美国互联网」的 演讲,实在是精彩,让我对「数字主权」这一概念有了更深刻的认知。借此,我发现我的许多服务依然部署在美国的 PaaS 服务上。这类中心化的服务如果出问题了会很麻烦,参考去年 Cloudflare 的事故。而我愈来愈对美国企业产生抵触之心。不过要我完全逃离是很难做到的,毕竟我人就在美国。这些原因结合在一起,促使我对「哪家提供 VPS(虚拟专用服务器)服务的公司最适用于数字主权者」这一命题感到好奇。


M posts/汇编语言学习·壹.gmi => posts/汇编语言学习·壹.gmi +13 -12
@@ 1,4 1,5 @@
# 汇编语言学习·壹
2026-02-23

学习汇编语言的笔记。



@@ 455,8 456,8 @@ RISC-V 的基础指令集规定处理器必须包含 32 个通用整数寄存器
* imm (Immediate):立即数。这是一个直接写在指令里的常数,而不是从寄存器里读的。
* 限制:它必须是一个 12 位有符号整数。这意味着它的取值范围被限制在 $[-2048, 2047]$ 之间。

第一个例子取出了 x0 的值,并添加立即数 1,结果便是 $0 + 1  1$。然后将这个结果 1 写入寄存器 x1= 。
第二个例子取出 x1 当前的值,并添加立即数 1,结果是 $1 + 1  2$。然后将这个结果 2 写入寄存器 x1= ,实际上实现了自增的操作。
第一个例子取出了 x0 的值,并添加立即数 1,结果便是 $0 + 1 = 1$。然后将这个结果 1 写入寄存器 x1 。
第二个例子取出 x1 当前的值,并添加立即数 1,结果是 $1 + 1 = 2$。然后将这个结果 2 写入寄存器 x1 ,实际上实现了自增的操作。

二、 PC 指针与步进。



@@ 475,7 476,7 @@ RISC-V 的基础指令集规定处理器必须包含 32 个通用整数寄存器

执行流演示:

1. 初始状态: PC  0x0= ;
1. 初始状态: =PC = 0x0= ;
2. 取指:CPU 读取地址 0x0 处的数据 00100093 ;
3. 执行:解析为 addi x1, x0, 1 。寄存器 x1 变为 1;
4. 更新: PC 自动加 4,变为 0x4 ;


@@ 557,10 558,10 @@ RISC-V 的基础指令集规定处理器必须包含 32 个通用整数寄存器

| 指令   | 全称          | 功能描述          | 关键点                                                                                                                 |
| <6>    | <10>          | <10>             | <8>                                                                                                                    |
| addi | Add Immediate | rd  rs1 + imm | 唯一的加法指令。RISC-V 没有专门的 subi 指令。因为立即数 immi= 是有符号的(-2048 到 2047),如果你想做减法,只需加上一个复数即可。 |
| xori | XOR Immediate | rd  rs1 ^ imm= | 按位异或。常用于翻转特定位。                                                                                               |
| ori  | OR Immediate  | rd  rs1 \vert{} imm= | 按位或。常用于将特定位置 1。                                                                                              |
| andi | AND Immediate | rd  rs1 & imm= | 按位与。常用于掩码操作(清零特定位)。                                                                                      |
| addi | Add Immediate | =rd = rs1 + imm= | 唯一的加法指令。RISC-V 没有专门的 subi 指令。因为立即数 immi 是有符号的(-2048 到 2047),如果你想做减法,只需加上一个复数即可。 |
| xori | XOR Immediate | =rd = rs1 ^ imm= | 按位异或。常用于翻转特定位。                                                                                               |
| ori  | OR Immediate  | =rd = rs1 \vert{} imm= | 按位或。常用于将特定位置 1。                                                                                              |
| andi | AND Immediate | =rd = rs1 & imm= | 按位与。常用于掩码操作(清零特定位)。                                                                                      |
假设寄存器 x1 的值为 0x9 (二进制 1001 )。执行 xori x1, x1, 0x3 :

* 源数据: 1001 ( 0x9 )


@@ 586,8 587,8 @@ RISC-V 的基础指令集规定处理器必须包含 32 个通用整数寄存器
这类指令用于数值比较,结果不是返回差值,而是返回布尔值 0 或者 1。

| 指令    | 全称                        | 功能描述                            | 区别                                                                                                |
| slti  | Set Less Than Imm.          | 若 rs1 < imm 则 rd1,否则 0=  | 有符号比较。它将操作数视为补码。例如,它会认为 -1 小于 10                                                  |
| sltiu | Set Less Than Imm. Unsigned | 若 rs1 < imm 则 rd1,否则 0   | 无符号比较。它将操作视为纯正整数。例如,它会认为 -1,即全 1 的 0xFFFFFFFF= ,是一个巨大的正数,因此 -1 大于 10 |
| slti  | Set Less Than Imm.          | 若 rs1 < imm 则 rd=1,否则 0  | 有符号比较。它将操作数视为补码。例如,它会认为 -1 小于 10                                                  |
| sltiu | Set Less Than Imm. Unsigned | 若 rs1 < imm 则 rd=1,否则 0   | 无符号比较。它将操作视为纯正整数。例如,它会认为 -1,即全 1 的 0xFFFFFFFF ,是一个巨大的正数,因此 -1 大于 10 |

### 寄存器类型



@@ 684,10 685,10 @@ jal 和 jalr 的区别在于计算目标地址的方式。jal 属于 J-Type 指
这是又一个例子:

| 地址   | 机器码       | 意思             | 注释                                           |
| 0x00 | 0x00c000ef | jal x1, 0xc    | set pc to 0x0 + 0xc  0xc, x1  pc + 4 = 0x4 |
| 0x00 | 0x00c000ef | jal x1, 0xc    | set pc to 0x0 + 0xc = 0xc, x1 = pc + 4 = 0x4 |
| 0x04 | 0x00000013 | addi x0, x0, 0 | 无操作                                         |
| 0x08 | 0x00010093 | addi x1, x2, 0 | set x1 = x2                                  |
| 0x0c | 0x00008167 | jalr x2, x1, 0 | set pc to x1, x2  pc + 4  0x10             |
| 0x0c | 0x00008167 | jalr x2, x1, 0 | set pc to x1, x2 = pc + 4 = 0x10             |
| 0x10 | 0x00100093 | addi x1, x0, 1 | x1 = 1                                       |

这是一个相对复杂点的跳转时序,实际上模拟了一个状态机的执行轨迹。程序从地址 0x00 开始,执行 jal x1, 0xc。此时 CPU 计算跳转目标为 0x00 加上 0xc 等于 0x0c,同时将返回地址 0x04 保存到寄存器 x1 中。


@@ 713,7 714,7 @@ jal 和 jalr 的区别在于计算目标地址的方式。jal 属于 J-Type 指
教程中提供的例子正是描述了这样一个完整的系统调用物理过程,其具体内容如下表所示:

| 地址   | 机器码       | 意思               | 注释                                       |
| 0x00 | 0x05d00893 | addi x17, x0, 93 | 设置 a7  93,对应 Linux 的 exit= 系统调用 |
| 0x00 | 0x05d00893 | addi x17, x0, 93 | 设置 a7 = 93,对应 Linux 的 exit 系统调用 |
| 0x04 | 0x00000073 | ecall            | 触发环境调用,将控制权移交系统内核              |

在这个执行序列中,程序首先位于内存地址 0x00。指令解码器将机器码 0x05d00893 翻译为 addi x17, x0, 93。硬件电路读取恒为 0 的 x0 寄存器,将其与立即数 93 相加,并将结果存在 x17 寄存器中,也就是 a7。在 Linux 内核的系统调用映射表中,数字 93 严格对应着 sys_exit 的服务。随后 PC 步进至 0x04,处理器读取并执行 ecall 指令。此时,硬件权限提升,Linux 内核介入,检查到 a7 寄存器内部的数据为 93,于是内核执行进程清理工作,彻底在内存中抹除该程序的运行状态。

M posts/玩茂林源记.gmi => posts/玩茂林源记.gmi +1 -0
@@ 1,4 1,5 @@
# 玩《茂林源记》
2026-02-15

《茂林源记》,或称 Root(以下也这么称呼),是一个区域控制类桌游。虽然这么说,但它的标签还是很多的,例如德式桌游标准的得分制、应该被划分给美式桌游的阵营机制等等。我先前为这款游戏写过一些评价,本来没有打算继续去写该游戏的说明,但介于自己刚写了个扫雷的入门说明,最终还是写下了这篇文章。


M posts/用笑脸玩扫雷.gmi => posts/用笑脸玩扫雷.gmi +2 -1
@@ 1,4 1,5 @@
# 用笑脸玩扫雷
2026-02-14

想必大家都有玩过「扫雷」这款游戏,尤其是经历过 Windows 早年版本时代的人们,在计算机的开始菜单里找了半天,好不容易找到「游戏」文件夹,里面赫然躺着一个应用程序。双击打开,看到一个黄黄的微笑,心想这游戏肯定很简单吧!然后便被炸弹炸死。



@@ 26,7 27,7 @@

接着我们用这个逻辑去理解「1-2」定式。想象这么一个场景,M 是 1,N 是 2。这意味着公共区域内最多只能有 1 颗雷,绝对不能再多。既然最多只能有 1 颗雷,那么 N 的最后那颗雷哪里来?答案是在 N 的独占区域内。也就是说,我们可以通过减法公式 N - M = 1,来得出答案 1 颗雷必然存在于大数字的独占区域内。

再来看「1-2-1」定式。我们这里使用 M  1、N  2、O = 1 来代表这个场景。假设我们把雷放在 N 的正下方,这颗雷会同时被 M、N、O 看到,且同时满足 M 和 O 的条件。可是,中间的 N 还差 1 颗雷。但这颗雷没有地方放了,因为如果再在任何地方放雷,左右两边的 1 就会变成 2,也就违背了已知条件。所以,结论只有一个:中间那个公共格子绝对不能有雷。既然中间不能有雷,为了满足中间的 2,雷只能被迫分布在两个 1 的下方。也就是说,「1-2-1」是一个硬性定式,只要看到了就可以断定两个 1 下面有雷,而 2 的下面没有。
再来看「1-2-1」定式。我们这里使用 M = 1、N = 2、O = 1 来代表这个场景。假设我们把雷放在 N 的正下方,这颗雷会同时被 M、N、O 看到,且同时满足 M 和 O 的条件。可是,中间的 N 还差 1 颗雷。但这颗雷没有地方放了,因为如果再在任何地方放雷,左右两边的 1 就会变成 2,也就违背了已知条件。所以,结论只有一个:中间那个公共格子绝对不能有雷。既然中间不能有雷,为了满足中间的 2,雷只能被迫分布在两个 1 的下方。也就是说,「1-2-1」是一个硬性定式,只要看到了就可以断定两个 1 下面有雷,而 2 的下面没有。




M posts/读大闸蟹.gmi => posts/读大闸蟹.gmi +1 -0
@@ 1,4 1,5 @@
# 读《大闸蟹》
2026-02-23

这是陈昌平在零几年写的一篇短篇小说。


M posts/读那片血一般红的杜鹃花.gmi => posts/读那片血一般红的杜鹃花.gmi +1 -0
@@ 1,4 1,5 @@
# 读《那片血一般红的杜鹃花》
2026-02-07

我这个学期开始上中文课了。这节课是短篇小说课,主要是阅读上个世纪台湾、大陆等作者们的短篇小说。


M posts/谈模仿学习与身份误区.gmi => posts/谈模仿学习与身份误区.gmi +1 -0
@@ 1,4 1,5 @@
# 谈模仿学习与身份误区
2026-01-19

我在网络冲浪时看到了一位网友的求助。他自小就没有被教导如何和人打交道,长大后先是被母亲认定是一个孤僻的人,又被学校的环境误导,以为优秀的道路注定是孤独的、维持人际关系不重要。


M posts/那些不受欢迎的想法.gmi => posts/那些不受欢迎的想法.gmi +1 -0
@@ 1,4 1,5 @@
# 那些不受欢迎的想法
2026-02-25

室友自上个月开始,和另一位有趣的人联合举办了一个活动,名为「那些不受欢迎的想法」。