背景:
博主是个汇编白痴,所以最近准备去学习下LoongArch汇编。
项目目标:
从汇编白痴,成为汇编菜鸡(懂一些LoongArch底层知识、可以看懂一些LoongArch汇编、可以手写一些LoongArch汇编)。
用项目带动LoongArch汇编学习,翻的龙芯架构基础手册多了,就记住了。
具备的基础能力:
能看懂C代码、会使用Git
那么现在就开始进入主题:
1. 介绍下 chibicc 是什么:
chibicc 是另一个小型 C 编译器,它实现了大多数 C11 功能。尽管它可能仍然像其他小型编译器一样属于“玩具编译器”类别,但 chibicc 可以编译多个真实世界的程序,包括Git、 SQLite、 libpng和 chibicc 本身,而无需对已编译的程序进行修改。这些程序生成的可执行文件通过了相应的测试套件。因此,chibicc 实际上支持多种 C11 特性,并且能够正确编译数十万行真实世界的 C 代码。
2.介绍下chibicc-loongarch是什么:chibicc-loongarch 是给chibicc添加一个LoongArch后端,并且它的提交历史(几乎)与chibicc 项目相同,只有与代码生成相关的代码被移植到LoongArch。
chibicc-loongarch 项目地址(项目的预期测试全部通过了):https://github.com/shipujin/chibicc-loongarch
chibicc-loongarch 项目进度(定时更新):43.67%(138/316)
因为是汇编小白,所以在阅读代码看到汇编指令得去翻手册、百度等,在移植过程中,也去看了chibicc的
x86与riscv版本,在这里向他们表示感谢。
3.项目前的资料准备:
1. 下载最新版本的“龙芯架构基础手册” (我手里用的是现在最新的v1.02版本)
2. 克隆一份binutils的最新上游代码,移植过程中可能需要看下 loongarch-opc
3. 《计算机体系结构基础》第三版,其中指令系统章节我看了好几遍
4.开始第一步:
1. fork chibicc项目,从第一个commit开始添加LoongArch后端支持
2. 移植过程中可以参考下我的 https://github.com/shipujin/chibicc-loongarch
最后祝大家学习LoongArch汇编开心(狗头