Repository 32bit  Forum
Repository 64bit  Wiki

Spin Lock (Assembler)[RISOLTO]

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Spin Lock (Assembler)[RISOLTO]

Messaggioda afterjames » lun mag 26, 2008 11:30

Salve a tutti.Sto guardando il codice di un semplice spin-lock e ci sono delle cose che non riesco a capire:

Codice: Seleziona tutto
typedef struct {
   unsigned int slock;
} raw_spinlock_t;


static inline void __raw_spin_lock(raw_spinlock_t *lock)
{
   asm volatile(
      "1:\n\t"
      "lock;decl %0\n\t"         //???????????
      "jns 2f\n\t"
      "3:\n\t"
      "rep;nop\n\t"
      "cmpl $0,%0\n\t"
      "jle 3b\n\t"
      "jmp 1b\n\t"
      "2:\t" : "=m" (lock->slock) : : "memory");
}


Vorrei sapere cosa significa in assembler mettere una cosa del tipo "puntatore;".Ho capito che provo a decrementare il contenuto di un registro e se lo trovo minore o uguale a zero mi fermo, come con un semaforo, ma non capisco la sintassi :(
Ultima modifica di afterjames il lun mag 26, 2008 17:54, modificato 1 volta in totale.
afterjames
Linux 1.0
Linux 1.0
 
Messaggi: 64
Iscritto il: lun gen 14, 2008 14:14

Re: Spin Lock (Assembler)[RISOLTO]

Messaggioda afterjames » lun mag 26, 2008 17:54

Ho capito..Rende atomica l'operazione successiva
afterjames
Linux 1.0
Linux 1.0
 
Messaggi: 64
Iscritto il: lun gen 14, 2008 14:14


Torna a Programmazione

Chi c’è in linea

Visitano il forum: NicoMetal e 1 ospite