Halt and Catch Fire
208 points • 2 days agoArticle Link

"Halt and Catch Fire"(HCF)最初是程序员之间的玩笑用语,用来形容那些会让 CPU 停止正常工作、必须重启才能恢复的机器码指令。尽管 AMC 的同名剧集讲的是计算机行业,这个术语本身却更早产生,源自工程师的笑话。它成了一个总称,用来指未记录或无效的操作码导致处理器死锁、用于模拟挂起的测试模式,以及真实存在的硬件缺陷。这种幽默沿袭了像 ADD 、 JMP 这类三字母汇编助记符的风格,类似的例子还有 EPI(Execute Programmer Immediately)和 DC(Divide and Conquer)。

这个说法在 Motorola 6800 处理器上得到了具体的案例。 1977 年 12 月,Gerry Wheeler 在 BYTE 杂志上发表文章,披露了该芯片的一些未记录指令。在 256 种可能的操作码中,有 59 种未在官方文档中说明。其中两个字节 $9D 和 $DD 会让处理器停止正常工作,程序计数器开始快速在内存地址间跳动并忽略中断。 Wheeler 把这种现象称为 "Halt and Catch Fire",并指出虽然机器并不会真的着火,但在无法恢复、必须重启的意义上确实近乎如此。

"catch fire"这一表述并非全然夸张。 IBM System/360 在遇到某些无效操作码时,因持续访问特定内存位置,确实有过过热甚至着火的风险。在 Motorola 6800 上,这种现象更像是地址总线变成了一个 16 位计数器,毫无目的地顺序读取内存。工程师们后来还找到了实用用途,比如在硬件初次调试时用来扫描 RAM,把潜在的漏洞变成了"意外之喜"。现代的研究也证实了这些细节,发现计数模式开始前存在延迟,而且不同未记录操作码的行为各不相同。

类似的概念并不限于 Motorola 。 6502 处理器存在会锁死 CPU 的非法操作码,Pentium 的 F00F bug 允许精心构造的指令冻结处理器;在一些架构上,某些指令对可能会永远等待永远不会到来的中断。现代对 x86 的模糊测试仍通过向复杂处理器输入随机或异常数据来发现无效状态,说明即便技术进步,这类问题依然存在。

随着软件层次越来越高,人们更容易忽视底层硬件的实际情况。 HCF 提醒我们计算机毕竟是物理系统,可能以戏剧性的方式出错。这一短语之所以经久不衰,是因为它既反映了技术现实,又带有工程师式的黑色幽默。鉴于其吸引力,将 "HCF" 用于未来的项目或公司以延续这段计算史,也并不令人意外。

109 comments • Comments Link

一名前级操作员回忆称,他在打印命令中遗漏了一个换行字节,意外触发了哈龙灭火系统,结果一台 IBM 行式打印机在同一张纸的位置反复打印字符,直到引发火灾。这个故事说明,在早期计算环境中,一个小小的打字错误就可能导致灾难性后果。

电视剧 Halt and Catch Fire(简称 HACF)深深触动了在八九十年代经历过计算时代的人。许多人认为该剧捕捉到了那种惊奇感、可理解性和用户自主性,而这些特质在现代计算中已日渐消失——如今的设备更多被设计成吸引注意力的产品,而非透明的工具。

多位评论者称赞了该剧的演技,特别是 Lee Pace 、 Mackenzie Davis 和 Scott McNairy,认为角色刻画细腻,真实呈现了科技人对创造事物的渴望。尽管早期几季在编剧和导演上有些小瑕疵,但整体表现仍然令人信服。

剧名引用了一个老黑客笑话,指一条非法操作码会让处理器"停止运行并着火"。尽管真实硬件上从未证实过这种现象,这个说法在计算文化中确有其历史渊源。

人们常把 Halt and Catch Fire 与 Silicon Valley 相比较,认为两部剧提供了互补的视角:一部戏剧性地呈现了八九十年代的计算革命,另一部则以极高的准确性讽刺了 2010 年代的创业文化。

讨论还提到七八十年代许多先驱程序员和工程师打字技术不佳,常用两根手指敲键——因为打字并不被视为核心技能,许多人还有专职秘书或打卡员处理这类事务。此外,像 Commodore PET 和 IBM MDA 这样的早期硬件使用了 CRT 控制器(6845/6545),若通过 POKE 命令编程不当,可能停止光栅扫描,把磷光体灼伤在屏幕上,甚至损坏回扫变压器等显示器部件。

有人提到得克萨斯州石油产业与计算行业的联系,像 Texas Instruments 最初来自地球物理勘探公司,后来转型为国防电子和半导体制造企业。还有评论者对人工智能生成的垃圾账号渗透表示不满;另一些人则指出,剧中对在不同机器上快速变化的非标准键盘布局的描绘,解释了为什么触摸打字在早期计算环境并不普遍也不实用。

多位评论者称该剧最后一集精彩绝伦,有人甚至因为某角色的死去而情绪受影响,至今难以重看,这也凸显了剧作的叙事力量。

总体而言,这次讨论将对早期计算文化的怀旧、对一部制作精良电视剧的赞赏,以及有关老式硬件脆弱性和操作失误的技术轶事交织在一起。大家一致认为,Halt and Catch Fire 真实捕捉到了八九十年代计算世界的精神:那是一个更容易理解、操控性更低但更具亲力亲为感的时代,而关于硬件漏洞与操作员失误的故事也不断提醒我们,早期计算的后果有多么直接而真实。