Menu
Coddy logo textTech

Qu'est-ce qu'un Syscall ?

Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 31 sur 45.

Vous avez écrit des instructions d’assembleur comme mov et lea. Ces instructions s’exécutent directement sur le processeur. Mais que faire si vous devez effectuer une tâche que le processeur ne peut pas accomplir seul, comme afficher quelque chose à l’écran, lire au clavier ou quitter un programme ?

Pour ces tâches, vous avez besoin du système d’exploitation (Linux, dans ce cours).

Qu’est-ce qu’un syscall ?

Un syscall (appel système) est une demande de votre programme au système d’exploitation. C’est ainsi que vous demandez au système d’exploitation de faire quelque chose pour vous.

Pourquoi vous avez besoin d’appels système :

TâcheLe CPU peut-il le faire seul ?Appel système nécessaire ?
Ajouter deux nombresOuiNon
Déplacer des données entre les registresOuiNon
Afficher du texte à l’écranNonOui
Lire les entrées du clavierNonOui
Quitter un programmeNonOui
Ouvrir un fichierNonOui

Comment fonctionne un syscall :

  1. Vous placez un numéro de syscall dans rax (indique au système d’exploitation ce que vous voulez)
  2. Vous placez les arguments dans d’autres registres (rdi, rsi, rdx, etc.)
  3. Vous exécutez l’instruction syscall
  1. Le processeur passe au noyau du système d’exploitation
  2. Le système d’exploitation exécute la requête
  3. Le système d’exploitation rend le contrôle à votre programme

Analogie :

Imagine qu’un syscall soit comme appeler un service gouvernemental :

ÉtapeAnalogieEn assembleur
1Décider du service dont vous avez besoinChoisir le numéro du syscall (le placer dans rax)
2Remplir les formulairesPlacer les arguments dans les registres
3Soumettre la demandeExécuter syscall
4Le gouvernement la traiteLe noyau de l’OS effectue le travail
5Récupérer le résultatLe programme continue

Appels système que vous apprendrez dans ce cours :

Appel systèmeNuméroCe qu’il faitChapitre
exit60Met fin au programmeChapitre 4
write1Affiche du texte à l’écranChapitre 5

Le syscall le plus important pour l’instant : <strong>exit</strong>

Sans exit, ton programme continuerait à s’exécuter indéfiniment ou planterait. Chaque programme que tu écris doit se terminer par un syscall exit.

mov rax, 60    ; syscall number for exit
mov rdi, 0     ; exit code (0 = success)
syscall        ; ask the OS to exit

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Playground Assembly