Maison >développement back-end >C++ >Les processeurs x86 modernes peuvent-ils vraiment échouer à stocker un seul octet ?
Les processeurs x86 modernes pourraient-ils ne pas parvenir à stocker un seul octet en mémoire ?
L'énigme de l'affirmation de Bjarne Stroustrup :
Dans le livre de Stroustrup, il suggère que certains processeurs modernes pourraient être incapables de stocker des objets plus petits qu'un mot. Cependant, les expériences de programmation quotidiennes semblent contredire cela. Nous pouvons facilement stocker des octets, comme le démontre un simple programme C qui définit et imprime la valeur d'un octet.
Résoudre la confusion :
La déclaration de Stroustrup peut en fait faites référence au fonctionnement interne des processeurs lors de l'exécution d'instructions de stockage d'octets. Certains processeurs peuvent utiliser des opérations atomiques de lecture-modification-écriture pour mettre à jour une ligne de cache contenant l'octet cible. Cependant, ce mécanisme interne est invisible pour le programmeur et ne modifie pas le résultat ou l'exactitude des magasins d'octets.
Modèle de mémoire du matériel moderne :
Dans les processeurs modernes, Les magasins d'octets sont atomiques et n'affectent pas les octets voisins. Ceci est assuré par des modèles de mémoire bien définis qui définissent la manière dont le matériel gère les opérations de mémoire.
Le mythe de l'instabilité du magasin d'octets :
L'idée selon laquelle les magasins d'octets pourraient corrompre les octets adjacents sont obsolètes. Toutes les architectures modernes (non DSP), y compris x86, ont des instructions de stockage d'octets conçues architecturalement pour ne pas perturber les octets voisins.
Conclusion :
Alors que la déclaration de Stroustrup a peut-être été précis dans le passé, il n'est plus applicable au matériel x86 moderne. Les magasins d'octets sont fiables et fondamentaux pour la programmation C.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!