REGISTERS - Kasimashi/Systemes-embarques GitHub Wiki
Les registres R0-R12 sont des registres qui sont utilisés pour des opérations sur les données, on distingue deux groupes (R0-R7) et (R8-12) qui sont appelés respectivement low register et high register.
| Registre | Dénomination | Description |
|---|---|---|
| R0 | General Purpose Register | Utilisé les opérations sur les données |
| R1 | General Purpose Register | Utilisé les opérations sur les données |
| R2 | General Purpose Register | Utilisé les opérations sur les données |
| R3 | General Purpose Register | Utilisé les opérations sur les données |
| R4 | General Purpose Register | Utilisé les opérations sur les données |
| R5 | General Purpose Register | Utilisé les opérations sur les données |
| R6 | General Purpose Register | Utilisé les opérations sur les données |
| R7 | General Purpose Register | Utilisé les opérations sur les données |
| R8 | General Purpose Register | Utilisé les opérations sur les données |
| R9 | General Purpose Register | Utilisé les opérations sur les données |
| R10 | General Purpose Register | Utilisé les opérations sur les données |
| R11 | General Purpose Register | Utilisé les opérations sur les données |
| R12 | General Purpose Register | Utilisé les opérations sur les données |
| R13 (SP) | Stack Pointer | Il contient l'adresse mémoire du haut de la stack (pile) |
| R14 (LR) | Link Register | Il contient l'adresse mémoire de la prochaine instruction à exécuter à la fin de l'appel de la subroutine |
| R15 (PC) | Program Counter | Il contient l'adresse mémoire de la prochaine exécution que le processeur va charger ensuite |
Les registres spéciaux qu'on peut aussi trouver sur une architecture Cortex M ARM sont :
| Registre | Dénomination | Description |
|---|---|---|
| xPSR | N/A | Enregistre dans un champs de bits l'état du processus en cours d'execution (Peut être une interruption), des exemples de flags sont : negative flag, zero, carry, overflow |
| BASEPRI | N/A | Défini un seuil de priorité à partir duquel le processeur empêche l'execution (une valeur faible de priorité correspond à une haute priorité) |
| CONTROL | N/A | Utilisé les opérations sur les données |
| PRIMASK | N/A | Utilisé pour masquer toutes les interruptions sauf les hard-faults, et les non maskable interrupt |
| FAULTMASK | N/A | Utilisé pour masquer toutes les interruptions sauf les non maskable interrupt |
EAX : Extended Accumulator X
On voit que E*X (32 bits) est composé de *X (16 bits de poids faible) lui-même composé de *h (8 bits de poids fort) et *l (8 bits de poids faible).
| Registre | Dénomination | Description |
|---|---|---|
| EAX | Accumulateur | Utilisé pour les opérations arithmétiques et le stockage de la valeur de retour des appels systèmes. |
| EBX | Base | Utilisé comme pointeur de donnée (située dans DS en mode segmenté, segment par défaut) ou sert de base au calcul d'une adresse. |
| ECX | Compteur | Utilisé comme compteur par certaines intructions, permettant de répéter une série d'instructions un nombre de fois prédéterminé. |
| EDX | Données | Utilisé pour les opérations arithmétiques et les opérations d'entrée/sortie. |
| EIP | Instruction Pointer | |
| EDI | Destination Index | |
| ESI | Source Index | Pointeur source |
| CS | Code Segment | |
| SS | Stack Segment | |
| ESP | Stack Pointer | Pointeur de pile |
| EBP | Frame Base Pointer | Pointeur de base, utilisé dans le calcul d'adresse mémoire |
| DS, ES, FS, GS | Data Segment | |
| EFLAG | Data Segment |
De même que pour 64 bits avec 32 bits supplémentaire


