Les syscall linux pour un langage d'assemblage
La liste des "syscall" pour le noyau Linux !
Écrire en assembleur x86-64 sur Linux implique de dialoguer directement avec le noyau via des appels système (syscalls), sans passer par une bibliothèque comme la libc. Chaque appel se fait avec un numéro placé dans rax, des arguments dans rdi/rsi/rdx/r10/r8/r9, puis l'instruction syscall. Le tableau ci-dessous reprend les appels les plus courants, avec leur numéro, leurs arguments et leur registre de retour.
Documentation complète : https://man7.org/linux/man-pages/man2/syscall.2.html
man syscalls
Linux Syscalls — Référence ASM x86-64
numéro → rax arguments → rdi rsi rdx r10 r8 r9 instruction → syscall retour → rax
| N° | Nom | Catégorie | rdi | rsi | rdx | Retour (rax) | Description |
|---|---|---|---|---|---|---|---|
| 0 | read | I/O | fd | buf* | count | octets lus | Lit des données depuis un descripteur de fichier |
| 1 | write | I/O | fd | buf* | count | octets écrits | Écrit des données dans un descripteur de fichier |
| 2 | open | Fichier | path* | flags | mode | fd | Ouvre ou crée un fichier, retourne un fd |
| 3 | close | Fichier | fd | — | — | 0 | Ferme un descripteur de fichier ouvert |
| 4 | stat | Fichier | path* | statbuf* | — | 0 | Récupère les métadonnées d'un fichier |
| 9 | mmap | Mémoire | addr | length | prot | adresse virtuelle | Mappe un fichier ou une mémoire anonyme en espace virtuel |
| 11 | munmap | Mémoire | addr | length | — | 0 | Libère un mapping mémoire précédemment créé |
| 12 | brk | Mémoire | addr | — | — | nouvelle brk | Modifie la borne haute du segment de données (tas) |
| 35 | nanosleep | Processus | req* | rem* | — | 0 | Suspend l'exécution pendant une durée précise (ns) |
| 39 | getpid | Processus | — | — | — | pid | Retourne le PID du processus courant |
| 41 | socket | Réseau | domain | type | protocol | fd socket | Crée un socket réseau (AF_INET, SOCK_STREAM…) |
| 43 | accept | Réseau | sockfd | addr* | addrlen* | fd client | Accepte une connexion entrante sur un socket en écoute |
| 57 | fork | Processus | — | — | — | 0 / pid enfant | Crée un processus fils — copie exacte du père |
| 59 | execve | Processus | path* | argv** | envp** | — (remplace) | Exécute un programme en remplaçant l'image courante |
| 60 | exit | Processus | status | — | — | ne retourne pas | Termine le processus avec un code de retour |