C 语言并非底层语言:你的电脑不是 PDP-11

C Is Not a Low-Level Language (2018)

Meltdown 和 Spectre 漏洞的根源在于,处理器架构师为了维持 C 程序员对“底层语言”的错觉,强行在硬件上模拟 PDP-11 的抽象机器。现代 CPU 通过复杂的指令级并行和分支预测来加速看似串行的 C 代码,却因此引入了侧信道攻击的风险。为了生成快速代码,Clang 等编译器需要数百万行代码进行复杂转换,甚至不得不违反部分语言规则。C 语言早已脱离了“贴近金属”的初衷,其抽象模型与现代硬件的真实运作机制存在巨大鸿沟,程序员所感知的底层控制,实则是编译器与硬件共同编织的幻觉。

处理器厂商并非唯一责任方,我们这些从事 C/C++ 编译器开发的人也参与其中,共同维持着 C 程序员仍在编写底层代码的错觉。

同日更多故事

2026-09-07