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,
Also, from the same doc,
So you can forget about the obsoleted
APCSand start followingAAPCS