Сейчас я переношу компилятор, написанный для ARM, на другую целевую архитектуру. Я обнаружил, что существует два разных типа ABI
для ARM: APCS_ABI
и AAPCS_ABI
.
Я погуглил и сослался на руководство по ARM, но не нашел различий между ними.
Однако в реализации серверной части компилятора два типа ABI
обрабатываются по-разному и имеют отдельные реализации.
Между прочим, APCS
— это аббревиатура от Стандарта вызова процедур ARM, а AAPCS
— от Стандарта вызова процедур для архитектуры ARM. (Разве они не означают одно и то же?)
Так в чем же разница между AAPCS
и AAPCS
? Почему определены два разных типа ABI
?