Aktualnie przesyłam kompilator napisany dla ARM do innej docelowej architektury. Zauważyłem, że istnieją dwa różne rodzaje ABI
dla ARM: APCS_ABI
i AAPCS_ABI
.ARM: Jaka jest różnica między APCS i AAPCS ABI?
Wyszukałem go i odniosłem się do podręcznika ARM, ale nie znalazłem między nimi różnic.
W implementacji backendu kompilatora oba typy ABIs
są jednak traktowane inaczej i mają osobne implementacje.
Przy okazji, APCS
jest skrótem nazwy ARM Procedure Call Standard i AAPCS
procedury Call Standard dla architektury ARM. (Czy to nie to samo?)
Jaka jest różnica między APCS
a AAPCS
? Dlaczego zdefiniowano dwa różne rodzaje ABIs
?