More generally, the minimum addressable unit (MAU) is a property of a specific memory abstraction.
With 32-bit word addressing, placing each code point in a separate MAU would increase the memory usage by 300%, which is not viable for programs that work with large amounts of text.
To evaluate these effects on a complete program, consider a web browser displaying a large and complex page.
The amount of memory needed to store these object will depend greatly on the address width of the computer.
However, this is valuable only within a relatively narrow range of working set sizes, and it can introduce substantial runtime overheads depending on the application.
Programs which do relatively little work with byte-oriented data like images, text, files, and network traffic may be able to benefit most.
MIPS has been chosen because it is a simple assembly language with no specialized facilities that would make these operations more convenient.
To solve this problem, the last few instructions must be turned into an atomic compare-exchange loop so that a concurrent modification will simply cause it to repeat the operation with the new value.
This is not always true on word machines, primarily because addresses themselves are often not packed with other data to make accesses more efficient.
The inefficiency of using wide addresses on that system is just all the extra logic to manipulate this offset and extract and insert bytes within words; it has no memory-use impact.
This is relatively common in 64-bit computer architectures designed as successors to 32-bit supercomputers or minicomputers, such the DEC Alpha and the Cray X1.
C also allows a pointer to be formed to any object except a bit-field; this includes each individual element of an array of bytes.
C compilers for computers that use word addressing often use different representations for pointers to different types depending on their size.