Pregunta

Estoy buscando una función que presente una interfaz de alto nivel D para un CAS atómico en Intel x86.

Sé que puedo hacerlo con el ASM en línea (y si es necesario, lo haré), pero prefiero tomar el código de otra persona si puedo.

¿Fue útil?

Solución

De la documentación en: http://www.digitalmars.com/d/ 2.0 / overview.html

  

Ensamblador en línea

     

Controladores de dispositivo, alto rendimiento   aplicaciones de sistemas, sistemas embebidos,   y el código especializado a veces necesita   sumergirse en el lenguaje ensamblador para obtener el   trabajo hecho. Mientras que las implementaciones de D son   No se requiere implementar el inline.   ensamblador, se define y forma parte de   el idioma. La mayoría de las necesidades de código de montaje   Se puede manejar con ella, obviando el   necesidad de ensambladores separados o DLL's.

     

Muchas implementaciones en D también   apoya funciones intrínsecas   análogamente al apoyo de C de   intrínsecos para la manipulación de puertos de E / S,   Acceso directo a flotadores especiales.   operaciones puntuales, etc.

Por lo tanto, en teoría, puedes usar el CMPXCHG directamente.


Editar

Es posible que desee consultar: http://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277

Se demora un poco en cargarse por algún motivo, pero está utilizando la instrucción CMPXCHG de forma interna, debería ser trivial para renovarla para sus propósitos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top