2013-08-08 19 views
16

Il sistema V ABI x86-64 (utilizzato su tutto tranne Windows) viveva allo http://x86-64.org/documentation/abi.pdf, ma quel sito è ora fuori uso da Internet.Dove è documentato l'ABI System V x86-64?

C'è una nuova casa autorevole per il documento?

+1

La bozza ** 0.99.6 ** è l'ultima versione di cui sono a conoscenza. Per aggirare il link non funzionante sulla pagina di riferimento, prova [qui] (http://refspecs.linuxbase.org/elf/). –

+0

http://agner.org/optimize/calling_conventions.pdf – Elalfer

+0

Possibile duplicato di [dove è amd64 psABI?] (Https://stackoverflow.com/questions/13924652/where-is-amd64-psabi) – jww

risposta

18

Il sistema V x86-64 psABI viene mantenuto su GitHub. La pagina github di H.J. Lu ha a wiki with links to the current versions dei documenti psABI SystemV x86-64 e i386 e nei forum in cui vengono discussi gli aggiornamenti.

Vedere tag wiki per collegamenti diretti alle versioni più recenti. (Questa risposta potrebbe non essere aggiornata).

A partire da ora, la versione corrente per x86-64 is r252 (Draft 0.99.8 April 2016) e la versione corrente per i386 is 1.1 (include AVX512). Ufficiosamente, sign-extending narrow args to 32-bit is required, perché il clang dipende da questo. Speriamo che una futura revisione ABI lo documenterà.

L'x32 ABI (puntatori a 32 bit in modalità lunga) fa parte del documento ABI x86-64. Vedere il Capitolo 10: Modello di programmazione ILP32.


Si noti che i documenti psABI processore-Specific sono progettati come un supplemento al meno frequentemente aggiornato System V gABI, ospitata sul sito di SCO.


correlati: What are the calling conventions for UNIX & Linux system calls on i386 and x86-64 descrive la convenzione di chiamata per x86-64 SysV chiamate di sistema (così come i386 Linux vs FreeBSD).

Riepiloga anche le convenzioni di chiamata di funzione per argomenti interi. Le chiamate di sistema non accettano gli argomenti di vettore FP o SSE/AVX o le strutture in base al valore, quindi la convenzione di chiamata alle funzioni è più complicata.


Agner Fog has a calling conventions guide (che copre di Windows vs. Sys V, e le varie convenzioni per 32 bit, e suggerimenti/trucchi per la scrittura di funzioni che è possibile utilizzare su entrambe le piattaforme). Questo è un PDF separato dalle sue guide di ottimizzazione e microarchitettura e tabelle di istruzioni (che sono essenziali se si interessa alle prestazioni)

Wikipedia ha un articolo x86 calling conventions che descrive varie convenzioni, ma per la maggior parte non è sufficientemente dettagliato da usarle per altro che semplici argomenti interi. (ad esempio, nessuna descrizione delle regole di imballaggio della struttura).

+1

L'XI ABI si trova in [X32 System V Application Binary Interface] (https://sites.google.com/site/x32abi/).È un sito Google, non un GitHub; ma sembra essere mantenuto da H.J. Lu. Mi chiedo perché X32 non si trova nello stesso posto. – jww

+1

@jww: x32 è documentato nel capitolo 10 del PDF psABI x86-64 principale, almeno nella versione corrente del progetto 0.99.8. Forse era un PDF separato. –