Question

Je recherche une fonction qui présente une interface D de haut niveau avec CAS atomique sur Intel x86.

Je sais que je peux le faire avec ASM en ligne (et le cas échéant, je le ferai), mais je préférerais simplement récupérer le code de quelqu'un d'autre si je le peux.

Était-ce utile?

La solution

D'après la documentation disponible sur: http://www.digitalmars.com/d/ 2.0 / overview.html

  

Assembleur en ligne

     

Pilotes de périphérique hautes performances   applications système, systèmes embarqués,   et le code spécialisé doit parfois   plonger dans le langage d'assemblage pour obtenir le   travail accompli. Alors que D implémentations sont   pas nécessaire pour mettre en œuvre le inline   assembleur, il est défini et fait partie de   la langue. La plupart des besoins en code d'assemblage   peut être manipulé avec, en évitant la   besoin d'assembleurs séparés ou de DLL.

     

De nombreuses implémentations D vont également   supporte les fonctions intrinsèques   de manière analogue au support de C   les composants intrinsèques pour la manipulation des ports d'E / S,   accès direct aux flottants spéciaux   opérations ponctuelles, etc.

Vous pouvez donc théoriquement utiliser directement le CMPXCHG.

Modifier

Vous voudrez peut-être consulter: http://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277

Le chargement prend du temps pour une raison quelconque, mais comme il utilise l'instruction CMPXCHG en interne, il devrait être facile de le réorganiser à vos fins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top