abi
每个操作系统都会为运行在该系统下的应用程序提供应用程序二进制接口(ApplicationBinaryInterface,
abi)。
abi包含了应用程序在这个系统下运行时必须遵守的编程约定。
abi总是包含一系列的系统调用和使用这些系统调用的方法,以及关于程序可以使用的内存地址和使用机器寄存器的规定。从一个应用程序的角度看,
abi既是系统架构的一部分也是硬件体系结构的重点,因此只要违反二者之一的条件约束就会导致程序出现严重错误。在很多情况下,链接器为了遵守
abi的约定需要做一些重要的工作。例如,
abi要求每个应用程序包含一个程序中各例程使用的静态数据的所有地址表,链接器通过收集所有链接到程序中的模块的地址信息来创建地址表。
abi经常影响链接器的是对标准过程调用的定义[1]。