Почему x86-64 использует IA-64 C++ ABI?
Из x86-64 psABI:
9.1 C++
Для C++ ABI мы будем использовать IA-64 C++ ABI и соответственно создавать его экземпляры. Текущий проект этого ABI доступен по адресу:
Почему бы не разработать свой собственный ABI?
1 ответ
Потому что "Itanium" C++ ABI разработан как универсальный или, по крайней мере, обобщаемый. Цитирую введение:
В общем, этот документ написан как общая спецификация, которая может использоваться реализациями C++ на различных архитектурах. Тем не менее, он содержит специфичный для процессора материал для 64-разрядной ABI Itanium, идентифицированный как таковой. В тех случаях, когда описывается структура структурированных данных, мы обычно принимаем размеры элементов Itanium psABI. Реализация 32-разрядного ABI обычно просто изменяет размеры элементов соответствующим образом (т.е. указатели и длинные целые становятся 32-разрядными), но иногда для компактности требуется изменение порядка, и мы отмечаем более существенные изменения.
Фраза "создать соответствующий экземпляр" относится к адаптациям, необходимым для корректировки предположений о Itanium psABI для использования с x86-64 psABI.