В чем разница между архитектурой ABI и типом процессора? - PullRequest
0 голосов
/ 17 марта 2019

Был перепутан с ABI и типом архитектуры процессора, по поиску я мог найти эту ссылку

https://developer.android.com/ndk/guides/android_mk#target_arch_abi

Из чего я понял, что ABI - это интерфейс, который может поддерживать (или отображаться на) несколько команд типа процессора.Архитектурные типы CPU x86, arm32, arm64, о которых мы говорим, являются категориями CPU, а ABI - это интерфейс, который Android предоставляет нам для взаимодействия с этими типами CPU.Пожалуйста, поправьте меня, если я ошибаюсь.

Почему этот интерфейс нужен в первую очередь?И возможно ли скомпилировать один и тот же код c / c ++ для разных типов архитектуры?

1 Ответ

1 голос
/ 18 марта 2019

ABI стандартизирует использование ресурсов ЦП и то, как типы языков программирования отображаются в нетипизированные инструкции ЦП и схемы памяти.
Например, ABI указывает, как регистры используются во время вызова функции или макет объекта C ++.
ISA процессора дает программисту полную свободу, ABI - соглашение низкого уровня, похожее на соглашение API.

Поскольку ABI привязан к архитектуре CPU, разные процессоры не могут иметь один и тот же ABI. Однако термин ABI не является абсолютно определенным: ABI является спецификацией, и вполне возможно написать общую.
Одним из таких примеров является Itanium C ++ ABI , который повторно используется с небольшими дополнениями в качестве основы для C ++ ABI в других архитектурах.

Наконец, поскольку для архитектуры ЦП нет единого выбора соглашений, каждый может написать и предложить свой ABI для этой архитектуры.
Нередко имеется несколько ABI для процессора, однако эта свобода зарезервирована для людей, компилирующих ОС и / или системные библиотеки.
Конечный пользователь должен соответствовать ABI, установленному ОС / библиотеками, иначе их двоичный файл не будет говорить на том же низкоуровневом языке, что и остальная часть их системы.

...