2009-03-05 91 views
3

我正在尋找一個函數,它提供了一個高層次的函數D在Intel x86上的atomic CAS接口。使用x86 CMPXCHG的D函數比較並交換

我知道我可以用內聯ASM來做到這一點(如果需要的話,我會的),但是我寧願只是從別人那裏抓取代碼。

回答

4

從文檔:http://www.digitalmars.com/d/2.0/overview.html

內聯彙編

設備驅動程序,高性能 系統應用,嵌入式系統, 和專門的代碼有時需要 浸成彙編語言獲得 工作完成。雖然D實現是 不需要實現內聯 彙編程序,但它的定義和部分是 的語言。大多數彙編代碼需要 可以用它來處理,而不需要用於單獨的彙編程序或DLL的 。

很多d的實現也將 支持內部函數 類似於C中的支持 內在的I/O端口操作, 直接訪問專用浮 浮點運算等

所以你能理論直接使用CMPXCHG。


編輯

你可能想看看:http://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277

它確實需要一段時間來加載由於某種原因,但它使用的是CMPXCHG指令在內部,它應該是微不足道的爲了您的目的重新制作它。

+0

我知道我可以做我的自我。我只是想知道如果我可以使用其他人使用過的東西。 – BCS 2009-03-05 19:58:22