為什麼彙編mov指令不能用lock字首?

時間 2021-05-05 18:20:48

1樓:北極

Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3 (3A, 3B & 3C): System Programming Guide

8.1.1 Guaranteed Atomic Operations

The Intel486 processor (and newer processors since) guarantees that the following basic memory operations will

always be carried out atomically:

Reading or writing a byte

Reading or writing a word aligned on a 16-bit boundary

Reading or writing a doubleword aligned on a 32-bit boundary

翻譯過來的意思就是MOV本身就是乙個原子操作。

2樓:Rob Zhang

簡單來說就是沒有這個需求,你看xadd指令,它可以直接往記憶體位址上執行加法操作,但指令執行時並不是只有一次記憶體訪問,lock字首可以鎖住匯流排保證多次記憶體操作的原子性。順便來個小廣告,原子操作可以看我專欄裡面的文章

3樓:Oscar Lee

能夠加lock字首的指令比如inc,需要先從memory讀出資料,修改後再寫入memory,在多核情況下,無法保證上述兩步操作的原子性,所以需要加lock字首鎖定匯流排。mov指令是單向傳輸,硬體設計保證了單條mov指令的原子性(即使訪問非對齊的資料),多條mov指令在多執行緒環境下的原子性由軟體負責實現(spinlock)

個人理解,僅供參考

4樓:

x86 指令集設計如此。

下面是我的理解:Lock 字首的目的是保證緊接著的指令對記憶體運算元的 read-write 操作的原子性。mov 指令不存在這樣的操作,所以也不需要 lock 字首。

酒店的毛巾為什麼不能用

Archy 管理規範的正規酒店的毛巾及布草都很乾淨,可以放心用。配備了洗衣房的酒店,所有布草都會由洗衣房清洗。洗衣房會配備全套巨大的工業洗衣機 烘乾機 熨燙摺疊機,所使用的消毒劑 洗衣劑也是配套專業產品,會按照指導比例新增,負責清洗的人員也經受過專業培訓,以確保布草得到衛生標準的清洗。客用布草通常不...

拳擊比賽為什麼不能用腿

福州禪武 現代拳擊起源英國,為了使拳擊減少傷害事故,更富有體育精神,限制了拳擊用腿。拳擊起源於人類產生之初。為了生存和競爭,人類發明了它。所以最初它是保護人們生命財產的一種主要手段。在古希臘,這項運動被稱為角力拳擊,據說拳擊手套裡面裝有鐵蒺藜,激烈的搏鬥常常以失敗者的殞命而告終。歐洲在中世紀日耳曼習...

為什麼AJ不能用來打球?

code004accepted 先問是不是,再問為什麼。近幾年出的AJ33 34 35完全可以用來打球,而且挺適合打球如果講為什麼AJ不適合打球,那麼原因有下面幾點 球鞋是消耗品,大部分人並沒有那個室內籃球場的條件,都是打水泥地的。一雙AJ一千多,兩個月給你磨沒了,平均下來月支出500 AJ大部分鞋...