Quelles sont les conventions d'appel pour UNIX & appels système Linux sur les architectures i386 et x86-64

Liens suivants expliquer x86-32 système de conventions d'appel pour UNIX (BSD saveur) & Linux:

Mais quels sont les x86-64 système de conventions d'appel sur UNIX & Linux?

Il n'y a pas de "norme" pour Unix conventions d'appel. Pour linux sûr, mais je suis sûr que Solaris, OpenBSD, Linux et Minix probablement différents au moins légèrement différentes conventions d'appel et ils sont tous les unix.
Ce n'est pas tout à fait vrai - il y a un ensemble de UNIX ABIs disponibles pour la plupart des types de machines, ce qui permet de les compilateurs C pour réaliser l'interopérabilité. Compilateurs C++ avez un gros problème.
Les deux d'entre vous sont corrects. Je suis à la recherche pour FreeBSD & Linux.
Je vous serais reconnaissant si la réponse contient des informations sur quels registres sont conservés à travers les appels système. Bien sûr, le pointeur de pile est, (à moins que modifié de manière contrôlée dans l' __NR_clone d'appel), mais qui sont les autres?
oui, je viens de mettre à jour le wiki réponse avec les détails pour les 32 bits. 64bit était déjà exacte: rcx et r11 sont détruites à cause de la façon sysret travaux, ainsi que les rax être remplacé par la valeur de retour. Tous les autres registres sont conservés sur amd64.

OriginalL'auteur claws | 2010-03-29