使用 x86 CMPXCHG 比较和交换的 D 函数

发布于 2024-07-14 09:56:27 字数 346 浏览 8 评论 0原文

我正在寻找一个向 D 接口提供高级 D 接口的函数Intel x86 上的 ="http://en.wikipedia.org/wiki/Compare-and-swap" rel="nofollow noreferrer">原子 CAS。

我知道我可以使用内联 ASM 来做到这一点(如果需要的话我会这样做),但如果可以的话,我宁愿从其他人那里获取代码。

I'm looking for a function that presents a high level D interface to an atomic CAS on Intel x86.

I know I can do it with inline ASM (and if needed I will), but I'd rather just grab code from someone else if I can.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

允世 2024-07-21 09:56:27

来自文档: 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 指令,因此根据您的目的重新调整它应该很简单。

From the documentation at: http://www.digitalmars.com/d/2.0/overview.html

Inline Assembler

Device drivers, high performance
system applications, embedded systems,
and specialized code sometimes need to
dip into assembly language to get the
job done. While D implementations are
not required to implement the inline
assembler, it is defined and part of
the language. Most assembly code needs
can be handled with it, obviating the
need for separate assemblers or DLL's.

Many D implementations will also
support intrinsic functions
analogously to C's support of
intrinsics for I/O port manipulation,
direct access to special floating
point operations, etc.

So you could in theory use the CMPXCHG directly.


Edit

You may want look at: http://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277

It does take a while to load for some reason, but it is using the CMPXCHG instruction internally, it should be trivial to retool it for your purposes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文