I'm currently porting a compiler written for ARM to another target architecture. I found there exists two different kinds of ABI
for ARM: APCS_ABI
and AAPCS_ABI
.
I googled it and referenced the ARM manual, but haven't found the differences between them.
In the implementation of the compiler backend, however, the two kinds of ABIs
are treated differently and have seperate implementations.
By the way, APCS
is the abbreviation of ARM Procedure Call Standard, and AAPCS
of Procedure Call Standard for the ARM Architecture. (Don't they mean the same thing ?)
So what's the difference between APCS
and AAPCS
? Why two different kinds of ABIs
are defined?
From ARM docs,
PCS Procedure Call Standard.
AAPCS Procedure Call Standard for the ARM Architecture (this standard). (current standard )
APCS ARM Procedure Call Standard (obsolete).
Also, from the same doc,
The AAPCS embodies the fifth major revision of the APCS and third major revision of the TPCS. It forms part of the complete ABI specification for the ARM Architecture.
So you can forget about the obsoleted APCS
and start following AAPCS
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With