現代 x86 處理器是否無法將單一位元組儲存到記憶體中?
Bjarne Stroustrup 聲明之謎:
在Stroustrup的書中,他表明某些現代處理器可能無法儲存小於單字的物件。然而,日常程式設計經驗似乎與此相矛盾。我們可以輕鬆儲存字節,如一個設定和列印位元組值的簡單 C 程式所示。
解決混亂:
Stroustrup 的聲明實際上可能指執行位元組儲存指令時CPU的內部工作原理。某些 CPU 可能會使用原子讀取-修改-寫入操作來更新包含目標位元組的快取行。然而,這種內部機制對程式設計師來說是不可見的,並且不會改變位元組儲存的結果或正確性。
現代硬體的記憶體模型:
在現代 CPU 中,位元組儲存是原子的,不會影響相鄰位元組。這是透過定義硬體如何處理記憶體操作的明確定義的記憶體模型來確保的。
位元組儲存不穩定的神話:
位元組儲存可能會損壞的想法相鄰位元組已過時。所有現代(非 DSP)架構,包括 x86,都具有位元組儲存指令,這些指令在架構上設計為不會幹擾相鄰位元組。
結論:
雖然 Stroustrup 的聲明過去可能是準確的,但它不再適用於現代 x86 硬體。位元組儲存對於 C 程式設計來說是可靠且基礎的。
以上是現代 x86 處理器真的無法儲存單一位元組嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!