Could Modern x86 Processors Fail to Store a Single Byte to Memory?
The Enigma of Bjarne Stroustrup's Claim:
In Stroustrup's book, he suggests that some modern processors may be incapable of storing objects smaller than a word. However, everyday programming experiences seem to contradict this. We can store bytes with ease, as demonstrated by a simple C program that sets and prints the value of a byte.
Resolving the Confusion:
Stroustrup's statement may actually refer to the internal workings of CPUs when executing byte-store instructions. Some CPUs might use atomic read-modify-write operations to update a cache line containing the target byte. However, this internal mechanism is invisible to the programmer and doesn't alter the result or correctness of byte stores.
Modern Hardware's Memory Model:
In modern CPUs, byte stores are atomic and do not affect neighboring bytes. This is ensured by well-defined memory models that define how hardware handles memory operations.
The Myth of Byte-Store Instability:
The idea that byte stores could corrupt adjacent bytes is obsolete. All modern (non-DSP) architectures, including x86, have byte-store instructions that are architecturally designed not to disturb neighboring bytes.
Conclusion:
While Stroustrup's statement may have been accurate in the past, it is no longer applicable to modern x86 hardware. Byte stores are reliable and fundamental to C programming.
The above is the detailed content of Can Modern x86 Processors Really Fail to Store a Single Byte?. For more information, please follow other related articles on the PHP Chinese website!