我正在寻找一个在Intel x86上为D提供高级别atomic CAS接口的功能。
我知道我可以使用内联ASM(如果需要,我会这样做),但如果可以,我宁愿从其他人那里获取代码。
答案 0 :(得分: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指令,为了您的目的重新设置它应该是微不足道的。