TST in Assembly ARM v7

di il
4 risposte

TST in Assembly ARM v7

Ciao a tutti, vorrei chiedervi un parare (ed eventuali miglioramenti) su questo codice che ho scritto in Assembly ARM per realizzare la mutua esclusione su una regione critica utilizzando una variabile LOCK e l'istruzione TST

https://github.com/LucaSoftwareEngineer/Programmazione-ARM/blob/main/TST_lock.s

4 Risposte

  • Re: TST in Assembly ARM v7

    Dovresti postare sempre il codice nel forum …

    Comunque questa

    BEQ regione_critica    

    è inutile

  • Re: TST in Assembly ARM v7

    Ciao, ah ok, ti ringrazio per la risposta e per il consiglio di rimuovere il BEQ regione_critica, effettivamente è un salto condizionale inutile

    ok quando condivido codice lo posto direttamente nel messaggio senza link esterno

  • Re: TST in Assembly ARM v7

    Anche “B fine” a riga 28, mi sembra inutile.

  • Re: TST in Assembly ARM v7

    Ah giusto, ti ringrazio per la risposta, è un salto “inutile” perchè anche senza B fine l'istruzione successiva dopo aver impostato il lock a 0 punta alla macro fine 

    quindi anche il B wait_lock nella macro _start è inutile

    il codice con i miglioramenti che mi avete suggerito rimuovendo i salti inutili sarebbe così corretto?

    .section .data
      lock: .word 0
    
    .global _start
    _start:
      LDR R0, =lock
      LDR R1, [R0]
      
    wait_lock:
      TST R1, #1           @ R0 AND #1
    
      BNE wait_lock          @se risultato TST 1
    
    regione_critica:
      @BEGIN IMPOSTO LOCK A 1
      MOV R5, #1
      STR R5, [R0]
      @END IMPOSTO LOCK A 1
      
      MOV R2, #3
      
      @BEGIN IMPOSTO LOCK A 0
      MOV R6, #0
      STR R6, [R0]
      @END IMPOSTO LOCK A 0
      
    
      
    fine:
      MOV R7, #1
      SVC 0
      
Devi accedere o registrarti per scrivere nel forum
4 risposte