《自制编译器》权威学习地图
按作者详细目录与中文版完整目录,把4部分、22章、86个编号小节、附录及3个附录条目组织为可重建cbc工具链。 本页覆盖23个正式目录层级,以章专属编译探针、首错定位和清理重建验收。
为什么从“116层级编译证据路线台”开始
《自制编译器》权威学习地图沿“C♭源文件 → token → AST/绑定 → IR → IA-32 → ELF → 进程”转换信息。最终进程返回正确值只能证明一条执行路径;116层级编译证据路线台保存token、AST、绑定、类型、IR、汇编、符号、重定位或加载轨迹中的适用层,让错误停在第一处分叉。
《自制编译器》权威学习地图固定C♭源码、cbc提交、JDK与JavaCC、GNU as/ld/binutils、IA-32目标、链接参数和运行环境,只改变观察层或样本族。本页交互只移动C♭源文件 → token → AST/绑定 → IR → IA-32 → ELF → 进程中的真实对象和状态,不生成置信、风险或证据分数。
来源、版本与独立重写边界
《自制编译器》权威学习地图以青木峰郎维护的日文原版完整详细目录限定4部分、22章、86个编号小节、附录和116个正式层级;本站未取得原书正文授权,中文解释、代码、图示、实验和答案均为独立教学重写。
《自制编译器》权威学习地图用JavaCC完整语法文档、ELF规范、GNU readelf、as与ld文档核对技术事实。原书主线是JavaCC、Linux/IA-32、GNU工具与ELF;现代JDK、x86-64、PIE和新版binutils默认值必须单独记录,不能改写原书时代坐标。
本章合同与可运行探针
、、、、。
《自制编译器》权威学习地图的通过不变量是“23个正式单元都能回到唯一输入、第一处分叉和可重建下游证据”。实验档案保存源码与期望、cbc提交、工具版本、目标ABI、命令与退出码、所有适用中间产物、标准错误、第一处分叉、清理记录和回归结果。
sample.cb -> tokens.json -> ast.json -> ir.txt -> sample.s -> sample.o -> sample官方目录逐项深读
第1章 开始制作编译器
四级证据 1/23。 流水线槽1将“第1章 开始制作编译器”映射为输入、结构化产物、错误合同、第一处分叉和清理后重建断言;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第2章 C♭和cbc
四级证据 2/23。 流水线槽2将“第2章 C♭和cbc”映射为输入、结构化产物、错误合同、第一处分叉和清理后重建断言;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第3章 语法分析的概要
四级证据 3/23。 前端槽3用合法、最长匹配、歧义、截断和非法字符样本核对“第3章 语法分析的概要”的token、前看、树形与源位置;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第4章 词法分析
四级证据 4/23。 前端槽4用合法、最长匹配、歧义、截断和非法字符样本核对“第4章 词法分析”的token、前看、树形与源位置;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第5章 基于JavaCC的解析器描述
四级证据 5/23。 前端槽5用合法、最长匹配、歧义、截断和非法字符样本核对“第5章 基于JavaCC的解析器描述”的token、前看、树形与源位置;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第6章 语法分析
四级证据 6/23。 前端槽6用合法、最长匹配、歧义、截断和非法字符样本核对“第6章 语法分析”的token、前看、树形与源位置;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第7章 JavaCC的action和抽象语法树
四级证据 7/23。 前端槽7用合法、最长匹配、歧义、截断和非法字符样本核对“第7章 JavaCC的action和抽象语法树”的token、前看、树形与源位置;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第8章 抽象语法树的生成
四级证据 8/23。 前端槽8用合法、最长匹配、歧义、截断和非法字符样本核对“第8章 抽象语法树的生成”的token、前看、树形与源位置;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第9章 语义分析(1)引用的消解
四级证据 9/23。 语义槽9为“第9章 语义分析(1)引用的消解”保存节点ID、声明绑定、类型/值类别、求值顺序和最小错误,失败后禁止产生伪IR;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第10章 语义分析(2)静态类型检查
四级证据 10/23。 语义槽10为“第10章 语义分析(2)静态类型检查”保存节点ID、声明绑定、类型/值类别、求值顺序和最小错误,失败后禁止产生伪IR;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第11章 中间代码的转换
四级证据 11/23。 语义槽11为“第11章 中间代码的转换”保存节点ID、声明绑定、类型/值类别、求值顺序和最小错误,失败后禁止产生伪IR;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第12章 x86架构的概要
四级证据 12/23。 机器槽12把“第12章 x86架构的概要”落实到IA-32宽度、寄存器、栈效应、调用约定与反汇编,用哨兵和差分样本验证;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第13章 x86汇编器编程
四级证据 13/23。 机器槽13把“第13章 x86汇编器编程”落实到IA-32宽度、寄存器、栈效应、调用约定与反汇编,用哨兵和差分样本验证;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第14章 函数和变量
四级证据 14/23。 机器槽14把“第14章 函数和变量”落实到IA-32宽度、寄存器、栈效应、调用约定与反汇编,用哨兵和差分样本验证;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第15章 编译表达式和语句
四级证据 15/23。 机器槽15把“第15章 编译表达式和语句”落实到IA-32宽度、寄存器、栈效应、调用约定与反汇编,用哨兵和差分样本验证;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第16章 分配栈帧
四级证据 16/23。 机器槽16把“第16章 分配栈帧”落实到IA-32宽度、寄存器、栈效应、调用约定与反汇编,用哨兵和差分样本验证;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第17章 优化的方法
四级证据 17/23。 机器槽17把“第17章 优化的方法”落实到IA-32宽度、寄存器、栈效应、调用约定与反汇编,用哨兵和差分样本验证;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第18章 生成目标文件
四级证据 18/23。 装载槽18用readelf、objdump、nm、link map与加载器轨迹核对“第18章 生成目标文件”的节/段、符号、重定位、权限和地址解析;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第19章 链接和库
四级证据 19/23。 装载槽19用readelf、objdump、nm、link map与加载器轨迹核对“第19章 链接和库”的节/段、符号、重定位、权限和地址解析;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第20章 加载程序
四级证据 20/23。 装载槽20用readelf、objdump、nm、link map与加载器轨迹核对“第20章 加载程序”的节/段、符号、重定位、权限和地址解析;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第21章 生成地址无关代码
四级证据 21/23。 装载槽21用readelf、objdump、nm、link map与加载器轨迹核对“第21章 生成地址无关代码”的节/段、符号、重定位、权限和地址解析;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
第22章 扩展阅读
四级证据 22/23。 资源槽22把“第22章 扩展阅读”绑定到一手资料、版本、可达状态、最小复现与回归产物,不以阅读列表代替实践;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。
附录
四级证据 23/23。 流水线槽23将“附录”映射为输入、结构化产物、错误合同、第一处分叉和清理后重建断言;固定样本族,只改变观察层,以116节点覆盖与首处分叉找到第一处分叉并清理重建。