Функция D, использующая функцию сравнения и подкачки x86 CMPXCHG

StackOverflow https://stackoverflow.com/questions/616207

  •  03-07-2019
  •  | 
  •  

Вопрос

Я ищу функцию, которая представляет собой высокий уровень D интерфейс к атомный CAS на Intel x86.

Я знаю, что могу сделать это с помощью встроенного ASM (и при необходимости я сделаю это), но я бы предпочел просто взять код у кого-нибудь другого, если смогу.

Это было полезно?

Решение

Из документации по адресу: http://www.digitalmars.com/d/2.0/overview.html

Встроенный Ассемблер

Драйверы устройств, высокая производительность системные приложения, встроенные системы и специализированный код иногда требуют погружения в язык ассемблера, чтобы выполнить работу.Хотя общие реализации не требуются для реализации встроенного ассемблера, он определен и является частью языка.Большинство потребностей в ассемблерном коде могут быть обработаны с его помощью, устраняя необходимость в отдельных ассемблерах или DLL.

Многие реализации D также будут поддерживать встроенные функции аналогично поддержке C встроенных функций для манипулирования портами ввода-вывода, прямого доступа к специальным операциям с плавающей запятой и т.д.

Таким образом, теоретически вы могли бы использовать CMPXCHG напрямую.


Редактировать

Возможно, вы захотите взглянуть на: http://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277

По какой-то причине загрузка занимает некоторое время, но внутри используется инструкция CMPXCHG, поэтому перенастроить ее для ваших целей должно быть тривиально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top