第一次看到喉返神经(recurrent laryngeal nerve,RLN)的解剖图,我怔住了整整半分钟。
那条从脑干发出的神经,本应直抵喉部,却偏要绕道下行,深入胸腔一圈,再折返向上。
在鱼类身上,这路径顺理成章;到了哺乳动物,却成了一个死结;而到了长颈鹿体内,它竟要绕行五米之远。

脖子越长,绕路越显荒唐,却无法更改。
生物没有“重构子系统”的权力,它只能在旧线路上修修补补。
那一刻,我想到的不是生物学,而是 CS:IP = F000:FFF0。
这是所有Intel电脑永远的“喉返神经”。
今天回顾历史,8086 的设计团队确实非常聪明。他们创造性地重新设计了通用寄存器、真正的堆栈指针、丰富的寻址模式、微码翻译、16 位算术和内部时钟,这是第一次将“现代 CPU”塞进一颗芯片。
只不过,由于当年寻址寄存器只有 16 位,电脑内存地址又想突破 64K,于是他们搞出了一个临时方案:“段左移 4 位 + 偏移”的假扩展。
没人想到,这个错位的 20 位怪胎设计,会将整整一代计算机文明锁死,成为个人电脑的“喉返神经”。
特别是当 IBM PC 采用 8088 之后,一切都被封印了。
1MB 地址空间被切割得支离破碎:0–640K 留给程序,640K–1MB 塞满显存、BIOS、扩展卡和通信端口。
装上 1MB 内存,一半被设备占用;装上 4MB,也得靠 EMS/XMS 驱动像撑大的气球一样勉强塞入。
整个电脑的寻址方式,就像那条喉返神经,被硬塞进早已不合身的躯壳中,却无法重新布线。
一个大程序被拆解成几十个 64K 的小盒子,链接器像搬砖一样辛苦。near/far 指针、C语言的五种编译模式(S、C、M、L、H)折腾得死去活来。
指针多算一步就跨段,call 和 return 仿佛不在一个宇宙;数组超过 64K 就会崩溃;中断向量表卡死在 0x0000;显存固定在 A0000。
我们当年写程序时,还“聪明”地利用这个“寻址魔法”,操纵段寄存器防拷贝、反调试、在ROM 区假写入、改CS偷系统中断向量表,这些“技巧”都依赖对段寄存器的操作,全是沿着那条畸形的“段:偏移”神经做文章。
当年我们依赖结构漏洞生存,而非凭借结构优雅编程。
8086 那套段寄存器本来只是权宜之计,到了 80286 却被推成了彻底的疯狂。
英特尔试图把分段模型扩展成一个庞大的保护体系:整个内存结构被迫围着“分段”这一原始补丁转圈。
最可怕的是,一旦进入 80286 的保护模式就无法返回实模式,整个系统像被封在铁盒里,只有重启电脑才能脱身。
直到80386 出来,强行引入平展寻址和分页机制,“寻址要分段”这条史前时代的畸形定律终于被压到架构底层,程序员第一次获得真正的32位寻址自由。
指针不再区分 near/far,返回地址不再错位,数组不会在 64K 边界自杀。段寄存器从主角沦为透明的影子。
这时,我们以为终于摆脱了祖先的那段绕路,以为 80386 的平展寻址把那条祖先绕路的“喉返神经”终于剪掉了,可事实不是这样。
你二舅还是你二舅,386 仍然是 x86。后来的 80486 还是 x86,哪怕英特尔改名成 Pentium,可它依旧是 x86 的延长线。
哪怕是后来变成 i3、i5、i7、i9,本质还是那一套祖传血统。名字怎么换都行,微架构翻了几十次代也行,但那条最深的印记永远在。
你当然可以把整颗芯片全部现代化,把页表、MMU、总线协议、缓存层级全换一遍,但只要它叫 x86,哪怕做到百核、做到 TB 级内存,启动的第一口气仍然必须像 1978 年的 8086 一样去跑那段古老的实模式流程。
电脑永远逃不掉那个噩梦:上电后,从 F000:FFF0 开始那个1978年的时刻醒来,假装自己还活在 1MB 的史前时代。

BIOS 再怎么换皮,UEFI 再怎么现代,都得先演一遍“古代仪式”:跑过 8086 的实模式,走过那套段模型、1MB 内存地图和 A0000 显存区,然后才缓缓进入保护模式、长模式,最终装载 Windows 11。

那条线路永远无法删除。抽象层越厚,它越像胚胎发育中必须重演的一段祖先结构。
那天,我看着喉返神经的图,再翻翻启动流程,忽然明白:
我们写代码写了这么多年,其实从未走出那个史前时代的影子。
文明再先进,外壳再光鲜,底下总有一条古老的线路,是你永远无法摆脱的。
by 云中月
评论:
曾经有一个故事,最开始的时候,铁路是靠马拉的,所以铁轨的宽度是按照两个并排的马屁股的宽度来定的,后来火车出现了,但是为了兼容以前的铁轨,所以火车的宽度也是按照两个马屁股来定的,再后来我们开始出现火箭,由于火箭需要用铁轨运输,所以火箭的宽度也被限制为两个马屁股
我喜欢把这种为了兼容性的祖宗之法不可变的东西都称之为马屁股,而我们反思计算机领域,到底有多少马屁股?x86的马屁股是非常多的,这仅仅是冰山一角,还有其他的,比如当年为了跑分作弊引入的string指令等等
我们使用计算机的界面也有大量的马屁股,最明显的就是键盘设计,不知道这个糟糕的键盘设计造成了多少腱鞘炎
计算机领域真正大发展其实也就5-60年而已,就已经积累了如此之多的马屁股。简直是不可思议。我们学习计算机的过程中,有多少时间在学习真正的知识?有多少时间在学习这些马屁股呢?
一个朝代,经过了上百年的发展,变得逐渐僵化,直到改革或者革命之后改朝换代才又重新焕发活力,其中很多也是马屁股积累的太多,去掉了这些马屁股之后重新爆发出的活力.

作为一个软件行业的人,本来应该是打破藩篱,站在勇于创新的第一线,有时候看到很多人沉迷于马屁股,被马屁股环绕不可自拔,令人感到伤心,某种程度上,当一个行业的马屁股含量超过了真正的知识的含量的时候,当这个行业的从业者,以自己对马屁股有多了解为荣,对于去掉马屁股的努力冷嘲热讽的时候,这个行业大概是老了吧。一个人衰老的标志是他对新的事物看不惯,不接受,没兴趣,一个行业也是一样的
by Suwako