Где документирован x86-64 System V ABI?

X86-64 System V ABI (использовался во всем, кроме Windows), когда-то существовал по адресу http://x86-64.org/documentation/abi.pdf, но этот сайт теперь не работает в Интернете.

Есть ли новый авторитетный дом для документа?

1 ответ

System V x86-64 psABI поддерживается на GitHub. На странице github HJ Lu есть вики со ссылками на текущие версии документов psABI для x86-64 и i386 SystemV, а также на форумы, где обсуждаются обновления.

Смотрите вики-теги x86 для прямых ссылок на последние версии. (Этот ответ может быть устаревшим).

На данный момент текущая версия для x86-64 - r252 (черновик 0.99.8, апрель 2016 г.), а текущая версия для i386 - 1.1 (включая AVX512). Неофициально требуется расширение узких аргументов до 32-битных, потому что от этого зависит clang. Надеюсь, что в будущем пересмотр ABI подтвердит это.

X32 ABI (32-разрядные указатели в длинном режиме) является частью документа x86-64 ABI. См. Главу 10: Модель программирования ILP32.


Обратите внимание, что документы psABI для конкретных процессоров разработаны как дополнение к менее часто обновляемому gABI System V, размещенному на веб-сайте SCO.


Связанный: Каковы соглашения о вызовах для системных вызовов UNIX & Linux на i386 и x86-64 описывает соглашение о вызовах системных вызовов для x86-64 SysV (а также i386 Linux против FreeBSD).

Он также суммирует соглашения о вызовах функций для целочисленных аргументов. Системные вызовы не принимают векторные аргументы FP или SSE/AVX или структуры по значению, поэтому соглашение о вызовах функций является более сложным.


Agner Fog имеет руководство по соглашениям о вызовах (в котором описываются Windows и Sys V, а также различные соглашения для 32-разрядных систем, а также советы и рекомендации по написанию функций, которые можно использовать на любой платформе). Это отдельный PDF от его руководств по оптимизации и микроархитектуре и таблиц инструкций (которые очень важны для чтения, если вы заботитесь о производительности).

В Википедии есть статья об условных обозначениях вызовов x86, в которой описаны различные условные обозначения, но в основном они недостаточно подробны, чтобы использовать их для чего-либо, кроме простых целочисленных аргументов. (например, нет описания правил упаковки структуры).

Стандартная база Linux

Стандартная база Linux, которую некоторые авторитетные спецификации могут рассматривать в этом вопросе, имеет раздел 7.2. "Последовательность вызова функций" указывает на 2.1. "Нормативный раздел ссылок", который содержит следующие ссылки:

Поэтому я бы порекомендовал использовать эти версии спецификаций в качестве канонических, если у вас нет веских причин поступать иначе.

Текущая версия о System V ABI из GitLab может быть легко превращен в красивый PDF с этими шагами, предполагая систему Ubuntu.

       sudo apt-get install texlive-full
git clone https://gitlab.com/x86-psABIs/x86-64-ABI
cd x86-64-ABI
make pdf

Это создаст файл с именем abi.pdf это именно то, что нужно, как показано ниже.

Обратите внимание, что дата в заголовке является датой создания PDF-файла, а не фактической датой последнего изменения документа.

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