Skip to content

败犬日报 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 可以自动解

这个功能能自动识别的场景太局限了,有点鸡肋。