Lobsters | 📄 原文链接 | 2026-11-01 收录

用 Haskell 写 LC-3 反汇编器:没有元数据时怎么分清代码和数据

来源:abhinavsarkar.net — 2026-10-30

📋 概述

LC-3 目标文件里没有节表、符号表、重定位信息,只有混在一起的 16 位字,于是同一个字节既可能是一条合法的 JSRR R6,也可能只是字符串的一部分。作者用多趟算法破解这个歧义:先解码确定无歧义的指令,再借已解码指令的上下文推测其余部分直到不动点,然后合并字节清理数据,最后插入标签。实现用 ST 单子加可变 Vector 做原地修改。

🔑 核心要点

💡 金句

A disassembler looking only at binary code has no context.
← 返回 Lobsters 首页