REGISTERS - Kasimashi/Systemes-embarques GitHub Wiki

Les registres des processeurs

Les registres d'un processeur ARM :

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

Les registres d'un processeur Intel 32 bits :

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

Les registres d'un processeur 64 bits

De même que pour 64 bits avec 32 bits supplémentaire

⚠️ **GitHub.com Fallback** ⚠️