← 文章 / 开源项目
Hacker News 19小时前 · 2026-08-10 02:39:17 · 1 阅读

Microsoft Word for Windows 1.1a 原生 x64 移植版

本项目是 Microsoft Word for Windows 1.1a 的完整原生 Windows x64 移植版本,其历史代号为 Opus。它在原始 Word 源码和资源的基础上,用现代实现替换了原有的 16 位汇编、分段内存以及 Win16 平台相关的部分。

最终得到的是以 64 位 Windows 可执行文件形式运行的原版 Word 应用程序和用户体验。这不是模拟器,也不是用现代编辑器控件重新实现的版本。

环境要求

  • 64 位 Windows
  • Visual Studio 2022,并安装 使用 C++ 的桌面开发
  • 通过 Visual Studio 安装的 Windows 10 或 Windows 11 SDK
  • CMake 3.25 或更高版本
  • PowerShell

构建与运行

克隆仓库,配置内置的 CMake preset,然后在 PowerShell 中执行构建:

git clone https://github.com/jmarshall23/msword.git
Set-Location msword\src

cmake --preset x64-debug
cmake --build --preset x64-debug

& ..\bin\WORD1.exe

如需构建优化版本,请改用 release preset:

cmake --preset x64-release
cmake --build --preset x64-release
& ..\bin\WORD1.exe

这些 preset 使用 Visual Studio 2022 x64 生成器。配置完成后,生成的解决方案也可以直接从 out\MicrosoftWordX64Port.sln 打开,将 WORD1 设为启动项目即可。

测试

在仓库根目录下运行完整的 Debug 测试套件:

ctest --test-dir .\out -C Debug --output-on-failure

如果当前目录已经是 src,则:

ctest --test-dir ..\out -C Debug --output-on-failure

对于 release 构建,将 Debug 替换为 Release。测试套件覆盖了移植后的 x64 运行时、原始 Word 的数据结构与命令表、进程启动流程,以及包括键入、选择、格式化、对话框和保存操作在内的自动化 UI 流程。

项目结构

路径 用途
src/Opus/ 原始的 Microsoft Word/Opus 应用程序源码和资源
src/OpusEtAl/ 原始的配套工具、库以及构建输入
src/OpusProg/ 历史项目文档
src/port/original/ x64 兼容层、转换后的例程以及测试
src/port/tools/ 用于替代历史构建工具的原生实现
src/cmake/ 资源与源代码生成辅助工具
out/ CMake 缓存以及生成的 Visual Studio 解决方案
build/ 中间工具、测试、探针、PDB 以及诊断产物
bin/ 最终的可执行文件及运行时文件

outbuildbin 在配置和编译过程中于本地生成。

移植的工作原理

原始的 C 与资源文件仍然是权威实现,移植仅补充了让这些代码在 64 位 Windows 上安全构建和运行所需的平台层内容:

  • 16 位 x86 汇编入口点被转换为定长 C 或 C++ 代码。
  • 分段及双间接内存句柄被映射到一套 x64 安全的原生运行时。
  • Win16 特有的启动、消息、图形、文件以及资源行为被适配到当前的 Win32 API。
  • 原始的命令、对话框、光标、位图等生成资源由原生宿主工具作为 CMake 构建图的一部分重新生成。
  • 单元、运行时、冒烟以及 UI 测试确保与原算法和应用行为兼容。

CMake 会枚举遗留的汇编目录,但不会将这些模块编译进原生目标。这样既保留了历史实现以供参考,又确保所有交付的代码都对 AMD64 有效。

常用目标

目标 说明
WORD1 原生 x64 的 Microsoft Word 可执行文件
opus_original_engine 为 x64 编译的原始 Word 应用引擎
opus_x64_runtime 原生运行时及转换后的汇编行为
opus_word1_ui_test 自动化端到端 UI 测试驱动
legacy_sources 在 IDE 中可见的原始汇编参考集合

使用以下命令构建指定目标:

cmake --build --preset x64-debug --target WORD1

贡献

改动应在保留 Word 原有行为的同时,确保所有原生接口的指针宽度安全。优先采用与源码语义等价的翻译方式重写历史例程,将不可避免的 Windows API 适配隔离在移植边界处,并为新翻译的行为添加针对性的测试。

版权

历史源码文件保留了原始的微软及第三方版权声明。本仓库目前尚未包含顶层许可证文件,在再分发源码或二进制文件之前,请先查阅相应的权利许可。

原始来源: Hacker News

评论 (0)