Domanda

Sto cercando una funzione che presenti un'interfaccia D di alto livello CAS atomico su Intel x86.

So di poterlo fare con ASM inline (e se necessario lo farò), ma preferirei prendere il codice da qualcun altro se posso.

È stato utile?

Soluzione

Dalla documentazione su: http://www.digitalmars.com/d/ 2.0 / overview.html

  

Inline Assembler

     

Driver di dispositivo, prestazioni elevate   applicazioni di sistema, sistemi integrati,   e talvolta è necessario il codice specializzato   immergiti nel linguaggio assembly per ottenere il   lavoro fatto. Mentre le implementazioni D sono   non richiesto per implementare l'inline   assemblatore, è definito e parte di   la lingua. La maggior parte delle esigenze del codice assembly   può essere gestito con esso, ovviando al   necessità di assemblatori o DLL separati.

     

Anche molte implementazioni D lo faranno   supportare funzioni intrinseche   analogamente al supporto di C di   intrinseci per manipolazione delle porte I / O,   accesso diretto al galleggiante speciale   operazioni a punti, ecc.

Quindi, in teoria, è possibile utilizzare direttamente CMPXCHG.


Modifica

Puoi dare un'occhiata a: http://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277

Ci vuole un po 'di tempo per caricarsi per qualche motivo, ma sta usando l'istruzione CMPXCHG internamente, dovrebbe essere banale ridistribuirlo per i tuoi scopi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top