फ्लैग रजिस्टर

FLAGS प्रोसेसर रजिस्टर स्थिति रजिस्टर है जिसमें x86 CPU की वर्तमान स्थिति होती है। ध्वज बिट्स का आकार और अर्थ आर्किटेक्चर निर्भर हैं। यह आमतौर पर अंकगणितीय संचालन के परिणाम के साथ-साथ वर्तमान समय में सीपीयू संचालन पर लगाए गए प्रतिबंधों की जानकारी को दर्शाता है। उनमें से कुछ प्रतिबंधों में कुछ व्यवधानों को ट्रिगर होने से रोकना, विशेषाधिकार प्राप्त निर्देशों के एक वर्ग के निष्पादन पर रोक लगाना शामिल हो सकता है। अतिरिक्त स्थिति फ़्लैग मेमोरी मैपिंग को बायपास कर सकते हैं और परिभाषित कर सकते हैं कि सीपीयू को अंकगणितीय अतिप्रवाह पर क्या कार्रवाई करनी चाहिए।

कैरी, पैरिटी, ऑक्सिलरी कैरी (या आधा ले जाने वाला झंडा), जीरो और साइन फ्लैग कई आर्किटेक्चर में शामिल हैं।

i286 आर्किटेक्चर में, रजिस्टर 16-बिट|16 बिट चौड़ा है। इसके उत्तराधिकारी, EFLAGS और RFLAGS रजिस्टर क्रमशः 32-बिट|32 बिट और 64-बिट|64 बिट चौड़े हैं। व्यापक रजिस्टर अपने छोटे पूर्ववर्तियों के साथ संगतता बनाए रखते हैं।

झंडे
नोट: FLAGS रजिस्टर मान के भीतर ध्वज (ओं) को क्वेरी करने के लिए तालिका में मास्क कॉलम AND bitmask  (हेक्साडेसिमल मान के रूप में) है।

उपयोग
सभी FLAGS रजिस्टरों में स्थिति कोड रजिस्टर, फ्लैग बिट्स होते हैं जो एक मशीन भाषा के परिणाम देते हैं | मशीन-भाषा निर्देश दूसरे निर्देश को प्रभावित करते हैं। अंकगणित और तार्किक निर्देश कुछ या सभी झंडे सेट करते हैं, और सशर्त कूद निर्देश कुछ झंडे के मूल्य के आधार पर चर कार्रवाई करते हैं। उदाहरण के लिए,   (यदि शून्य हो तो कूदो),   (जंप इफ कैरी), और   (यदि अतिप्रवाह हो तो कूदें) विशिष्ट झंडों पर निर्भर करते हैं। अन्य सशर्त कूद कई झंडों के संयोजन का परीक्षण करते हैं।

FLAGS रजिस्टरों को स्टैक से या स्टैक पर ले जाया जा सकता है। यह सीपीयू संदर्भ को बचाने और बहाल करने के काम का हिस्सा है, एक रूटीन के खिलाफ जैसे एक इंटरप्ट सर्विस रूटीन जिसके रजिस्टरों में परिवर्तन कॉलिंग कोड द्वारा नहीं देखा जाना चाहिए। यहाँ प्रासंगिक निर्देश हैं: 64-बिट मोड में, पुश/पीओपीएफ और पुशफक्यू/पीओपीएफक्यू उपलब्ध हैं लेकिन पुशफडी/पीओपीएफडी नहीं हैं।
 * PUSHF और POPF निर्देश 16-बिट FLAGS रजिस्टर को स्थानांतरित करते हैं।
 * PUSHFD/POPFD (i386 आर्किटेक्चर के साथ पेश किया गया) 32-बिट डबल रजिस्टर EFLAGS को ट्रांसफर करता है।
 * PUSHFQ/POPFQ (x64 आर्किटेक्चर के साथ पेश किया गया) 64-बिट क्वाडवर्ड रजिस्टर RFLAGS को ट्रांसफर करता है।

FLAGS रजिस्टर के निचले 8 बिट्स SAHF और LAHF द्वारा सीधे लोड/स्टोर मैनिपुलेशन के लिए भी खुले हैं (लोड/स्टोर AH को फ्लैग में)।

उदाहरण
FLAGS रजिस्टरों को पुश और पॉप करने की क्षमता एक प्रोग्राम को FLAGS में सूचनाओं को हेरफेर करने देती है जिसके लिए मशीन-भाषा निर्देश मौजूद नहीं हैं। उदाहरण के लिए, द  और   निर्देश स्पष्ट करें और दिशा ध्वज (DF) क्रमशः सेट करें; लेकिन डीएफ के पूरक के लिए कोई निर्देश नहीं है। यह निम्नलिखित विधानसभा कोड के साथ प्राप्त किया जा सकता है:

FLAGS रजिस्टर में हेरफेर करके, एक प्रोग्राम स्थापित प्रोसेसर के मॉडल को निर्धारित कर सकता है। उदाहरण के लिए, संरेखण ध्वज को केवल Intel 80486 और इसके बाद के संस्करण पर बदला जा सकता है। यदि प्रोग्राम इस ध्वज को संशोधित करने का प्रयास करता है और यह महसूस करता है कि संशोधन कायम नहीं रहा, तो प्रोसेसर 486 से पहले का है।

P5 (माइक्रोआर्किटेक्चर) से शुरू होकर, CPUID निर्देश प्रोसेसर मॉडल की रिपोर्ट करता है। हालाँकि, उपरोक्त विधि पहले के मॉडलों के बीच अंतर करने के लिए उपयोगी बनी हुई है।

यह भी देखें

 * बिट फील्ड
 * नियंत्रण रजिस्टर
 * सीपीयू फ्लैग (x86)
 * कार्यक्रम स्थिति शब्द
 * स्थिति रजिस्टर
 * x86 असेंबली भाषा
 * x86 निर्देश लिस्टिंग