【尘封 57 年的代码史诗】阿波罗登月程序代码全开源:人类第一次登月,全靠这 14.5 万行汇编代码撑起
目录一、写在前面从月球到 GitHub跨越半个世纪的代码史诗二、登月代码的载体AGC 计算机算力不如计算器的 “航天大脑”三、开源历程从 NASA 最高机密到 GitHub 全民可及3.1 解密与数字化民间发起的代码考古3.2 官方正式开源从档案馆到 GitHub3.3 开源内容覆盖四、核心拆解登月程序的 6 大核心模块每一行都关乎生死4.1 Executive 执行程序2KB RAM 里的实时操作系统4.2 P60 系列 着陆制导程序月球着陆的核心灵魂4.3 GN 制导与导航系统地月往返的 “导航地图”4.4 DAP 数字自动驾驶仪飞船的 “稳定器”4.5 故障处理与中断系统太空任务的 “救命保险”4.6 雷达与传感器数据处理模块飞船的 “眼睛和耳朵”五、经典代码解析改变人类历史的几行汇编代码5.1 1202 报警核心代码拯救登月任务的容错逻辑5.2 着陆制导核心代码P66 手动控制模式六、实战教程5 分钟在本地复刻运行阿波罗登月代码6.1 环境要求6.2 一键安装与运行步骤6.3 模拟登月着陆操作6.4 代码编译与修改七、技术奇迹60 年代的代码藏着现代软件工程的终极答案7.1 极致的资源优化零冗余的代码设计7.2 前瞻性的容错设计零容错的航天级标准7.3 模块化编程与软件工程的诞生7.4 极致严谨的代码注释甚至藏着工程师的彩蛋八、写在最后从登月代码到 AI 编程不变的工程内核 总结速查卡核心信息速查核心代码模块速查开源资源速查一、写在前面从月球到 GitHub跨越半个世纪的代码史诗2026 年是阿波罗 11 号实现人类首次登月的第 57 周年当我们惊叹于 SpaceX 的可回收火箭、星舰的火星计划时很少有人会想起1969 年 7 月 20 日把阿姆斯特朗和奥尔德林送上月球的是一台算力还不如如今普通计算器的计算机和 14.5 万行手写的汇编代码。更令人震撼的是这份曾被 NASA 列为最高机密的登月程序代码早已完成了从 “月球任务核心机密” 到 “GitHub 全民可学习的开源史诗” 的跨越。2016 年MIT Draper 实验室原 MIT 仪器实验室阿波罗制导计算机的研发方正式将阿波罗 11 号的完整 AGC 代码开源上传至 GitHub截至 2026 年该仓库已斩获 12.7 万 Star成为 GitHub 星标最高的经典编程项目之一被开发者称为 “人类软件工程史上的活化石”。我之前写过 Agentic Engineering 六大核心能力、langcli 终端智能体全解析、Claude Code 全栈开发指南见证了 AI 编程时代的效率革命但当我逐行读完这份 57 年前的汇编代码时才发现现代软件工程所有的先进理念都早已被这群航天工程师写进了登月代码里。这篇文章我们就完整拆解这份开源的登月程序代码从承载代码的 AGC 计算机到开源历程再到核心模块、经典代码解析、本地复刻实战以及它给现代编程带来的终极启示。二、登月代码的载体AGC 计算机算力不如计算器的 “航天大脑”所有登月程序代码都运行在阿波罗制导计算机Apollo Guidance Computer, AGC上 —— 这是人类历史上第一台集成电路计算机也是当时世界上最小、最先进的数字计算机更是阿波罗登月任务的绝对核心大脑。它负责飞船的姿态控制、轨道计算、着陆制导、故障处理全程主导从地球到月球、再从月球返回地球的全流程制导任务。但以今天的眼光来看它的硬件参数简陋到难以想象表格硬件参数阿波罗 AGC 计算机2026 年普通家用计算器2026 年普通 PC主频1.024 MHz约 10 MHz3.0 GHz内存 RAM2048 字约 3KB磁芯存储器32KB16GB只读存储器 ROM36864 字约 72KB绳存储器1MB1TB字长15 位1 位奇偶校验32 位64 位运算能力每秒约 8 万次加法运算每秒百万次运算每秒万亿次浮点运算就是这样一台算力连如今 10 块钱的计算器都不如的计算机要完成载人登月的全流程制导任务容错率为 0—— 任何一行代码出错、一个计算失误都可能导致宇航员永远留在太空。而这一切的极限挑战都靠 14.5 万行手写的汇编代码来实现。这份代码的核心负责人是玛格丽特・汉密尔顿Margaret Hamilton—— 软件工程领域的先驱正是她带领 MIT 的 100 人工程师团队完成了 AGC 软件的全量开发也正是她在项目中首次提出了 “软件工程” 这个概念彻底改变了软件行业的发展轨迹。三、开源历程从 NASA 最高机密到 GitHub 全民可及这份登月代码的开源之路跨越了整整 47 年是一群技术爱好者与官方机构共同完成的 “代码考古” 壮举3.1 解密与数字化民间发起的代码考古1969 年登月任务完成后AGC 的全部代码、设计文档都被 NASA 列为机密档案仅在航天系统内部流转。直到 1970 年代随着阿波罗计划结束相关文档才逐步解密向公众开放查阅权限但仅能在 NASA 档案馆查看纸质扫描件没有可执行的数字化代码。2003 年程序员Ron Burkey发起了Virtual AGC开源项目开始了漫长的代码考古工作他逐页扫描 NASA 档案馆里的 AGC 代码纸质清单手动转录、校对、数字化还原出可编译、可运行的 AGC 代码同时开发了 AGC 模拟器让普通人能在现代计算机上运行这份 50 年前的登月程序。3.2 官方正式开源从档案馆到 GitHub2016 年 7 月MIT Draper 实验室原 MIT 仪器实验室AGC 的研发方正式将阿波罗 11 号、阿波罗 12 号的完整 AGC 源代码上传至 GitHub 官方仓库完成了官方开源。仓库中不仅包含完整的汇编源代码还有原始的代码清单扫描件、设计文档、注释说明甚至保留了当年工程师手写的注释、吐槽、彩蛋。开源仓库地址https://github.com/chrislgarry/Apollo-11https://github.com/chrislgarry/Apollo-11截至 2026 年该仓库已累计获得 12.7 万 Star1.8 万 Fork成为 GitHub 上最受欢迎的经典编程项目不仅有开发者持续维护、更新模拟器还衍生出了 AGC 代码教学、复刻、硬件还原等一系列衍生项目。3.3 开源内容覆盖官方开源的内容完整覆盖了阿波罗计划的全任务代码阿波罗 11 号登月舱LM与指令舱CM的完整 AGC 代码阿波罗 12 号 - 阿波罗 17 号各次任务的迭代版 AGC 代码完整的汇编代码清单、原始扫描件、设计文档配套的汇编器、模拟器、调试工具当年工程师的开发日志、注释、故障处理记录四、核心拆解登月程序的 6 大核心模块每一行都关乎生死开源的 AGC 代码采用的是专门为 AGC 计算机设计的汇编语言分为核心系统程序和任务应用程序两大层总计 14.5 万行代码其中 6 大核心模块直接决定了登月任务的成败。4.1 Executive 执行程序2KB RAM 里的实时操作系统这是 AGC 的内核也是人类历史上最早的实时抢占式多任务操作系统之一它要在仅 3KB 的 RAM 里实现多任务调度、优先级管理、中断处理是整个 AGC 软件的 “大脑中枢”。核心能力支持 8 个优先级的任务调度高优先级任务可抢占低优先级任务的 CPU 资源管理所有硬件中断处理传感器、雷达、操作面板的实时信号内存资源管理在 2048 字的 RAM 里实现任务间的内存隔离与复用故障监控与降级处理当 CPU 过载时自动丢弃低优先级任务保障核心制导功能正常运行登月史上最关键的作用阿波罗 11 号着陆过程中著名的1202/1201 报警正是这个模块的容错机制救了整个任务。当时着陆雷达的数据涌入导致 CPU 过载Executive 程序自动丢弃了 “雷达数据显示” 等低优先级任务保住了着陆制导、姿态控制等核心功能让登月任务得以继续。4.2 P60 系列 着陆制导程序月球着陆的核心灵魂这是登月舱着陆阶段的核心程序也是整个 AGC 代码中最复杂、最关键的部分分为 P63、P64、P66 三个核心子模块全程主导从绕月轨道到月面着陆的全过程。表格程序模块核心作用登月任务中的关键表现P63制动接近阶段控制登月舱减速从绕月轨道进入着陆轨道精准对准着陆区P64最终着陆阶段自动控制着陆器的下降速度、姿态实时计算着陆点完成精准着陆P66手动姿态控制模式阿姆斯特朗发现预定着陆区布满陨石坑后切换到该模式手动控制着陆器姿态完成了人类首次月面着陆这个模块的代码包含了完整的轨道动力学计算、引力模型、推进器控制逻辑要在 1MHz 的主频下实时更新着陆器的位置、速度、姿态每一个计算周期的误差都可能导致着陆失败。4.3 GN 制导与导航系统地月往返的 “导航地图”GNGuidance Navigation模块是整个任务的导航核心负责计算飞船的实时位置、速度、轨道参数从地球发射、地月转移、绕月飞行、月面着陆、月面起飞、月地返回、再入大气层全流程的导航计算都由这个模块完成。核心能力基于惯性测量单元IMU的传感器数据实时解算飞船的姿态与位置轨道参数计算提前规划地月转移轨道、绕月轨道、返回轨道星光导航校准通过观测恒星位置修正惯性导航的累积误差再入大气层的弹道计算精准控制飞船的再入角度避免烧毁或弹回太空4.4 DAP 数字自动驾驶仪飞船的 “稳定器”DAPDigital Auto-Pilot数字自动驾驶仪负责飞船的姿态稳定与推进器控制无论是指令舱的绕月飞行还是登月舱的着陆过程飞船的每一次姿态调整、推进器点火都由这个模块精准控制。它要解决的核心问题飞船在太空中处于失重状态 slightest 的推进器点火都会导致姿态变化DAP 要以 20 次 / 秒的频率实时读取姿态传感器数据计算推进器的点火时长、方向确保飞船始终保持在预定姿态哪怕是宇航员手动操作也要经过 DAP 的平滑处理避免操作失误。4.5 故障处理与中断系统太空任务的 “救命保险”这是 AGC 代码中最具前瞻性的模块也是现代软件工程容错设计的鼻祖。阿波罗计划的工程师们提前预判了上百种可能出现的故障场景为每一种故障都编写了对应的处理逻辑从传感器失效、CPU 过载到推进器故障、导航数据异常都有完整的降级、备份、应急处理方案。最经典的就是 1202/1201 报警的处理逻辑代码提前定义了 “CPU 过载” 的故障场景预设了 “丢弃低优先级任务保障核心功能” 的处理方案才让阿波罗 11 号的着陆任务没有因为报警而中止。4.6 雷达与传感器数据处理模块飞船的 “眼睛和耳朵”这个模块负责对接飞船上所有的传感器、雷达、操作面板包括惯性测量单元、着陆雷达、 rendezvous 雷达、星光望远镜、宇航员操作面板实时读取、校验、过滤传感器数据传递给制导、导航、自动驾驶模块。它的核心挑战传感器数据可能存在噪声、延迟、错误模块要在极短的时间内完成数据校验、滤波、异常值剔除确保传递给核心模块的数据是准确的不能因为一个错误的传感器数据导致制导计算失误。五、经典代码解析改变人类历史的几行汇编代码开源的 AGC 代码中有几段代码直接决定了人类登月的成败我们逐行解析看看 57 年前的航天工程师是如何在极致受限的硬件下写出零容错的航天级代码。5.1 1202 报警核心代码拯救登月任务的容错逻辑阿波罗 11 号着陆过程中着陆舱的计算机连续触发 1202 报警地面指挥中心最终给出了 “继续着陆” 的指令背后就是这段提前写好的容错代码。1202 报警的本质Executive 程序检测到 CPU 过载无法在一个执行周期内完成所有调度任务触发了 “任务溢出” 告警。而代码的核心逻辑是自动丢弃低优先级任务保障核心制导功能正常运行。以下是开源代码中Executive 程序的核心调度代码AGC 汇编带注释翻译assembly; 阿波罗AGC Executive程序 核心任务调度代码 ; 功能优先级抢占式调度CPU过载时自动丢弃低优先级任务 ; 作者MIT仪器实验室 1969年 ; 对应1202报警的核心处理逻辑 ; 任务优先级表8个优先级数字越小优先级越高 PRIORITY_TABLE: 2DEC 0 ; 优先级0着陆制导核心程序最高优先级 2DEC 1 ; 优先级1姿态控制自动驾驶仪 2DEC 2 ; 优先级2导航数据计算 2DEC 3 ; 优先级3雷达数据处理 2DEC 4 ; 优先级4宇航员操作面板响应 2DEC 5 ; 优先级5遥测数据回传 2DEC 6 ; 优先级6系统状态显示 2DEC 7 ; 优先级7冗余数据备份最低优先级 ; 核心调度循环 EXECUTIVE_LOOP: TS Q ; 保存当前程序计数器 CCS A ; 检查当前CPU负载 TC OVERFLOW_HANDLER ; 负载超标跳转到过载处理 TC NO_OVERFLOW ; 负载正常执行正常调度 ; 过载处理核心逻辑1202报警触发入口 OVERFLOW_HANDLER: CAF PRIORITY_THRESHOLD ; 加载优先级阈值 COMP CURRENT_TASK_PRIORITY ; 对比当前任务优先级 TC DROP_LOW_PRIORITY ; 优先级低于阈值丢弃任务 TC EXECUTE_HIGH_PRIORITY ; 优先级高于阈值强制执行 ; 丢弃低优先级任务释放CPU资源 DROP_LOW_PRIORITY: CAF ALARM_CODE_1202 ; 加载1202报警码 TS ALARM_REGISTER ; 触发1202报警通知宇航员 TC EXECUTIVE_LOOP ; 返回调度循环只执行高优先级任务 ; 正常执行高优先级任务 EXECUTE_HIGH_PRIORITY: TC TASK_EXECUTE ; 执行当前任务 TC EXECUTIVE_LOOP ; 执行完成返回调度循环代码核心亮点提前预设了优先级分层核心制导功能永远处于最高优先级哪怕系统过载也不会被中断过载时不是直接崩溃而是主动降级丢弃非核心任务同时触发报警通知宇航员实现了 “告警不宕机”整个调度逻辑仅用了几十行汇编代码占用极少的 ROM 和 RAM 资源极致精简。正是这段代码让阿波罗 11 号在连续触发 1202 报警的情况下依然保障了着陆制导功能的正常运行最终完成了人类首次登月。5.2 着陆制导核心代码P66 手动控制模式阿姆斯特朗在发现预定着陆区布满陨石坑后果断切换到 P66 手动控制模式最终完成了安全着陆。以下是 P66 模式的核心控制代码片段assembly; P66 手动姿态控制模式 核心代码 ; 功能接收宇航员手动操作输入平滑控制着陆器姿态保障手动着陆安全 ; 登月任务中阿姆斯特朗通过该模式完成了人类首次月面着陆 P66_ENTRY: CAF MANUAL_MODE_FLAG ; 开启手动模式标志 TS CONTROL_MODE_REG ; 设置控制模式为手动 CAF DAP_SMOOTH_FACTOR ; 加载自动驾驶平滑系数 TS DAP_CONFIG_REG ; 配置自动驾驶仪为手动辅助模式 ; 手动控制输入读取循环 P66_INPUT_LOOP: CS HAND_CONTROL_X ; 读取宇航员X轴操作杆输入 TS DAP_X_INPUT ; 传递给自动驾驶仪 CS HAND_CONTROL_Y ; 读取Y轴操作杆输入 TS DAP_Y_INPUT ; 传递给自动驾驶仪 CS HAND_CONTROL_Z ; 读取Z轴操作杆输入 TS DAP_Z_INPUT ; 传递给自动驾驶仪 ; 着陆器姿态实时控制 P66_ATTITUDE_CONTROL: TC DAP_ATTITUDE_CALC ; 调用自动驾驶仪计算姿态调整量 TC THRUSTER_CONTROL ; 控制推进器点火调整姿态 TC LANDING_RADAR_UPDATE ; 更新着陆雷达高度、速度数据 TC ALTITUDE_DISPLAY ; 给宇航员显示当前高度、下降速度 ; 着陆检测逻辑 P66_LANDING_CHECK: CCS LANDING_CONTACT_SIGNAL ; 检测着陆腿接触信号 TC LANDING_SUCCESS ; 接触月面触发着陆成功流程 TC P66_INPUT_LOOP ; 未着陆返回输入循环持续控制 ; 着陆成功处理 LANDING_SUCCESS: CAF ENGINE_SHUTDOWN_FLAG ; 关闭下降发动机 TS ENGINE_CONTROL_REG ; 执行发动机关闭 CAF LANDING_SUCCESS_ALARM ; 触发着陆成功提示 TS ALARM_REGISTER ; 通知宇航员着陆成功 TC POST_LANDING_PROCESS ; 跳转到着陆后流程这段代码的核心设计是手动操作 自动驾驶辅助的融合宇航员只需要给出操作方向自动驾驶仪会自动完成平滑的姿态调整、推进器控制避免手动操作的失误最终让阿姆斯特朗在仅剩 15 秒燃料的情况下完成了安全着陆。六、实战教程5 分钟在本地复刻运行阿波罗登月代码很多人觉得这份 57 年前的汇编代码只能看不能跑其实借助开源的 Virtual AGC 模拟器我们可以在现代电脑上一键复刻运行阿波罗登月的完整程序甚至模拟登月着陆的全过程。6.1 环境要求操作系统Windows/macOS/Linux 全平台支持依赖Git、GCC 编译器、Python 3.86.2 一键安装与运行步骤bash运行# 步骤1克隆Virtual AGC开源仓库 git clone https://github.com/virtualagc/virtualagc.git cd virtualagc # 步骤2编译安装AGC汇编器与模拟器 # macOS/Linux make all # WindowsWSL2 make all # 步骤3运行阿波罗11号登月舱AGC程序 ./yaAGC --coreApollo11/Luminary099/Luminary099.bin --cfgApollo11/Luminary099/Luminary099.ini # 步骤4打开DSKY模拟面板宇航员操作面板 # 新开一个终端执行 ./yaDSKY2 --cfgApollo11/Luminary099/Luminary099.ini6.3 模拟登月着陆操作运行成功后你会看到阿波罗登月舱的 DSKY 操作面板这正是当年阿姆斯特朗和奥尔德林在登月舱里操作的面板复刻版。你可以通过面板输入指令模拟登月着陆的全过程输入V37E选择程序编号63E进入 P63 接近月面程序输入着陆参数启动自动接近程序模拟登月舱减速接近月面输入V37E 66E切换到 P66 手动控制模式模拟阿姆斯特朗的手动着陆操作面板上会实时显示当前高度、下降速度、姿态数据完全复刻当年的登月过程。6.4 代码编译与修改如果你想修改、编译 AGC 代码也可以通过以下命令完成bash运行# 进入阿波罗11号登月舱代码目录 cd Apollo11/Luminary099 # 编译AGC汇编代码 ../yaASM/bin/yaASM Luminary099.agc # 编译成功后生成新的.bin文件即可加载到模拟器中运行七、技术奇迹60 年代的代码藏着现代软件工程的终极答案当我们逐行读完这份开源的登月代码会发现一个令人震撼的事实我们今天在软件工程领域推崇的所有先进理念都早已被这群航天工程师在 1969 年用汇编代码完美实现了。7.1 极致的资源优化零冗余的代码设计在 72KB ROM、3KB RAM 的极致受限环境下工程师们把每一个 bit 的资源都用到了极致代码里没有一行冗余指令每一个寄存器、每一个内存地址都被反复复用用绳存储器ROM存储代码每一个 bit 都由女工手工编织铜线实现1 就是穿过去0 就是绕过去不允许任何一行错误代码为了节省内存甚至把两个 15 位的数压缩到一个 30 位的存储单元里实现了 “一个地址存两个数” 的极致优化。对比今天的 AI 编程时代很多人用 Vibe Coding 生成的代码动辄几百 KB 冗余内容不考虑内存、性能开销这份 57 年前的代码给我们上了最生动的一课软件工程的本质是在有限的资源里实现最优的功能与可靠性。7.2 前瞻性的容错设计零容错的航天级标准登月代码最令人惊叹的不是它实现了多么复杂的功能而是它提前预判了所有可能出现的故障为每一个错误都写好了处理方案。在阿波罗计划中工程师们遵循一个核心原则任何一个单点故障都不能导致任务失败更不能威胁宇航员的生命。这份代码里上百种故障场景都有对应的降级、备份、应急处理逻辑哪怕是 CPU 过载、传感器失效、雷达数据错误系统都能继续运行保障核心功能正常。这正是现代软件工程最核心的高可用设计理念而 57 年前的航天工程师用汇编代码在算力极致受限的计算机上完美实现了这一点。7.3 模块化编程与软件工程的诞生玛格丽特・汉密尔顿在开发 AGC 软件的过程中首次提出了 “软件工程” 这个概念而这份代码正是模块化编程的经典范本。整个 AGC 代码被拆分为独立的核心模块每个模块负责单一功能模块间通过标准化的接口调用低耦合、高内聚哪怕一个模块出现故障也不会影响其他模块的运行。这种设计思想直到今天依然是我们构建大型软件系统的核心准则。7.4 极致严谨的代码注释甚至藏着工程师的彩蛋开源的代码里每一个子程序、每一段关键逻辑都有清晰、详细的注释哪怕是第一次接触 AGC 汇编的开发者也能通过注释理解代码的作用。更有趣的是代码里还藏着当年工程师们的手写注释和彩蛋有一段代码的注释写着“这里是月球着陆的最后一公里愿上帝与我们同在”错误处理模块的注释里写着“如果这里触发了那我们就完蛋了但还是写了处理逻辑”甚至有一段代码的注释是工程师对 NASA 管理层的吐槽被完整保留在了开源代码里。这些注释让这份冰冷的汇编代码有了温度也让我们看到了当年那群工程师在人类最伟大的航天任务里严谨又浪漫的一面。八、写在最后从登月代码到 AI 编程不变的工程内核2026 年的今天AI 编程已经全面普及我们用 Claude Code、Cursor 可以在几分钟内生成上万行代码效率是 57 年前的航天工程师的上万倍。但当我们看完这份登月代码就会发现软件工程的本质从来都没有变过。当年的工程师用 14.5 万行手写汇编代码在算力不如计算器的计算机上完成了人类登月的壮举靠的不是先进的工具而是严谨的工程思维、极致的可靠性设计、对每一行代码负责的态度。而今天很多人沉迷于 Vibe Coding 的 “魔法体验”只关注代码能不能跑起来却忽略了代码的可靠性、可维护性、容错设计最终写出的 Demo 好看上线就崩。这也是为什么 Andrej Karpathy 会说“Vibe Coding 只是过渡真正的未来是 Agentic Engineering”—— 而 Agentic Engineering 的核心正是回归软件工程的本质可靠、可控、可维护、零容错。这份开源的登月代码不仅是人类航天史上的史诗更是软件工程史上的活化石。它告诉我们无论工具怎么迭代算力怎么提升软件工程的内核永远不变 —— 对每一行代码负责对每一个故障场景预判在有限的资源里实现最可靠的功能。 总结速查卡核心信息速查项目关键信息代码名称阿波罗制导计算机 AGC 汇编代码代码规模14.5 万行手写汇编代码运行硬件1.024MHz 主频、3KB RAM、72KB ROM开源时间2016 年 MIT 官方 GitHub 开源核心负责人玛格丽特・汉密尔顿软件工程先驱核心历史意义人类首次登月的核心软件首次提出 “软件工程” 概念核心代码模块速查模块名称核心作用登月关键贡献Executive 执行程序实时多任务操作系统内核1202 报警容错处理保障核心功能运行P60 系列着陆程序月面着陆制导核心阿姆斯特朗手动着陆模式完成人类首次月面着陆GN 导航系统地月往返轨道导航全任务轨道计算、位置解算DAP 自动驾驶仪飞船姿态稳定控制精准控制飞船姿态保障飞行稳定开源资源速查资源名称链接阿波罗 11 号 AGC 代码官方仓库https://github.com/chrislgarry/Apollo-11Virtual AGC 模拟器项目https://github.com/virtualagc/virtualagcAGC 代码官方文档与设计资料https://www.ibiblio.org/apollo/系列文章Agentic Engineering 六大核心能力全解析langcli 终端智能体全解析Claude Code 必装的十大 SkillsCC Switch 全解析Claude Code 王炸功能参考链接NASA 阿波罗计划 AGC 官方档案MIT Draper 实验室阿波罗计划开源公告玛格丽特・汉密尔顿与软件工程的诞生Virtual AGC 项目官方文档