Accueil technologie Registre général

Registre général



introduction

Les registres à usage général peuvent être utilisés pour transférer et stocker temporairement des données, et peuvent également participer à des opérations arithmétiques et logiques et enregistrer les résultats des opérations. De plus, ils ont chacun des fonctions spéciales. La longueur des registres à usage général dépend de la longueur de mot de la machine. Les programmeurs en langage assembleur doivent être familiarisés avec les utilisations générales et spéciales de chaque registre. Ce n'est qu'ainsi qu'ils peuvent être utilisés correctement et raisonnablement dans le programme.

Un total de 8 registres généraux CPU 16 bits : AX, BX, CX, DX, BP, SP, SI, DI.

Huit registres peuvent être utilisés comme registres de données ordinaires.

Mais certains ont des objectifs particuliers : AX est un accumulateur, CX est un compteur, BX et BP sont des registres d'adresse de base, SI et DI sont des registres d'index, et BP peut également être une base.

< p> pointeur, SP est le pointeur de pile.

Il existe 8 registres à usage général pour le processeur 32 bits : les fonctions EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI sont similaires à ce qui précède

Classification

Registre de données

Le registre de données est principalement utilisé pour enregistrer des informations telles que les opérandes et les résultats des opérations, économisant ainsi le temps nécessaire pour lire les opérandes et accéder à la mémoire. Le processeur 32 bits possède quatre registres généraux 32 bits EAX, EBX, ECX et EDX. L'accès aux données 16 bits faibles n'affectera pas les données 16 bits élevées. Ces registres bas de 16 bits sont respectivement nommés : AX, BX, CX et DX, qui sont cohérents avec les registres précédents du CPU.

4 registres de 16 bits peuvent être divisés en 8 registres de 8 bits indépendants (AX : AH-AL, BX : BH-BL, CX : CH-CL, DX : DH-DL), chaque registre a son propre nom et peut être accessible indépendamment. Les programmeurs peuvent utiliser cette fonctionnalité « divisible et combinable » des registres de données pour traiter de manière flexible les informations mot/octet.

Les registres AX et AL sont généralement appelés accumulateurs, et les opérations avec des accumulateurs peuvent prendre moins de temps. Les accumulateurs peuvent être utilisés pour des opérations telles que la multiplication, la division et l'entrée/sortie, et ils sont fréquemment utilisés ; le registre BX est appelé registre de base. Il peut être utilisé comme pointeur de mémoire ; le registre CX est appelé registre de comptage. Dans les opérations de boucle et de chaîne, utilisez-le pour contrôler le nombre de boucles ; dans la manipulation de bits, lors du décalage de plusieurs bits, utilisez CL pour indiquer le nombre de bits à décaler ; le registre DX est appelé registre de données (Data Register). Dans les opérations de multiplication et de division, il peut être utilisé comme opérande par défaut pour participer à l'opération, et peut également être utilisé pour stocker l'adresse du port d'E/S.

Dans un processeur 16 bits, AX, BX, CX et DX ne peuvent pas être utilisés comme registres d'adresse et d'index de base pour stocker l'adresse de l'unité de stockage, mais dans un processeur 32 bits, ses registres 32 bits EAX, EBX, ECX et EDX peuvent non seulement transmettre des données et stocker temporairement des données pour enregistrer les résultats des opérations arithmétiques et logiques, mais peuvent également être utilisés comme registres pointeurs. Par conséquent, ces registres 32 bits sont plus polyvalents. Pour plus de détails, voir la section Mode d'adressage d'adresse 3.8-32 bits.

Registre d'index

Un processeur 32 bits possède deux registres 32 bits à usage général ESI et EDI. Les 16 bits inférieurs correspondent aux SI et DI de la CPU précédente. L'accès aux 16 bits de données inférieurs n'affecte pas les 16 bits de données supérieurs.

Les registres ESI, EDI, SI et DI sont appelés registres d'index. Ils sont principalement utilisés pour stocker le décalage de l'unité de stockage dans le segment. Ils peuvent être utilisés pour implémenter une variété d'opérandes mémoire. Le mode d'adressage (décrit en détail au chapitre 3) permet d'accéder facilement aux unités de stockage sous différentes formes d'adresse. Le registre d'index ne peut pas être divisé en registres de 8 bits. En tant que registre à usage général, il peut également stocker les opérandes et les résultats d'opérations arithmétiques et logiques.

Ils peuvent être utilisés comme pointeurs de mémoire généraux. Lors de l'exécution d'instructions de manipulation de chaînes, il existe des exigences spécifiques pour celles-ci et elles ont également des fonctions spéciales.

Registre de pointeur

Le processeur 32 bits possède deux registres 32 bits à usage général EBP et ESP. Les 16 bits inférieurs correspondent au SBP et au SP de la CPU précédente. L'accès aux 16 bits de données inférieurs n'affecte pas les 16 bits de données supérieurs. Les registres EBP, ESP, BP et SP sont appelés registres de pointeur, qui sont principalement utilisés pour stocker l'offset de l'unité de stockage dans la pile. Ils peuvent être utilisés pour obtenir une variété de méthodes d'adressage d'opérandes mémoire (détaillées dans le chapitre 3) Introduction), afin de faciliter l'accès aux unités de stockage sous différentes formes d'adresse. Le registre pointeur ne peut pas être divisé en registres de 8 bits. En tant que registre à usage général, il peut également stocker les opérandes et les résultats d'opérations arithmétiques et logiques.

Registre de segments

Le registre de segment est fixé en fonction du mode de gestion de la segmentation mémoire. L'adresse physique de l'unité mémoire est composée de la valeur du registre de segment et d'un décalage, de sorte que deux valeurs avec un plus petit nombre de bits peuvent être combinées pour former une adresse mémoire pouvant accéder à un plus grand espace physique.

Registre de pointeur d'instruction

Le processeur 32 bits étend le pointeur d'instruction à 32 bits et le marque comme EIP. Les 16 bits inférieurs de l'EIP ont la même fonction que l'IP de la CPU précédente. Les pointeurs d'instruction EIP et IP (Instruction Pointer) stockent l'offset de l'instruction à exécuter la prochaine fois dans le segment de code. Dans un système doté d'une fonction d'instruction de prélecture, l'instruction à exécuter la prochaine fois est généralement prélue dans la file d'attente d'instructions, à moins qu'un branchement ne se produise. Par conséquent, lors de la compréhension de leurs fonctions, ne tenez pas compte de l'existence de files d'attente d'instructions. En mode réel, puisque la portée maximale de chaque segment est de 64 Ko, les 16 bits supérieurs d'EIP doivent être 0. À ce stade, cela équivaut à n'utiliser que les 16 bits inférieurs d'IP pour refléter l'ordre d'exécution des instructions dans le programme.

Objectif principal

Données générales du registre

Enregistrez les opérations de multiplication et de division AX, l'entrée et la sortie de mots, la mise en mémoire tampon des résultats intermédiaires

AL Multiplication et division d'octets, entrée et sortie d'octets, opérations arithmétiques décimales

Multiplication et division des octets AH, stockage des numéros de fonction interrompus

Pointeur de mémoire BX

p>

Opération de chaîne CX, compteur de contrôle de boucle

Compteur d'opérations de décalage CL

Opérations de multiplication et de division de mots DX, entrée et sortie indirectes

< p>Index

Enregistrez le pointeur de mémoire SI, pointeur d'opérande source dans les instructions de chaîne

Pointeur de mémoire DI, pointeur d'opérande de destination dans les instructions de chaîne

Pointeur de mémoire BP de registre d'index, pointeur vers la pile d'accès

Pointeur supérieur de la pile SP

Pointeur d'instruction IP/EIP

Drapeau/EFrapeau

32 bits

CPU

Registre de segment CPU 16 bits

Registre de segment ES Registre de segment supplémentaire

Registre des segments de code CS

Registre de segment de pile SS

Registre des segments de données DS

Nouvellement ajouté

Registre de segment FS Registre de segment supplémentaire

Registre de segment supplémentaire GS

Informations connexes

Le registre est une ressource de stockage de données importante à l'intérieur du CPU. Il est utilisé pour stocker temporairement des données et des adresses. Il peut être utilisé par les programmeurs assembleur. Une des ressources matérielles utilisées directement. La vitesse d'accès du registre étant plus rapide que celle de la mémoire, lors de l'écriture d'un programme en langage assembleur, il est nécessaire d'exploiter au maximum la fonction de stockage du registre. Des registres sont généralement utilisés pour stocker les résultats intermédiaires du programme, et fournissent rapidement des opérandes pour les instructions suivantes, de manière à éviter l'opération de stockage des résultats intermédiaires dans la mémoire puis de lecture de la mémoire. Dans les langages de haut niveau (tels que : langage C/C++), il existe également des définitions de variables en tant que types de registres. Il s'agit d'un moyen possible d'améliorer l'utilisation des registres.

De plus, en raison du nombre et de la capacité limités des registres, il est impossible de stocker tous les résultats intermédiaires dans les registres. Par conséquent, les registres doivent être correctement programmés. Selon les exigences des instructions, comment organiser des registres appropriés pour éviter les opérations de transfert avec trop d'opérandes est un travail minutieux et minutieux.

Cet article provient du réseau, ne représente pas la position de cette station. Veuillez indiquer l'origine de la réimpression
HAUT