Pergunta

Eu estou procurando uma função que apresenta um nível elevado D interface para um CAS atômica sobre Intel x86.

Eu sei que posso fazê-lo com ASM inline (e se necessário eu vou), mas eu prefiro código garra de outra pessoa se eu puder.

Foi útil?

Solução

A partir da documentação em: http://www.digitalmars.com/d/ 2.0 / overview.html

Inline Assembler

Os drivers de dispositivo de alto desempenho as aplicações do sistema, sistemas embarcados, e código especializado às vezes é preciso mergulhar em linguagem assembly para obter o tarefa concluída. Embora as implementações D são não exigida para implementar a linha montador, é definido e parte de o idioma. A maioria das necessidades de código assembly pode ser tratado com ele, eliminando a necessidade de montadoras separadas ou DLL.

Muitas implementações D também irá suportar funções intrínsecas analogamente ao apoio da do C intrínsecos para manipulação porta de I / O, acesso directo ao flutuante especial operações de ponto, etc.

Então você poderia, em teoria o uso do cmpxchg diretamente.


Editar

Você pode querer olhar em: http://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277

Ele faz demorar um pouco para carregar, por algum motivo, mas ele está usando a instrução cmpxchg internamente, deve ser trivial para reequipar-lo para seus propósitos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top