其他的参考文档
1. 《LA32R指令集学习指导手册》
龙架构(LoongArch,后文简称LA)指令集包含三个主要分支,即64位分支(LoongArch64,后文简称LA64)、32位分支(LoongArch32,后文简称LA32)和32位精简版分支(LoongArch32 Reduced,后文简称LA32R)。
其中LA32R定位为用于教学科研,具有小而精的设计特点。其用户态整数指令仅有50余条,在CPU硬件不实现浮点指令的情况下也能运行各种软件,同时核心态定义了特权等级、例外与中断和存储管理三部分内容,支持操作系统运行,在实现了存储管理中的TLB MMU情况下还可运行Linux操作系统。
目前各上游社区和龙芯开源社区上的工作基本上都是针对LA64的,同时各类龙架构相关的教材、参考书籍也基本上都是围绕LA64进行介绍的。尽管说LA32R和LA64的设计风格是一致的,指令码是相同的,但是让初学者仅依据LA32R指令集手册并参考LA64相关学习资料来摸索着掌握LA32R,确实存在一定的难度且发生理解偏差。因此我们萌生了编写一个LA32R指令集学习指导手册的想法,希望能给初学者提供一些便利。
整本手册在内容安排上还是偏向软件开发者视角多一些。如果您的需求更多偏向于CPU硬件设计开发,那么可以参考《CPU设计实战:LoongArch版》这本书。本手册中我们试图从软件开发者视角出发,针对指令集中的技术内容“为什么这样设计”、“软硬件如何协同”谈一些我们的理解。同时为了控制整本手册的篇幅,在行文的详略尺度方面,我们会侧重于指令架构相关的内容,而指令架构无关的本领域公共基础知识,如ELF文件格式、链接与装载的共性概念、GDB调试命令、Linux内核中公共代码的处理流程等,我们会提及但不会展开。相关知识建议读者们自行查阅资料。我们也会在讲述到相关内容时推荐一些参考材料供读者进一步阅读。
我们希望本手册的读者事先已了解过至少一个指令集,而且最好是RISC型的指令集。如果没有的话,强烈建议通过学习一些经典教材来建立这方面的认识。推荐《Computer Organization and Design: The Hardware Software Interface》这本教材。第4版或第5版就可以,MIPS版、ARMv8版或者RISC-V版也都可以。指令集的基础共性知识已很成熟,不同指令集间都是相通的。这本教材讲授的内容很丰富,时间有限的话可以只看其中介绍指令集的章节。
本文档目录如下:
- LA32R中的用户态整型指令
- LA32R的机器语言与汇编语言表达
- 算术逻辑移位类指令
- 数据传输类指令
- 分支跳转类指令
- 用LL/SC指令构建基本同步原语
- 其它用户态指令
- LA32R汇编编程简介
- LA32R汇编编程学习环境介绍
- 常用汇编器指示
- LA32R汇编器支持的伪指令汇总
- 寄存器使用约定
- 函数调用约定
- 进程虚拟地址空间布局规范
- 栈帧布局
- 汇编编程示例
文档在线阅读的地址在这里
