# qbe-doc **Repository Path**: sugarfillet/qbe-doc ## Basic Information - **Project Name**: qbe-doc - **Description**: QBE Document - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-28 - **Last Updated**: 2024-11-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QBE document [STOPPED] ## Read me First QBE (Quentin's Bizarre Experiment) 是一个有着独立 IR 的中后端程序,harelang 和 cprog 等语言前端采用 QBE 做中端优化和后端代码生成。如果你对编译器的实现感兴趣,明天也感兴趣, Let's Go. 本文档分析 QBE 实现逻辑,主要基于测试用例进行分析,将测试用例的调试过程展开以详细地体现其实现逻辑,期望读者更快的掌握中后端的实现逻辑,减少不必要的代码阅读与调试 其次引用 Engineering A Compiler 2nd Edition by Cooper and Torczon.pdf 相应章节,来注释 QBE 中实现的一些比较偏理论的算法或者技术,比如: - 中端 SSA :快速支配者算法、Liveout 算法、ssa 构建、基于 alias 分析的内存优化、GVN/GCM、 - 后端 SSA :instruction "S"election、instruction "S"cheduel、reg"A" ## Progress - [x] QBE 介绍 1_qbe_introduction.md - [ ] QBE IR 解析 2_qbe_ir.md 3_qbe_parse.md - [x] QBE 中端1 - ssa 5_qbe_ssa_1_dom.md 5_qbe_ssa_2_liveout.md 5_qbe_ssa_3_build.md - [x] QBE 中端2 - 内存优化 6_qbe_mem_0_promote.md 6_qbe_mem_1_alias.md 6_qbe_mem_2_load_elim.md 6_qbe_mem_3_slot_merge.md - [ ] QBE 中端3 - gvn/gcm 7_qbe_gvn_gcm.md - [ ] QBE 后端 8_qbe_arch_1_lower.md 8_qbe_arch_2_isel.md 8_qbe_arch_3_spill.md 8_qbe_arch_4_rega.md 8_qbe_arch_5_emit.md ## WARNING - 此文档基于 Z_20240222135707-qbe.org 代码分析笔记,进行整理,此笔记内容比较凌乱,但有些没整理的东西(比如:IR 指令解读、GVN/GCM)还是值得一看的 - 此文档**暂停**了:在 QBE 中参与了 GVN/GCM 特性的支持,但是此项目太不活跃了,that frustrates me