So how treat lock prefix with 8086 alone.
ignoralo.
How to treat lock prefix if exists other processors like FPU.
-
Introduci un flag "Memory Lock", visibile da tutto l'hardware nell'ambiente di simulazione.
-
Prima di qualsiasi operazione di accesso alla memoria, da qualsiasi pezzo di hardware nell'ambiente di simulazione, controlla il flag "Memory Lock": se è impostato, salta questo ciclo di clock, riprova al ciclo di clock successivo.
-
Se il prefisso di blocco è presente su un'istruzione, (e se il flag di blocco della memoria non è già stato impostato), quindi imposta il flag "Memory Lock", esegui l'istruzione senza obbedire al flag "Memory Lock" e quando l'istruzione è completa, deselezionare il flag "Memory Lock".
Se esegui tutto il tuo hardware in modalità lock-step, (significa che su ogni ciclo di clock spunta ogni dispositivo, e quando tutti i dispositivi sono spuntati, procedi al ciclo di clock successivo), allora è tutto ciò che serve fare.
Se si esegue l'hardware in parallelo, (ovvero su ogni ciclo di clock si spunta simultaneamente tutto l'hardware disponibile su thread diversi), potrebbe essere necessario implementare il flag "Memory Lock" come mutex, in modo da impedire dispositivi da sovrascrivere accidentalmente.