6. LoongArch ABI

ABI的全称为应用程序二进制接口(Application Binary Interface),定义了应用程序二进制代码中数据结构和函数模块的格式及其访问方式,包括处理器基础数据类型、数据对齐、字节序列、LoongArch寄存器使用约定、函数调用约定(包括函数参数传递、函数返回值传递)、函数栈布局、系统调用约定等。ABI是系统架构的一部分。特别是当我们要编写一部分汇编源程序时,如果没有遵循ABI规范,就可能导致程序出错而无法编译或正常运行。本章在介绍LoongArch ABI基本规范的同时,还会在龙芯64位处理器上反汇编一些小的实例程序,来展示其中的一些规范和细节。

LoongArch共定义了3套ABI:指针和寄存器宽度都是64位的LP64,指针32位、寄存器64位的LPX32,指针和寄存器都是32位的LP32。多套ABI的制定便于程序正确运行在不同的架构上,LPX32 ABI就支持32位程序运行在64位处理器上。3套ABI的基本规则相同,寄存器使用约定相同,仅在一些具体数据上有差别,下文在遇到时会单独说明。