2009-03-05 10 views
3

Я ищу функцию, которая представляет интерфейс высокого уровня D для atomic CAS на Intel x86.Функция D с использованием x86 CMPXCHG Compare-and-swap

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

ответ

4

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

Встраиваемый Assembler

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

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

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


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

Вы можете посмотреть по адресу: http://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277

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

+0

Я знаю, что могу сделать это сам. Мне просто интересно, могу ли я просто использовать то, что использовал кто-то другой. – BCS

+0

Танго выглядит хорошо. – BCS