... qu'un programme particulier indique simplement au CPU de récupérer les informations à partir d'une adresse spécifique et le programme définit comment les traiter.
Exactement. Mais la RAM n'est pas lue "séquentiellement", et cela signifie Random Access Memory qui est exactement le contraire.
En plus de savoir ce qu'est un octet est , vous ne savez même pas si c'est un octet , ou un fragment d'un élément comme un plus grand nombre à virgule flottante.
Je voudrais ajouter à d'autres réponses en donnant quelques exemples spécifiques.
Considérez 01000001
. Le programme peut le copier d'un endroit à un autre dans le cadre d'un grand volume de données sans aucun égard à sa signification. Mais en copiant cela à l'adresse utilisée par le tampon vidéo en mode texte, la lettre A
s'affichera à un certain endroit sur l'écran. La même action exacte lorsque la carte est en mode graphique CGA affichera un pixel rouge et un pixel bleu.
Dans un registre, il peut s'agir du nombre 65 sous forme d'entier. Faire de l'arithmétique pour régler le bit 32 pourrait signifier n'importe quoi sans contexte, mais pourrait spécifiquement changer une lettre en minuscule.
Le processeur 8086 a (encore) des instructions spéciales appelées DAA ※ qui sont utilisées lorsque le registre contient 2 chiffres décimaux, donc si vous venez d'utiliser cette instruction, vous l'interprétez comme deux chiffres 41
.
Les programmes se bloquent car un mot mémoire est lu en pensant qu'il s'agit d'un pointeur lorsque quelque chose d'autre y était stocké.
À l'aide d'un débogueur, inspectant la mémoire, une carte est utilisée pour guider l'interprétation pour l'affichage. Sans ces informations de symbole, un débogueur de bas niveau vous permet de spécifier: afficher cette adresse sous forme de mots 16 bits, afficher cette adresse sous forme de virgule flottante longue, sous forme de chaînes ... peu importe. En regardant un vidage de paquets réseau ou un format de fichier inconnu, le résoudre est un défi.
C'est une source majeure de puissance et de flexibilité dans l'architecture informatique moderne: une cellule mémoire peut signifier n'importe quoi , des données ou des instructions, implicites uniquement dans ce que cela "signifie" pour le programme par ce qu'il fait avec la valeur et comment cela affecte les opérations suivantes. la signification est plus profonde que la largeur entière: ces caractères sont-ils ... des caractères en ascii ou ebcdic? Former des mots en anglais ou en codes produits SQU? L'adresse à laquelle envoyer ou l'adresse de retour d'où il provient? L'interprétation de niveau le plus bas (bits logiques; de type entier, signé ou non signé; float; bcd; pointeur) est contextuelle au niveau du jeu d'instructions, mais vous voyez que tout est contextuel à un certain niveau: le tol'adresse est ce qu'elle est en raison de l'emplacement où elle est imprimée sur l'enveloppe. C'est contextuel aux règles du facteur, pas au CPU. Le contexte est un grand continuum, avec des bits à une extrémité.
※ Note de bas de page: l'instruction DAA est codée sous forme d'octet 00100111
. Donc, cet octet est l'instruction susmentionnée si elle est lue dans le flux d'instructions, et les chiffres 27
s'ils sont interprétés comme des chiffres bcd, et 0x27 = 39 comme un entier, qui est le chiffre 9 en ASCII, et une partie de la table d'interruption (la moitié de INT 13 Adresse à 2 octets, utilisée pour les routines de service du BIOS).