final記憶體屏障在處理器的使用

2021-10-06 18:18:37 字數 415 閱讀 5491

final 語義在處理器中的實現

現在我們以 x86 處理器為例,說明 final 語義在處理器中的具體實現。

上面我們提到,寫 final 域的重排序規則會要求譯編器在 final 域的寫之後,建構函式 return 之前,插入乙個 storestore 障屏。讀 final 域的重排序規則要求編譯器在讀 final 域的操作前面插入乙個 loadload 屏障。

由於 x86 處理器不會對寫 - 寫操作做重排序,所以在 x86 處理器中,寫 final 域需要的 storestore 障屏會被省略掉。同樣,由於 x86 處理器不會對存在間接依賴關係的操作做重排序,所以在 x86 處理器中,讀 final 域需要的 loadload 屏障也會被省略掉。也就是說在 x86 處理器中,final 域的讀 / 寫不會插入任何記憶體屏障!

處理器,記憶體和指令

處理器的底部或者四周,有大量的引腳,可以接受從外面來的電訊號,或者向外發出電訊號。這些引腳有很多,其中一部分用來將引數與運算的數字送入處理器的內部。有些引腳是用來復用的,假如現在要進行加法運算,那麼我們要重複使用這些引腳,來依次將被加數和加數送入。一旦被加數通過引腳送入處理器,代表這個二進位制數字的...

微處理器記憶體布局方面知識

51微控制器程式程式儲存空間 rom 和資料儲存空間 ram 詳解 stm32f1 cortex m3核心 儲存器對映 關於微控制器記憶體分配介紹的 arm 系統中常用的段分類說明 stm32中的程式是在ram裡還是flash裡執行?nand flash nor flash stm32中的程式在ra...

在預處理器中的特殊用法

在預處理中有3個特殊用法 字串定義 字串串聯和標誌貼上。1 字串定義的完成是用 指示,它容許設乙個識別符號並把它轉化為字串,然而字串串聯發生在當兩個相鄰的字串沒有分隔符時,在這種情況下字串組合在一起。在寫調 試 時,這兩個特徵是非常有效的。例如,define print x cout x x end...