linux assembly x86-64 calling-convention abi

linux - ¿Dónde está documentado el ABI del Sistema V x86-64?



assembly calling-convention (1)

El System V x86-64 psABI se mantiene en GitHub. La página github de HJ Lu tiene un wiki con enlaces a las versiones actuales de los documentos psABI SystemV x86-64 y i386, y a los foros donde se discuten las actualizaciones.

Consulte la etiqueta wiki x86 para obtener enlaces directos a las últimas versiones. (Esta respuesta puede estar desactualizada).

A partir de ahora, la versión actual para x86-64 es r252 (borrador 0.99.8 abril de 2016) , y la versión actual para i386 es 1.1 (incluye AVX512). Extraoficialmente, se requieren argumentos estrechos de extensión de signo a 32 bits , porque el ruido depende de ello. Esperemos que una futura revisión de ABI documente eso.

El ABI x32 (punteros de 32 bits en modo largo) es parte del documento ABI x86-64. Ver Capítulo 10: Modelo de programación ILP32.

Tenga en cuenta que los documentos psABI específicos del procesador están diseñados como un complemento de la gABI de System V , que se actualiza con menos frecuencia, alojada en el sitio web de SCO.

Relacionado: ¿Cuáles son las convenciones de llamada para las llamadas de sistema UNIX y Linux en i386 y x86-64? Describe la convención de llamada de llamada al sistema para x86-64 SysV (así como i386 Linux vs. FreeBSD).

También resume la función que llama a las convenciones para argumentos de enteros. Las llamadas del sistema no toman argumentos vectoriales FP o SSE / AVX, o estructuras por valor, por lo que la convención de llamada de función es más complicada.

Agner Fog tiene una guía de convenciones de llamadas (que abarca Windows vs. Sys V, y las diversas convenciones para 32 bits, y consejos / trucos para escribir funciones que puede usar en cualquiera de las plataformas). Este es un PDF separado de sus guías de optimización y microarquitectura y sus tablas de instrucciones (que son lecturas esenciales si le importa el rendimiento).

Wikipedia tiene un artículo de convenciones de llamada x86 que describe varias convenciones, pero en su mayoría no tiene el detalle suficiente para usarlas para otra cosa que no sean simples argumentos enteros. (Por ejemplo, no hay descripción de las reglas de empaquetado de la estructura).

El ABI de System V x86-64 (usado en todo excepto en Windows) solía estar en http://x86-64.org/documentation/abi.pdf , pero ese sitio ahora se ha caído de Internet.

¿Hay un nuevo hogar autorizado para el documento?