Mis on olekuregister?

Olekuregister – tuntud ka kui lipuregister, programmi olekusõna ja tingimuskoodi register – on määratletud kui lipubittide kogum protsessori sees. Register on protsessori ahel ja sarnaneb paljuski mälu asukohaga, mis tähendab, et andmeid saab sellest kirjutada ja lugeda. Erinevalt mälu asukohast ei ole olekuregistril sageli aadressi, kuna mikroprotsessor kasutab seda sisemiselt. 8-bitises keskprotsessoris (CPU) saab olekuregistri biti seadistada, mis on võrdne arvuga 1, või tühjendada, kui see on võrdne arvuga 0, kasutades erinevaid protsessori töötulemusi. Mõnikord määrab või tühjendab protsessor bitid ise, kuid muul ajal seab või tühjendab bitid konkreetse programmi käsud.

Olekuregistri bitte nimetatakse ka lippudeks või lipubitideks ja programmeerija kasutab neid teatud programmeerimise eesmärkidel. Igal olekuregistri lipul on ainulaadne eesmärk. Edastuslipp määratakse, kui eelmine toiming muutis seitsmenda biti (või negatiivse lipu) üle või muutis kandelipu alamjooksuks. See seab loogika, võrdluse ja aritmeetika nihke ajal. Nulli lipp seatakse, kui viimane operatsiooni tulemus oli 0.

Lipp, mida nimetatakse katkestuse keelamiseks, lubab või keelab katkestuste toimimise. Need on juhised, mis ajutiselt peatavad teatud toimingud, et saaks teha muid toiminguid. Kui see konkreetne lipp seatakse, ei ole katkestused lubatud, kuid kui see on selge, on katkestused lubatud. Teine lipp, mida nimetatakse kümnendlipuks, võimaldab protsessoril veatute aritmeetiliste võrrandite täitmiseks järgida täiustatud binaarrežiimi. Kui lipp seatakse, kasutab see seda täiustatud binaarrežiimi. Teine registribitt on katkestuse lipubitt, mis määrab, millal jõukatkestus (BRK) käivitatakse.

Ületäitumise lipp seatakse aritmeetikatoimingute ajal, kui tehe annab kehtetu tulemuse. Negatiivne lipp määratakse juhul, kui viimase toimingu tulemuseks oli seatud 1. Viimane lipp, mida nimetatakse bitiks 5, on nimetu ja seatakse alati väärtusele 1. Programmeerijatel pole sellest konkreetsest bitist sisuliselt kasu.

FLAGS-register on üks näide olekuregistrist, mida kasutati teatud keskprotsessoriüksustes ja mis sisaldas protsessori hetkeolekuid. See oli 16 bitti lai ja sellele järgnesid EFLAGS ja RFLAGS, vastavalt 32-bitine register ja 64-bitine register. FLAGS-registris olid aga mõned lipud, mis erinesid algsest 8-bitisest registrist, sealhulgas paarsuslipp, abilipp ja lõksulipp.