我目前正在将为ARM编写的编译器移植到另一个目标架构。我发现ARM存在两种不同的ABI
:APCS_ABI
和AAPCS_ABI
。
我用Google搜索并引用了ARM手册,但没有发现它们之间的差异。
然而,在编译器后端的实现中,两种ABIs
被区别对待并且具有单独的实现。
顺便说一下,APCS
是ARM过程调用标准的缩写,而AAPCS
是ARM体系结构的过程调用标准。 (他们的意思不一样吗?)
那么APCS
和AAPCS
之间有什么区别?为什么定义了两种不同的ABIs
?
答案 0 :(得分:10)
来自ARM docs,
PCS程序调用标准。
AAPCS程序调用标准 ARM体系结构(此标准)。 (当前标准)
APCS ARM程序调用标准 (的过时强>)。
另外,来自同一个文档,
AAPCS体现了APCS的第五次重大修订和第三次 TPCS的重大修订。它构成了完整ABI的一部分 ARM体系结构规范。
因此,您可以忘记已废弃的APCS
并开始关注AAPCS