败犬日报 2025-07-11
1. CUDA优化黑魔法:假装CUTLASS库(文章)
https://zhuanlan.zhihu.com/p/1926902370920568120
2. 为什么虚表里的函数从第 2 项开始
https://godbolt.org/z/bqxvKGeTP
cpp
struct Base {
virtual ~Base();
};
struct Child : Base {
~Child();
};
void foo(Base* obj) noexcept {
[[assume(obj != nullptr)]];
delete obj;
}
text
foo(Base*):
mov rax, QWORD PTR [rdi]
jmp [QWORD PTR [rax+8]]
第 1 项是 RTTI 项。
关了 RTTI 的话,第一个 RTTI 项 是 0。这是为了让 RTTI 不影响 ABI,没开 RTTI 和 开了 的链接到一起也没事,只要没访问 RTTI 仅虚函数调用是没问题的。
还有另外一个问题,为什么 RTTI 不和虚表放一起(间接寻址)?原因是一样的。如果 RTTI 信息和虚表放一起,开关 RTTI 会影响虚表布局。
3. git rerere 记住解冲突的方法,下次相同的冲突 Git 可以自动解
这个功能能自动识别的场景太局限了,有点鸡肋。