2010-08-12 4 views
1

Я смущаюсь со всеми этими условиями:Путаница с вызовом ABI и аркой

ABI, вызывающая конвенция и аппаратная архитектура.

ABI - это ссылка на архитектуру: x86-64 имеют разные ABI, чем i386. Но тогда вы также можете определить свое собственное соглашение о вызове cdecl ...

Ну, а какая связь между этими понятиями? Какой из них определяет другой?

В основном я думаю, что смущаюсь с ABI. Что вы вкладываете в часть от призыва?

Благодаря

ответ

2

Это обширная тема еще, чтобы дать вам некоторые указатели:

ЛПИ (двоичный интерфейс приложения) покрывают детали, которые должны быть определены для того, чтобы приложение может работать по определенной системе (обычно с операционной системой). Таким образом, чтобы добраться до примеров:

  • размеров типов данных (например, стандарт C дает только минимальные требования к типам INT тип должен, по крайней мере, столь же большой, как короткие, и короткий должен быть 16 битами.).
  • компоновка в памяти структур и битовых полей
  • соглашение о вызовах (когда функция вызывается, где он может найти это параметры, которые в регистрах, которые в стеке и т.д.)
  • стека кадра (то, что он присутствует в стеке, полезно для отладчика)
  • номера системных вызовов
  • другие

В принципе любая деталь, которая должна быть известна, чтобы построить программу, которая работает вместе с некоторыми другими компонентами (библиотеки, ОС) могут быть включены в ABI. Некоторые ABI указывают больше, а некоторые указывают меньше деталей.

Архитектура оборудования также может рассматриваться как спецификация, но даже более низкого уровня (речь идет не о программном обеспечении, а не о программном обеспечении). Аппаратная архитектура определяет такие вещи, как набор инструкций, иерархия памяти и способы доступа к периферийным устройствам. Для одной аппаратной архитектуры могут быть разные ABI-ы. Также вы можете иметь один и тот же ABI для множественной (но обычно подобной) аппаратной архитектуры.