Morning Edition
星期五, 一月 2, 2026

折鸦夜明け前

我们的同志在困难的时候,要看到成绩,要看到光明,要提高我们的勇气。

CSAPP3e第七章(链接)

链接(第七章 ALL)

这章内容很短, 就是书中和 15213 都有意隐去了很多细节, 自己去理解思考这些细节会很麻烦

另外 section 的翻译易引起歧义, 这里不作翻译

静态链接:

静态链接包括两个阶段, 符号解析和重定位:

符号解析

符号解析是要把每一个符号引用与符号定义联系起来

首先要理解可重定向文件的各个 section

记一次 Rust 类型系统的问题解决

在做 Codeforces Educational Round 169 D Colored Portals 时,需要找到 i 前面距离 i 最近的颜色不完全相同但也不完全不同的 j,我随手写了个

1
2
3
4
5
6
7
8
9
10
11
12
13
const vector<string> type = {"BG", "BR", "BY", "GR", "GY", "RY"};
map<string, int> m;
vector<int> lc(n, -1), rc(n, -1);

for (int i = 0; i < n; i++) {
auto condi = m | filter([&](const auto &p) { return p.first != in[i] && has_same(p.first, in[i]); });
if (auto lci = ranges::max_element(
condi, [](const auto &a, const auto &b) { return a.second < b.second; });
lci != ranges::end(condi)) {
lc[i] = lci->second;
}
m[in[i]] = i;
}

CSAPP3e第二章(整数的运算)

整数的运算(第二章 Part2)

无符号数加法溢出

无符号的数的加法溢出规则很简单, 单纯截取后 \(w\) 位, 或称对 \(2^w\) 取模。因此:

\[ x\ +_w^u\ y = \begin{cases} x + y, & x + y < 2^w, \\ x + y - 2^w, & 2^w \leq x + y < 2^{w+1}. \end{cases} \]

(\(+_w^u\) 表示最多 \(w\) 位下的二进制无符号数加法。下文\(+_w^t\)\(w\) 位补码加法)

检验无符号数加法溢出

\(s = x +_w^u y\), 当且仅当 \(s < x\) (或等价地 \(s < y\)) 时发生溢出。

(当然, 默认 \(x\)\(y\) 本身不会溢出, 即在 \([0, UMax_w]\) 的范围内)

原理易证, 分别证明充分性必要性即可, 注意利用以上公式