I x86 -instruktionssættet af kompatible processorer er CLI - instruktionen en forkortelse for "Clear Interrupt-Enable Flag". Den nulstiller interrupt-flaget (IF) i EFLAGS-registret . Når dette flag er ryddet, ignorerer processoren alle afbrydelser (undtagen NMI) fra eksterne enheder.
Opkoden for denne instruktion er 0xFA.
CLI-instruktionen tilhører klassen af I/O-instruktioner. I beskyttet tilstand , hvis den kaldes af kode, hvis CPL er numerisk større end IOPL, vil processoren generere en #GP(0) undtagelse. For eksempel, hvis IOPL = 2, så kan kode i 0, 1 og 2 beskyttelsesringe udføre denne kommando . Moderne operativsystemer indstiller IOPL = 0, så kun kernen kan udføre denne instruktion.
Bemærk, at IF'en også kan ændres ved at indlæse EFLAGS, for eksempel med en POPF -instruktion .
CLI'en bruges almindeligvis som et synkroniseringsværktøj. CLI/STI-instruktionsparret kan bruges til at fremhæve uafbrydelig kode med asynkrone afbrydelser. På multiprocessorsystemer ændrer CLI-instruktionen kun IF'en for den processor, den kører på, og ændrer ikke IF'en for andre. Derfor er det der, for at synkronisere kode med interrupt-handlere, nødvendigt yderligere at bruge synkroniseringsobjekter (normalt spin-låse). For eksempel har Linux-kernen en spin_lock_irqsave-funktion, der deaktiverer interrupts og forsøger at erhverve spinlock-objektet.
Synkrone ( software ) afbrydelser forårsaget af INT , INT3 , INTO , BOUND instruktioner behandles uanset tilstanden af IF flaget.
Fordi HLT-instruktionen standser processoren, indtil der opstår en afbrydelse, får CLI/HLT-kombinationen maskinen til at stoppe helt.