SVC |
Appel de superviseur |
| ARM |
Syntaxe
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| #imm |
Ce paramètre permet d'indiquer une expression à évaluer dans les intervalles : de 0 à 224-1 (une valeur 24 bits) dans une instruction ARM ou de 0 à 255 (une valeur 8 bits) dans une instruction Thumb. |
Description
Cette instruction permet d'effectuer un appel au superviseur.
Remarques
- SVC est utilisée pour effectuer un appel système : L'instruction SVC permet à un programme en mode utilisateur de demander un service au système
d'exploitation, en générant une interruption logicielle. C'est l'équivalent d'un syscall dans d'autres architectures, permettant d'accéder à des fonctionnalités
privilégiées (fichier, mémoire, périphérique...).
- Elle provoque un changement de mode processeur : Lorsqu'une instruction SVC est exécutée, le processeur passe automatiquement en mode superviseur
(SVC mode). Ce mécanisme est essentiel pour garantir la sécurité : seules certaines instructions sont autorisées dans ce mode, protégeant le système contre les erreurs
ou les abus du code utilisateur.
- Le champ #imm sert d'identifiant de service : Le paramètre immédiat #imm est souvent utilisé comme code de service pour indiquer au système
d'exploitation quel type de service est demandé. Par exemple, un appel SVC #0x01 pourrait être une requête pour écrire sur la sortie standard, selon la convention
du système.
- SVC remplace l'ancienne instruction SWI dans ARMv7+ : L'instruction SWI (Software Interrupt) a été remplacée par SVC dans les architectures plus
récentes comme ARMv7. Le fonctionnement est équivalent, mais SVC est plus explicite et mieux aligné avec la séparation des modes dans les systèmes modernes.
- SVC s'utilise souvent avec une table de vecteurs : Quand SVC est déclenché, l'exécution est redirigée vers une adresse définie dans la table de vecteurs
d'interruption, où se trouve le gestionnaire d'appel système. Ce descripteur doit décoder #imm, sauvegarder le contexte, effectuer l'opération, puis restaurer l'état et
retourner au mode utilisateur.
- Les conditions {cond} permettent un déclenchement contrôlé : Comme toutes les instructions conditionnelles ARM, SVC peut être exécutée sous condition,
grâce au suffixe {cond}. Cela peut servir à effectuer un appel système seulement si un certain état est actif, par exemple SVCNE #1 pour un appel seulement si le
résultat précédent était non nul.
- La taille de #imm dépend du mode ARM ou Thumb : Dans les instructions ARM, l'immédiat peut être codé sur 24 bits, offrant une grande marge de manoeuvre
pour les codes de service. En mode Thumb, il est limité à 8 bits, ce qui est plus restrictif mais suffisant pour de nombreuses applications embarquées simples.
- SVC est essentielle pour le développement de RTOS et OS : L'instruction SVC est un outil fondamental pour les développeurs de systèmes d'exploitation
temps réel (RTOS) ou généralistes. Elle permet de concevoir un système où les programmes utilisateurs restent isolés, tout en offrant un accès structuré aux fonctions
critiques via des points d'entrée sécurisés.
Dernière mise à jour : Dimanche, le 12 novembre 2017