Почему x86-64 использует IA-64 C++ ABI?

Из x86-64 psABI:

9.1 C++

Для C++ ABI мы будем использовать IA-64 C++ ABI и соответственно создавать его экземпляры. Текущий проект этого ABI доступен по адресу:

http://mentorembedded.github.io/cxx-abi/

Почему бы не разработать свой собственный ABI?

1 ответ

Решение

Потому что "Itanium" C++ ABI разработан как универсальный или, по крайней мере, обобщаемый. Цитирую введение:

В общем, этот документ написан как общая спецификация, которая может использоваться реализациями C++ на различных архитектурах. Тем не менее, он содержит специфичный для процессора материал для 64-разрядной ABI Itanium, идентифицированный как таковой. В тех случаях, когда описывается структура структурированных данных, мы обычно принимаем размеры элементов Itanium psABI. Реализация 32-разрядного ABI обычно просто изменяет размеры элементов соответствующим образом (т.е. указатели и длинные целые становятся 32-разрядными), но иногда для компактности требуется изменение порядка, и мы отмечаем более существенные изменения.

Фраза "создать соответствующий экземпляр" относится к адаптациям, необходимым для корректировки предположений о Itanium psABI для использования с x86-64 psABI.

Другие вопросы по тегам