खोज…


16-बिट रजिस्टर

जब इंटेल ने मूल 8086 को परिभाषित किया, तो यह 16-बिट प्रोसेसर था जिसमें 20-बिट एड्रेस बस (नीचे देखें) था। उन्होंने 8 सामान्य-उद्देश्य 16-बिट रजिस्टरों को परिभाषित किया - लेकिन उन्हें कुछ निर्देशों के लिए विशिष्ट भूमिकाएं दीं:

  • AX संचयकर्ता रजिस्टर।
    कई ओपकोडों ने या तो इस रजिस्टर को ग्रहण किया, या यदि इसे निर्दिष्ट किया गया था तो वे तेज थे।
  • DX डेटा रजिस्टर।
    इसे कभी-कभी AX साथ 32-बिट मान के उच्च 16 बिट्स के रूप में जोड़ा गया था - उदाहरण के लिए, एक गुणा के परिणाम के रूप में।
  • CX गिनती रजिस्टर।
    इसका उपयोग उन लूपों के लिए निहित काउंटर के रूप में कई लूप-उन्मुख निर्देशों में किया गया था - उदाहरण के लिए LOOPNE (लूप यदि नहीं के बराबर है) और REP (दोहराया चाल / तुलना)
  • BX आधार पंजी।
    इसका उपयोग मेमोरी में एक संरचना के आधार को अनुक्रमित करने के लिए किया जा सकता है - उपरोक्त रजिस्टरों में से कोई भी सीधे मेमोरी में इंडेक्स करने के लिए उपयोग नहीं किया जा सकता है।
  • SI स्रोत सूचकांक रजिस्टर।
    यह निश्चित चाल के लिए स्मृति में निहित स्रोत सूचकांक था और संचालन की तुलना करता है।
  • DI डेस्टिनेशन इंडेक्स रजिस्टर।
    यह निश्चित चाल और संचालन की तुलना के लिए स्मृति में निहित गंतव्य सूचकांक था।
  • SP स्टैक पॉइंटर रजिस्टर।
    यह सेट में सबसे कम सामान्य प्रयोजन रजिस्टर है! इसने स्टैक में वर्तमान स्थिति की ओर इशारा किया, जिसका उपयोग स्पष्ट रूप से PUSH और POP संचालन के लिए किया गया था, जो कि RET साथ CALL और RET लिए निहित है, और बहुत ही व्यवधान के दौरान। जैसे, इसे किसी और चीज के लिए इस्तेमाल करना आपके कार्यक्रम के लिए खतरनाक था!
  • BP आधार सूचक रजिस्टर।
    जब सबरूटीन अन्य सबरूटीन्स को कॉल करते हैं, तो स्टैक कई "स्टैक फ्रेम" रखता है। BP को वर्तमान स्टैक फ्रेम को धारण करने के लिए इस्तेमाल किया जा सकता है, और फिर जब एक नया सबरूटीन कहा जाता था, तो इसे स्टैक पर बचाया जाता है, नए स्टैक फ्रेम को बनाया और इस्तेमाल किया जाता है, और आंतरिक सबरूटीन से लौटने पर पुराने स्टैक फ्रेम मान को बहाल किया जा सकता है ।

टिप्पणियाँ:

  1. स्मृति में अनुक्रमण के लिए पहले तीन रजिस्टरों का उपयोग नहीं किया जा सकता है।

  2. वर्तमान डेटा सेगमेंट में डिफ़ॉल्ट सूचकांक द्वारा BX , SI और DI (नीचे देखें)।

     MOV    AX, [BX+5]     ; Point into Data Segment
     MOV    AX, ES:[DI+5]  ; Override into Extra Segment
    
  3. DI , जब MOVS और CMPS जैसे मेमोरी-टू-मेमोरी ऑपरेशन में उपयोग किया जाता है, केवल अतिरिक्त सेगमेंट (नीचे देखें) का उपयोग करता है। इसे ओवरराइड नहीं किया जा सकता।

  4. SP और BP डिफ़ॉल्ट रूप से स्टैक सेगमेंट (नीचे देखें) का उपयोग करते हैं।

32-बिट रजिस्टर

जब इंटेल ने 80386 का उत्पादन किया, तो उन्होंने 16-बिट प्रोसेसर से 32-बिट तक उन्नत किया। 32-बिट प्रोसेसिंग का मतलब दो चीजें हैं: दोनों डेटा को हेर-फेर किया जा रहा था 32-बिट, और एक्सेस किए जा रहे मेमोरी एड्रेस 32-बिट थे। ऐसा करने के लिए, लेकिन अभी भी अपने पहले प्रोसेसर के साथ संगत हैं, उन्होंने प्रोसेसर के लिए पूरे नए मोड पेश किए। यह या तो 16-बिट मोड या 32-बिट मोड में था - लेकिन आप इस मोड को किसी भी डेटा, एड्रेसिंग या दोनों के लिए एक निर्देश-दर-निर्देश के आधार पर ओवरराइड कर सकते हैं!

सबसे पहले, उन्हें 32-बिट रजिस्टरों को परिभाषित करना था। उन्होंने इसे केवल 16 बिट्स से 32 बिट्स में मौजूदा आठ को विस्तारित करके और एक E उपसर्ग के साथ "विस्तारित" नाम दिया: EAX , EBX , ECX , EDX , ESI , EDI , EBP और ESP । इन रजिस्टरों के निचले 16 बिट्स पहले की तरह ही थे, लेकिन रजिस्टरों के ऊपरी हिस्से 32-बिट ऑपरेशन जैसे ADD और CMP लिए उपलब्ध थे। ऊपरी हिस्सों को अलग से सुलभ नहीं किया गया था क्योंकि वे 8-बिट रजिस्टरों के साथ किए गए थे।

प्रोसेसर के पास 16-बिट और 32-बिट मोड अलग करने के लिए था क्योंकि इंटेल ने कई ऑपरेशन के लिए एक ही ऑपकोड का उपयोग किया था: CMP AX,DX 16-बिट मोड में CMP AX,DX और 32-बिट मोड में CMP EAX,EDX में बिल्कुल एक ही ओपोड था ! इसका मतलब है कि समान कोड को किसी भी मोड में नहीं चलाया जा सकता है:

"में तत्काल ले जाएँ के लिए opcode AX " है 0xB8 , तत्काल मूल्य के दो बाइट्स द्वारा पीछा किया: 0xB8 0x12 0x34

" EAX में तत्काल ले जाएँ" का 0xB8 , इसके बाद तत्काल मूल्य के चार बाइट्स हैं: 0xB8 0x12 0x34 0x56 0x78

इसलिए कोड को निष्पादित करते समय प्रोसेसर को पता होना चाहिए कि प्रोसेसर किस मोड पर है, ताकि यह बाइट्स की सही संख्या का उत्सर्जन करना जानता हो।

8-बिट रजिस्टर

पहले चार 16-बिट रजिस्टरों में उनके ऊपरी और निचले-आधे बाइट्स सीधे अपने रजिस्टरों के रूप में पहुंच सकते हैं:

  • AH और AL AX रजिस्टर के उच्च और निम्न हिस्से हैं।
  • BH और BL BX रजिस्टर के उच्च और निम्न हिस्से हैं।
  • CH और CL CX रजिस्टर के उच्च और निम्न हिस्से हैं।
  • DH और DL DX रजिस्टर के उच्च और निम्न हिस्से हैं।

ध्यान दें कि इसका मतलब है कि AH या AL को बदलने से तुरंत AX बदल जाएगा! यह भी ध्यान दें कि 8-बिट रजिस्टर पर कोई भी ऑपरेशन उसके "पार्टनर" को प्रभावित नहीं कर सकता है - AL बढ़ाता है कि यह 0xFF से 0x00 तक ओवरफ्लो हो गया AH नहीं बदलेगा।

64-बिट रजिस्टरों में उनके निचले बाइट्स का प्रतिनिधित्व करने वाले 8-बिट संस्करण भी हैं:

  • RSI लिए SIL
  • RDI लिए DIL
  • BPL के लिए RBP
  • RSP लिए SPL

R15 माध्यम से R8 को पंजीकृत करने के लिए यही लागू होता है: उनके संबंधित निचले बाइट भागों को R8B - R15B नाम दिया गया है।

खंड रजिस्टर

विभाजन

जब इंटेल 8086 मूल डिजाइन कर रहा था, तो पहले से ही 8-बिट प्रोसेसर की संख्या थी जिसमें 16-बिट क्षमताएं थीं - लेकिन वे एक सच्चे 16-बिट प्रोसेसर का उत्पादन करना चाहते थे। वे पहले से ही जो कुछ भी था उससे बेहतर और अधिक सक्षम उत्पादन करना चाहते थे, इसलिए वे 16-बिट एड्रेसिंग रजिस्टरों द्वारा निहित 65,536 बाइट्स की अधिकतम मेमोरी तक पहुंचने में सक्षम होना चाहते थे।

मूल खंड रजिस्टर

तो उन्होंने "सेगमेंट" के विचार को लागू किया - 16-बिट एड्रेस रजिस्टरों द्वारा अनुक्रमित मेमोरी का 64 किलोबाइट ब्लॉक - जो कि कुल मेमोरी के विभिन्न क्षेत्रों को संबोधित करने के लिए फिर से आधारित हो सकता है। इन सेगमेंट बेस को रखने के लिए, उन्होंने सेगमेंट रजिस्टर को शामिल किया:

  • CS कोड सेगमेंट रजिस्टर।
    यह उस कोड के खंड को रखता है जिसे वर्तमान में क्रियान्वित किया जा रहा है, जो निहित IP (निर्देश सूचक) रजिस्टर द्वारा अनुक्रमित किया गया है।
  • DS डेटा सेगमेंट रजिस्टर।
    यह प्रोग्राम द्वारा डेटा में हेरफेर के लिए डिफ़ॉल्ट सेगमेंट रखता है।
  • ES अतिरिक्त सेगमेंट रजिस्टर।
    यह कुल मेमोरी में एक साथ डेटा संचालन के लिए एक दूसरा डेटा खंड रखता है।
  • SS स्टैक सेगमेंट रजिस्टर।
    यह मेमोरी का सेगमेंट रखता है जो वर्तमान स्टैक को धारण करता है।

खंड का आकार?

खंड रजिस्टर किसी भी आकार का हो सकता है, लेकिन उन्हें 16 बिट्स चौड़ा करने से अन्य रजिस्टरों के साथ हस्तक्षेप करना आसान हो गया। अगला सवाल था: क्या खंडों का ओवरलैप होना चाहिए, और यदि हां, तो कितना? उस प्रश्न का उत्तर कुल स्मृति आकार को निर्देशित करेगा जिसे एक्सेस किया जा सकता है।

यदि कोई ओवरलैप नहीं था, तो पता स्थान 32 बिट्स होगा - 4 गीगाबाइट - उस समय पूरी तरह से अनसुना आकार! 8 बिट्स का एक अधिक "प्राकृतिक" ओवरलैप 24-बिट एड्रेस स्पेस या 16 मेगाबाइट का उत्पादन करेगा। अंत में इंटेल ने 12-बिट ओवरलैप के साथ पता स्थान 1 मेगाबाइट बनाकर प्रोसेसर पर चार और एड्रेस पिंस को बचाने का फैसला किया - उन्होंने इसे समय के लिए पर्याप्त रूप से बड़ा माना!

अधिक सेगमेंट रजिस्टर!

जब इंटेल 80386 डिजाइन कर रहा था, तो उन्होंने माना कि 4 सेगमेंट रजिस्टरों के मौजूदा सूट उन कार्यक्रमों की जटिलता के लिए पर्याप्त नहीं थे जो वे चाहते थे कि वे समर्थन करने में सक्षम हों। इसलिए उन्होंने दो और जोड़े:

  • FS द सेग्मेंट रजिस्टर
  • GS ग्लोबल सेगमेंट रजिस्टर

इन नए सेगमेंट रजिस्टरों में कोई प्रोसेसर-लागू उपयोग नहीं था: वे केवल उस प्रोग्रामर के लिए उपलब्ध थे जो प्रोग्रामर चाहता था।

कुछ का कहना है कि मौजूदा सेट के C , D , E थीम को जारी रखने के लिए नामों को चुना गया था ...

64-बिट रजिस्टर

AMD एक प्रोसेसर निर्माता है जिसने 80386 के डिजाइन को इंटेल से संगत - लेकिन प्रतिस्पर्धी - संस्करणों का उत्पादन करने के लिए लाइसेंस दिया था। उन्होंने डिजाइन में आंतरिक परिवर्तन किए ताकि वे डिजाइन में थ्रूपुट या अन्य संवर्द्धन में सुधार कर सकें, जबकि अभी भी उन्हीं कार्यक्रमों को निष्पादित करने में सक्षम हैं।

एक-अप इंटेल के लिए, वे इंटेल 32-बिट डिज़ाइन के लिए 64-बिट एक्सटेंशन के साथ आए और पहले 64-बिट चिप का उत्पादन किया जो अभी भी 32-बिट x86 कोड चला सकता है। इंटेल 64-बिट वास्तुकला के अपने संस्करणों में एएमडी के डिजाइन के बाद समाप्त हो गया।

64-बिट डिज़ाइन ने रजिस्टर सेट में कई बदलाव किए, जबकि अभी भी पिछड़े हुए संगत हैं:

  • मौजूदा सामान्य-उद्देश्य रजिस्टर को 64 बिट तक विस्तारित किया गया था, और एक R उपसर्ग के साथ नामित किया गया था: RAX , RBX , RCX , RDX , RSI , RDI , RBP और RSP

    फिर, इन रजिस्टरों के निचले हिस्सों में पहले की तरह ही E -prefix रजिस्टर थे, और शीर्ष हिस्सों को स्वतंत्र रूप से एक्सेस नहीं किया जा सकता था।

  • 8 और 64-बिट रजिस्टर जोड़े गए, और नाम नहीं दिए गए लेकिन केवल गिने गए: R8 , R9 , R10 , R11 , R12 , R13 , R14 , और R15
    • 32-बिट इन रजिस्टरों की कम आधा कर रहे हैं R8D के माध्यम से R15D (हमेशा की तरह DWORD के लिए डी)।
    • इन रजिस्टरों के सबसे कम 16 बिट्स को W से रजिस्टर नाम तक R8W : R8W माध्यम से R15W माध्यम से पहुँचा जा सकता है।
  • सभी 16 रजिस्टरों में से सबसे कम 8 बिट्स को अब एक्सेस किया जा सकता है:
    • पारंपरिक AL , BL , CL , और DL ;
    • (पारंपरिक रूप से) सूचक रजिस्टरों के निम्न बाइट्स: SIL , DIL , BPL , और SPL ;
    • और 8 नए रजिस्टरों के निम्न बाइट्स: R8B माध्यम से R15B 8 R15B
    • हालांकि, AH , BH , CH , और DH एक आरईएक्स प्रीफ़िक्स (64 बिट ऑपरेंड साइज़ के लिए, या आर 8-आर 15 का उपयोग करने के लिए, या SIL , DIL , BPL , या SPL ) निर्देश में दुर्गम हैं। एक REX उपसर्ग के साथ, मशीन-कोड बिट-पैटर्न जो AH बजाय इसका मतलब SPL , और इसी तरह। इंटेल के निर्देश संदर्भ मैनुअल की तालिका 3-1 देखें (खंड 2)।

32-बिट रजिस्टर में लिखना हमेशा पूर्ण-चौड़ाई वाले रजिस्टर के ऊपरी 32 बिट्स को शून्य करता है, 8 या 16-बिट रजिस्टर के लेखन के विपरीत (जो पुराने मूल्य के साथ विलय होता है, जो आउट-ऑफ-ऑर्डर निष्पादन के लिए एक अतिरिक्त निर्भरता है )।

झंडे रजिस्टर

जब x86 अरिथमेटिक लॉजिक यूनिट (ALU) NOT और ADD जैसे ऑपरेशन करता है, तो यह एक विशेष 16-बिट FLAGS रजिस्टर में इन ऑपरेशन ("शून्य हो गया", "अतिप्रवाह", "नकारात्मक हो गया") के परिणामों को FLAGS । 32-बिट प्रोसेसर ने इसे 32 बिट्स में अपग्रेड किया और इसे EFLAGS कहा, जबकि 64-बिट प्रोसेसर ने इसे 64 बिट्स में अपग्रेड किया और इसे RFLAGS कहा।

हालत कोड

लेकिन नाम कोई बात नहीं, रजिस्टर सीधे पहुंच योग्य नहीं है (कुछ निर्देशों को छोड़कर - नीचे देखें)। इसके बजाय, व्यक्तिगत झंडों को कुछ निर्देशों में संदर्भित किया जाता है, जैसे सशर्त कूद या सशर्त सेट, जिसे Jcc और SETcc रूप में जाना जाता है, जहाँ cc अर्थ "कंडीशन कोड" होता है और निम्नलिखित तालिका को संदर्भित करता है:

शर्त कोड नाम परिभाषा
E , Z बराबर, शून्य ZF == 1
NE , NZ न के बराबर, न जीरो ZF == 0
O बाढ़ OF == 1
NO कोई अतिप्रवाह नहीं OF == ०
S पर हस्ताक्षर किए SF == 1
NS हस्ताक्षर नहीं किए हैं SF == 0
P समानता PF == 1
NP कोई समानता नहीं PF == 0
-------------- ---- ----------
C , B , NAE कैरी, नीचे, ऊपर या बराबर नहीं CF == १
NC , NB , AE नो कैरी, नॉट डाउन, एबव या इक्वल CF == ०
A , NBE ऊपर, नीचे या बराबर नहीं CF == 0 और ZF == 0
NA , BE ऊपर नहीं, नीचे या बराबर CF == 1 या ZF == 1
--------------- ---- ----------
GE , NL ग्रेटर या इक्वल, कम नहीं SF == OF
NGE , L ग्रेटर या इक्वल नहीं, कम SF ! = OF
G , NLE ग्रेटर, कम या बराबर नहीं ZF == 0 और SF == OF
NG , LE ग्रेटर नहीं, कम या बराबर ZF == 1 या SF ! = OF

16 बिट्स में, 0 से 1 घटाना या तो 65,535 या -1 इस पर निर्भर करता है कि अहस्ताक्षरित या हस्ताक्षरित अंकगणित का उपयोग किया जाता है - लेकिन गंतव्य 0xFFFF दोनों तरह से रखता है। यह केवल स्थिति कोड की व्याख्या करके है कि अर्थ स्पष्ट है। यह और भी बता रही है, तो 1 से घटाया जाता है 0x8000 : अहस्ताक्षरित गणित में, कि केवल बदलता है 32,768 में 32,767 ; जबकि हस्ताक्षरित अंकगणित में यह -32,768 को 32,767 में बदलता है - एक बहुत अधिक उल्लेखनीय अतिप्रवाह!

हालत कोड तालिका में तीन ब्लॉकों में बांटे गए हैं: साइन-अप्रासंगिक, अहस्ताक्षरित और हस्ताक्षरित। बाद वाले दो ब्लॉक के अंदर नामांकित "ऊपर" और "नीचे" का उपयोग करता है, बिना हस्ताक्षर किए, और "ग्रेटर" या हस्ताक्षर के लिए "कम"। तो JB "जंप इफ नीचे" (अहस्ताक्षरित) होगा, जबकि JL "जंप इफ लेस" (हस्ताक्षरित) होगा।

सीधे FLAGS एक्सेस करना

उपर्युक्त शर्त कोड पूर्वनिर्धारित अवधारणाओं की व्याख्या करने के लिए उपयोगी हैं, लेकिन वास्तविक ध्वज बिट्स भी निम्नलिखित दो निर्देशों के साथ सीधे उपलब्ध हैं:

  • फ्लैग के साथ LAHF लोड AH रजिस्टर
  • SAHF स्टोर AH फ़्लैग में पंजीकृत है

इन निर्देशों के साथ केवल कुछ झंडे की नकल की जाती है। पूरे FLAGS / EFLAGS / RFLAGS रजिस्टर बचाया या ढेरों पर बहाल किया जा सकता:

  • PUSHF / POPF पुश / 16-बिट पॉप FLAGS ढेर से / पर
  • PUSHFD / POPFD पुश / पॉप 32-बिट EFLAGS पर / स्टैक से
  • PUSHFQ / POPFQ पुश / 64-बिट पॉप RFLAGS ढेर से / पर

ध्यान दें कि वर्तमान [R/E]FLAGS रजिस्टर को स्वचालित रूप से सहेजने और पुनर्स्थापित करने में बाधा उत्पन्न होती है।

अन्य झंडे

साथ ही ऊपर वर्णित ALU झंडे, FLAGS रजिस्टर अन्य प्रणाली-राज्य झंडे को परिभाषित करता है:

  • IF बाधित झंडा।
    यह विश्व स्तर पर इंटरप्ट को सक्षम करने के लिए STI निर्देश के साथ सेट किया गया है, और CLI निर्देश के साथ वैश्विक रूप से अक्षम इंटरप्ट को साफ किया गया है।
  • DF दिशा ध्वज।
    मेमोरी-टू-मेमोरी ऑपरेशन जैसे कि CMPS और MOVS (मेमोरी स्थानों के बीच तुलना और स्थानांतरित करने के लिए) स्वचालित रूप से निर्देश के भाग के रूप में इंडेक्स रजिस्टरों को CMPS या MOVSDF फ्लैग तय करता है कि कौन सा होता है: यदि CLD अनुदेश के साथ मंजूरी दे दी जाती है, तो वे CLD जाते हैं; अगर STD निर्देश के साथ सेट किया गया है, तो वे कम हो जाते हैं।
  • TF जाल करें। यह एक डिबग ध्वज है। इसे सेट करने से प्रोसेसर "सिंगल-स्टेप" मोड में आ जाएगा: प्रत्येक निर्देश के निष्पादित होने के बाद इसे "सिंगल स्टेप इंटरप्ट हैंडलर" कहा जाएगा, जिसे डिबगर द्वारा नियंत्रित किए जाने की उम्मीद है। इस ध्वज को सेट या साफ़ करने के लिए कोई निर्देश नहीं हैं: आपको मेमोरी में रहते हुए थोड़ा हेरफेर करने की आवश्यकता है।

80286 झंडे

80286 में नई मल्टीटास्किंग सुविधाओं का समर्थन करने के लिए, इंटेल ने FLAGS रजिस्टर में अतिरिक्त झंडे जोड़े:

  • IOPL I / O विशेषाधिकार स्तर।
    मल्टीटास्किंग कोड की सुरक्षा के लिए, कुछ कार्यों के लिए I / O पोर्ट तक पहुँचने के लिए विशेषाधिकारों की आवश्यकता थी, जबकि अन्य को उन्हें एक्सेस करने से रोकना था। इंटेल ने चार-स्तरीय विशेषाधिकार पैमाने पेश किए, जिसमें 00 2 को सबसे अधिक विशेषाधिकार प्राप्त किया गया और 11 2 को कम से कम। यदि IOPL मौजूदा विशेषाधिकार स्तर से कम था, तो I / O पोर्ट तक पहुँचने, या IOPL को सक्षम या अक्षम करने का कोई भी प्रयास, इसके बजाय सामान्य सुरक्षा दोष का कारण होगा।
  • NT नेस्ट टास्क ध्वज।
    यह ध्वज सेट किया गया था यदि एक कार्य CALL दूसरे कार्य को संपादित करता है, जो एक संदर्भ स्विच का कारण बनता है। सेट फ्लैग ने प्रोसेसर को RET निष्पादित होने पर एक संदर्भ स्विच करने के लिए कहा।

80386 झंडे

प्रोसेसर में डिज़ाइन की गई अतिरिक्त सुविधाओं का समर्थन करने के लिए '386 अतिरिक्त झंडे की जरूरत थी।

  • RF फिर से शुरू झंडा।
    `386 ने डिबग रजिस्टरों को जोड़ा, जो एक निश्चित मेमरी स्थान को पढ़ने, लिखने या निष्पादित करने जैसे विभिन्न हार्डवेयर एक्सेस पर डिबगर को आमंत्रित कर सकते थे। हालाँकि, जब डिबग हैंडलर निर्देश को निष्पादित करने के लिए लौटा, तो एक्सेस तुरंत डिबग हैंडलर को फिर से लागू करेगा! या कम से कम यह अगर यह फिर से शुरू होने वाले झंडे के लिए नहीं था, जो स्वचालित रूप से डिबग हैंडलर में प्रवेश पर सेट है, और हर निर्देश के बाद स्वचालित रूप से साफ़ हो जाता है। यदि रिज्यूम फ़्लैग सेट किया जाता है, तो डिबग हैंडलर को आमंत्रित नहीं किया जाता है।
  • VM द वर्चुअल 8086 फ्लैग।
    पुराने 16-बिट कोड के साथ-साथ नए 32-बिट कोड का समर्थन करने के लिए, 80386 एक वर्चुअल 8086 कार्यकारी की सहायता से "वर्चुअल 8086" मोड में 16-बिट टास्क चला सकता है। VM ध्वज ने संकेत दिया कि यह कार्य एक आभासी 8086 कार्य था।

80486 झंडे

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

  • AC संरेखण चेक ध्वज x86 आर्किटेक्चर हमेशा किसी भी बाइट सीमा पर मल्टी-बाइट मेमोरी वैल्यू तक पहुंच सकता है, कुछ आर्किटेक्चर के विपरीत जो उन्हें आकार-संरेखित करने की आवश्यकता थी (4-बाइट मान 4-बाइट सीमाओं पर होने की आवश्यकता थी)। हालाँकि, ऐसा करने के लिए यह कम कुशल था, क्योंकि कई मेमोरी एक्सेस की जरूरत नहीं थी। यदि AC ध्वज सेट किया गया था, तो कोड को निष्पादित करने के बजाए एक अविशिष्ट पहुंच एक अपवाद को बढ़ाएगा। इस तरह, AC सेट के साथ विकास के दौरान कोड में सुधार किया जा सकता है, लेकिन उत्पादन कोड के लिए बंद कर दिया गया है।

पेंटियम झंडे

पेंटियम ने वर्चुअलाइज़िंग के लिए अधिक समर्थन जोड़ा, CPUID अनुदेश के लिए समर्थन का समर्थन किया:

  • VIF वर्चुअल इंटरप्ट फ्लैग।
    यह इस कार्य की IF की एक आभासी प्रति है - चाहे यह टास्क इंटरप्ट को अक्षम करना चाहता हो या नहीं, वास्तव में Global Interrupts को प्रभावित किए बिना।
  • VIP वर्चुअल इंटरप्ट लंबित ध्वज।
    यह इंगित करता है कि VIF द्वारा एक अवरोध को लगभग अवरुद्ध कर दिया गया था, इसलिए जब टास्क एक STI करता है तो इसके लिए एक आभासी अवरोध खड़ा किया जा सकता है।
  • ID CPUID -allowed फ्लैग।
    CPUID अनुदेश को निष्पादित करने के लिए इस कार्य को अनुमति दें या नहीं। एक वर्चुअल मॉनीटर इसे अस्वीकार कर सकता है, और अनुरोध को टास्क में "झूठ" बोल सकता है यदि यह निर्देश निष्पादित करता है।


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow