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