एड्रेसिंग मोड: Difference between revisions
No edit summary |
|||
(43 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
एड्रेसिंग मोड अधिकांश सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) रचना में निर्देश सेट वास्तुकला का एक पहलू है। किसी दिए गए निर्देश सेट वास्तुकला में विभिन्न एड्रेसिंग मोड परिभाषित करते हैं कि उस वास्तुकला में मशीन कोड निर्देश प्रत्येक निर्देश के संकार्य की पहचान कैसे करता है। एड्रेसिंग मोड निर्दिष्ट करता है कि मशीन निर्देश या अन्य जगहों में निहित रजिस्टरों और/या स्थिरांक में रखी गई जानकारी का उपयोग करके ऑपरेंड के प्रभावी मेमोरी एड्रेस की गणना कैसे करें। | |||
एड्रेसिंग मोड अधिकांश सेंट्रल प्रोसेसिंग यूनिट ( | |||
कंप्यूटर प्रोग्रामिंग में, एड्रेसिंग मोड मुख्य रूप से उन लोगों के लिए रुचि रखते हैं जो असेंबली लैंग्वेज में लिखते हैं और कंपाइलर लेखकों के | कंप्यूटर प्रोग्रामिंग में, एड्रेसिंग मोड मुख्य रूप से उन लोगों के लिए रुचि रखते हैं जो असेंबली लैंग्वेज में लिखते हैं और कंपाइलर लेखकों के लिए संबंधित अवधारणा के लिए ऑर्थोगोनल निर्देश सेट देखें जो किसी भी एड्रेसिंग मोड का उपयोग करने के लिए किसी भी निर्देश की क्षमता से संबंधित है। | ||
== | == चेतावनियां == | ||
ध्यान दें कि विभिन्न एड्रेसिंग मोड के नामकरण का कोई सामान्यतः स्वीकृत तरीका नहीं है। विशेष रूप से, अलग-अलग लेखक और कंप्यूटर निर्माता एक ही एड्रेसिंग मोड को अलग-अलग नाम दे सकते हैं, या अलग-अलग एड्रेसिंग मोड को एक ही नाम दे सकते हैं। इसके अलावा, एड्रेसिंग मोड, जिसे दिए गए वास्तुकला में, एकल एड्रेसिंग मोड के रूप में माना जाता है, कार्यक्षमता का प्रतिनिधित्व कर सकता है, जो कि अन्य वास्तुकला में, दो या दो से अधिक एड्रेसिंग मोड द्वारा कवर किया जाता है। उदाहरण के लिए, कुछ जटिल निर्देश सेट कंप्यूटर (सीआईएससी) वास्तुकला, जैसे डिजिटल उपकरण निगम (डीईसी) वीएएक्स, रजिस्टरों और शाब्दिक या तत्काल स्थिरांक को सिर्फ एक अन्य एड्रेसिंग मोड के रूप में मानते हैं। जैसे आईबीएम प्रणाली/360 और उसके उत्तराधिकारी, और सबसे कम निर्देश सेट कंप्यूटर आरआईएससी डिज़ाइन, इस जानकारी को निर्देश के भीतर एन्कोड करते हैं। इस प्रकार, बाद वाली मशीनों में रजिस्टर को दूसरे में कॉपी करने, रजिस्टर में शाब्दिक स्थिरांक की कापी बनाने और मेमोरी स्थान की सामग्री को रजिस्टर में कॉपी करने के लिए तीन अलग-अलग निर्देश कोड होते हैं, जबकि वीएएक्स में केवल "एमओवी" निर्देश होता है। | |||
ध्यान दें कि विभिन्न एड्रेसिंग मोड के नामकरण का कोई सामान्यतः स्वीकृत तरीका नहीं है। विशेष रूप से, अलग-अलग लेखक और कंप्यूटर निर्माता एक ही एड्रेसिंग मोड को अलग-अलग नाम दे सकते हैं, या अलग-अलग एड्रेसिंग मोड को एक ही नाम दे सकते हैं। इसके अलावा, एड्रेसिंग मोड, जिसे दिए गए वास्तुकला में, | |||
"एड्रेसिंग मोड" शब्द स्वयं विभिन्न व्याख्याओं के अधीन है या तो "मेमोरी एड्रेस कैलकुलेशन मोड" या "ऑपरेंड एक्सेसिंग मोड"। पहली व्याख्या के तहत, निर्देश जो मेमोरी से नहीं पढ़ते हैं या मेमोरी में नहीं लिखते हैं (जैसे | "एड्रेसिंग मोड" शब्द स्वयं विभिन्न व्याख्याओं के अधीन है या तो "मेमोरी एड्रेस कैलकुलेशन मोड" या "ऑपरेंड एक्सेसिंग मोड"। पहली व्याख्या के तहत, निर्देश जो मेमोरी से नहीं पढ़ते हैं या मेमोरी में नहीं लिखते हैं (जैसे "रजिस्टर में शाब्दिक जोड़") को "एड्रेसिंग मोड" नहीं माना जाता है। दूसरी व्याख्या वीएएक्स जैसी मशीनों के लिए अनुमति देती है जो रजिस्टर या शाब्दिक ऑपरेंड के लिए अनुमति देने के लिए ऑपरेंड मोड बिट्स का उपयोग करती हैं। "लोड प्रभावी पता" जैसे निर्देशों पर केवल पहली व्याख्या लागू होती है, जो ऑपरेंड के पते को लोड करती है, न कि ऑपरेंड को ही। | ||
नीचे सूचीबद्ध एड्रेसिंग मोड को कोड एड्रेसिंग और डेटा एड्रेसिंग में विभाजित किया गया है। अधिकांश कंप्यूटर वास्तुकला इस अंतर को बनाए रखते हैं, लेकिन कुछ वास्तुकला हैं (या रहे हैं) जो किसी भी संदर्भ में सभी एड्रेसिंग मोड का उपयोग करने की अनुमति देते हैं। | नीचे सूचीबद्ध एड्रेसिंग मोड को कोड एड्रेसिंग और डेटा एड्रेसिंग में विभाजित किया गया है। अधिकांश कंप्यूटर वास्तुकला इस अंतर को बनाए रखते हैं, लेकिन कुछ वास्तुकला हैं (या रहे हैं) जो किसी भी संदर्भ में सभी एड्रेसिंग मोड का उपयोग करने की अनुमति देते हैं। | ||
नीचे दिखाए गए निर्देश एड्रेसिंग मोड को स्पष्ट करने के लिए | नीचे दिखाए गए निर्देश एड्रेसिंग मोड को स्पष्ट रूप से विशुद्ध करने के लिए प्रतिनिधि हैं, और जरूरी नहीं कि किसी विशेष कंप्यूटर द्वारा उपयोग किए जाने वाले स्मृती-विज्ञान को प्रतिबिंबित करें। | ||
== एड्रेसिंग मोड की संख्या == | == एड्रेसिंग मोड की संख्या == | ||
कंप्यूटर वास्तुकला हार्डवेयर में प्रदान किए जाने वाले एड्रेसिंग मोड की संख्या के अनुसार बहुत भिन्न होते हैं। जटिल एड्रेसिंग मोड को खत्म करने और केवल एक या कुछ सरल एड्रेसिंग मोड का उपयोग करने के कुछ लाभ हैं, भले ही इसके लिए कुछ अतिरिक्त निर्देशों और शायद | कंप्यूटर वास्तुकला हार्डवेयर में प्रदान किए जाने वाले एड्रेसिंग मोड की संख्या के अनुसार बहुत भिन्न होते हैं। जटिल एड्रेसिंग मोड को खत्म करने और केवल एक या कुछ सरल एड्रेसिंग मोड का उपयोग करने के कुछ लाभ हैं, यह साबित हुआ है कि भले ही इसके लिए कुछ अतिरिक्त निर्देशों और शायद अतिरिक्त रजिस्टर की आवश्यकता हो।<ref>{{cite journal|url=http://portal.acm.org/citation.cfm?doid=36204.36193|title=How many addressing modes are enough?|author1=F. Chow|author2=S. Correll|author3=M. Himelstein|author4=E. Killian|author5=L. Weber|journal=ACM Sigarch Computer Architecture News|year=1987|volume=15|issue=5|pages=117–121|doi=10.1145/36177.36193}}</ref><ref>{{cite web|url=http://i.stanford.edu/pub/cstr/reports/csl/tr/86/300/CSL-TR-86-300.pdf|title=An Overview of the MIPS-X-MP Project|author1=John L. Hennessy|author-link1=John L. Hennessy|author2=Mark A. Horowitz|author-link2=Mark Horowitz|year=1986|quote=... MIPS-X uses a single addressing mode: base register plus offset. This simple addressing mode allows the computation of the effective address to begin very early ...}}</ref> <ref>{{cite web|url=http://www.csee.umbc.edu/~squire/cs411_l19.html|title=Lecture 19, Pipelining Data Forwarding|work=CS411 Selected Lecture Notes|author=Dr. Jon Squire}}</ref><ref>{{cite web|url=http://hpc.serc.iisc.ernet.in/~govind/hpc/L10-Pipeline.txt |title=High Performance Computing, Notes of Class 11 (Sept. 15 and 20, 2000) - Pipelining |access-date=2014-02-08 |url-status=dead |archive-url=https://web.archive.org/web/20131227033204/http://hpc.serc.iisc.ernet.in/~govind/hpc/L10-Pipeline.txt |archive-date=2013-12-27 }}</ref><ref name=Guardian>{{cite book |url=https://books.google.com/books?id=Nibfj2aXwLYC&q=deep%20pipeline%20processor&pg=PA94 |title=Modern Processor Design |author=John Paul Shen, Mikko H. Lipasti |year=2004 |publisher=[[McGraw-Hill Professional]]|isbn=9780070570641 }}</ref> निर्देश पाइपलाइन किए गए सीपीयू को डिजाइन करना बहुत आसान है यदि केवल उपलब्ध एड्रेसिंग मोड सरल हैं। | ||
अधिकांश | अधिकांश आरआईएससी वास्तुकला में केवल पांच सरल एड्रेसिंग मोड होते हैं, जबकि सीआईएससी वास्तुकला जैसे डीईसी वीएएक्स में एक दर्जन से अधिक एड्रेसिंग मोड होते हैं, जिनमें से कुछ काफी जटिल होते हैं। आईबीएम प्रणाली/360 वास्तुकला में केवल तीन एड्रेसिंग मोड थे प्रणाली/390 के लिए कुछ और जोड़े गए हैं। | ||
जब केवल कुछ एड्रेसिंग मोड होते हैं, तो आवश्यक विशेष एड्रेसिंग मोड सामान्यतः निर्देश कोड (जैसे | जब केवल कुछ एड्रेसिंग मोड होते हैं, तो आवश्यक विशेष एड्रेसिंग मोड सामान्यतः निर्देश कोड (जैसे आईबीएम प्रणाली/360 और उत्तराधिकारी, अधिकांश आरआईएससी) के भीतर एन्कोड किया जाता है। लेकिन जब कई एड्रेसिंग मोड होते हैं, तो एड्रेसिंग मोड को निर्दिष्ट करने के लिए एक विशिष्ट फ़ील्ड को अक्सर निर्देश में अलग रखा जाता है। डीईसी वीएएक्स ने लगभग सभी निर्देशों के लिए कई मेमोरी ऑपरेंड की अनुमति दी, और इसलिए उस विशेष ऑपरेंड के लिए एड्रेसिंग मोड को इंगित करने के लिए प्रत्येक ऑपरेंड विनिर्देशक के पहले कुछ बिट्स आरक्षित किए। एड्रेसिंग मोड विनिर्देशक बिट्स को ओपकोड ऑपरेशन बिट्स से अलग रखते हुए ऑर्थोगोनल अनुदेश सेट तैयार करता है। | ||
कई एड्रेसिंग मोड वाले कंप्यूटर पर भी, वास्तविक कार्यक्रमों | कई एड्रेसिंग मोड वाले कंप्यूटर पर भी, वास्तविक कार्यक्रमों के माप<ref name="hennessy-patterson-c54x">{{cite book|url=https://books.google.com/books?id=XX69oNsazH4C&pg=PA104|title=Computer Architecture: A Quantitative Approach|author1=John L. Hennessy|author2=David A. Patterson|author-link2=David Patterson (computer scientist)|page=104|quote=The C54x has 17 data addressing modes, not counting register access, but the four found in MIPS account for 70% of the modes. Autoincrement and autodecrement, found in some RISC architectures, account for another 25% of the usage. This data was collected form a measurement of static instructions for the C-callable library of 54 DSP routines coded in assembly language.|isbn=9780080502526|date=2002-05-29}}</ref> से संकेत मिलता है कि नीचे सूचीबद्ध सरल एड्रेसिंग मोड में उपयोग किए गए सभी एड्रेसिंग मोड में से कुछ 90% या अधिक के लिए खाते हैं। चूंकि इस तरह के अधिकांश माप संकलक द्वारा उच्च-स्तरीय भाषाओं से उत्पन्न कोड पर आधारित होते हैं, यह कुछ हद तक उपयोग किए जा रहे संकलक की सीमाओं को दर्शाता है।<ref>{{cite web|url=http://users.encs.concordia.ca/~tahar/coen6741/notes/Chapter2-4p.pdf|title=Instruction Set Principles: Addressing Mode Usage (Summary)|author=Dr. Sofiène Tahar|quote=3 programs measured on machine with all address modes (VAX) ... 75% displacement and immediate|archive-url=https://web.archive.org/web/20110930125040/http://users.encs.concordia.ca/~tahar/coen6741/notes/Chapter2-4p.pdf|archive-date=2011-09-30 }}</ref><ref name="hennessy-patterson-c54x"/><ref>{{cite book|chapter=Efficient and Language-Independent Mobile Programs|author1=Ali-Reza Adl-Tabatabai|author2=Geoff Langdale|author3=Steven Lucco|author4=Robert Wahbe|title=Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation - PLDI '96|year=1995|pages=127–136|doi=10.1145/231379.231402|isbn=0897917952|s2cid=2534344|quote=79% of all instructions executed could be replaced by RISC instructions or synthesized into RISC instructions using only basic block instruction combination.|chapter-url=http://dl.acm.org/citation.cfm?id=231402}}</ref> | ||
== उपयोगी दुष्प्रभाव == | |||
==उपयोगी दुष्प्रभाव== | कुछ निर्देश सेट वास्तुकला, जैसे कि Intel x86 और आईबीएम/360 और इसके उत्तराधिकारी, में लोड प्रभावी पता निर्देश होता है।<ref>{{ | ||
कुछ निर्देश सेट वास्तुकला, जैसे कि Intel x86 और | |||
cite manual | cite manual | ||
| publisher = IBM | | publisher = IBM | ||
Line 52: | Line 48: | ||
=== निरपेक्ष या प्रत्यक्ष === | === निरपेक्ष या प्रत्यक्ष === | ||
+-----+----------------------------+ | +-----+----------------------------+ | ||
| | |jump| address | | ||
+-----+----------------------------+ | +-----+----------------------------+ | ||
( | (Effective PC address = address) | ||
पूर्ण निर्देश पते के लिए प्रभावी पता पैरामीटर ही है जिसमें कोई संशोधन नहीं है। | पूर्ण निर्देश पते के लिए प्रभावी पता पैरामीटर ही है जिसमें कोई संशोधन नहीं है। | ||
===पीसी- | ===पीसी - पूर्ण === | ||
+-----+----------------------------+ | +-----+----------------------------+ | ||
| | |jump| offset | jump relative | ||
+-----+----------------------------+ | +-----+----------------------------+ | ||
( | (Effective PC address = next instruction address + offset, offset may be negative) | ||
पीसी- | पीसी - पूर्ण निर्देश पते के लिए प्रभावी पता अगले निर्देश के पते में जोड़ा गया ऑफसेट पैरामीटर है। यह ऑफ़सेट सामान्यतः निर्देश से पहले और बाद में कोड के संदर्भ की अनुमति देने के लिए हस्ताक्षरित होता है।<ref name="maxfield" > | ||
Max Maxfield. | Max Maxfield. | ||
[https://www.eeweb.com/building-a-4-bit-computer-assembly-language-and-assembler-part-1/ "Building a 4-Bit Computer: Assembly Language and Assembler"]. | [https://www.eeweb.com/building-a-4-bit-computer-assembly-language-and-assembler-part-1/ "Building a 4-Bit Computer: Assembly Language and Assembler"]. | ||
Section "Addressing modes". | Section "Addressing modes". | ||
2019. | 2019. | ||
</ref> यह | </ref> यह जम्प के संबंध में विशेष रूप से उपयोगी है, क्योंकि विशिष्ट जम्प पास के निर्देशों के लिए होती है (उच्च-स्तरीय भाषा में सबसे अधिक '''यदि''' या '''जबकि''' बयान काफी कम होते हैं)। वास्तविक कार्यक्रमों के मापन से पता चलता है कि 8 या 10 बिट ऑफ़सेट कुछ 90% सशर्त जम्प (लगभग ± 128 या ± 512 बाइट्स) के लिए पर्याप्त है।<ref>{{cite web|last1=Kong|first1=Shing|last2=Patterson|first2=David|author-link2=David Patterson (computer scientist)|title=Instruction set design|year=1995|at=Slide 27|url=http://www.cs.berkeley.edu/~pattrsn/152/lec3.ps}}</ref> | ||
पीसी - पूर्ण एड्रेसिंग का अन्य लाभ यह है कि कोड स्थिति-स्वतंत्र हो सकता है, अर्थात इसे किसी भी पते को समायोजित करने की आवश्यकता के बिना मेमोरी में कहीं भी लोड किया जा सकता है। | |||
इस एड्रेसिंग मोड के कुछ संस्करण सशर्त हो सकते हैं जो दो रजिस्टरों ("जंप अगर reg1=reg2"), रजिस्टर ("जंप जब तक reg1=0") या कोई रजिस्टर नहीं है, तो स्थिति रजिस्टर में कुछ पहले से निर्धारित बिट का उल्लेख करता है। नीचे सशर्त निष्पादन भी देखें। | इस एड्रेसिंग मोड के कुछ संस्करण सशर्त हो सकते हैं जो दो रजिस्टरों ("जंप अगर reg1=reg2"), रजिस्टर ("जंप जब तक reg1=0") या कोई रजिस्टर नहीं है, तो स्थिति रजिस्टर में कुछ पहले से निर्धारित बिट का उल्लेख करता है। नीचे सशर्त निष्पादन भी देखें। | ||
Line 77: | Line 75: | ||
=== अप्रत्यक्ष पंजीकृत करें === | === अप्रत्यक्ष पंजीकृत करें === | ||
+----------+-----+ | +----------+-----+ | ||
| | |jump Via| reg | | ||
+----------+-----+ | +----------+-----+ | ||
( | (Effective PC address = contents of register 'reg) | ||
रजिस्टर अप्रत्यक्ष निर्देश के लिए प्रभावी पता निर्दिष्ट रजिस्टर में पता है। उदाहरण के लिए, (A7) पता रजिस्टर A7 की सामग्री तक पहुंचने के लिए। | रजिस्टर अप्रत्यक्ष निर्देश के लिए प्रभावी पता निर्दिष्ट रजिस्टर में पता है। उदाहरण के लिए, (A7) पता रजिस्टर A7 की सामग्री तक पहुंचने के लिए। | ||
Line 86: | Line 84: | ||
प्रभाव उस निर्देश पर नियंत्रण स्थानांतरित करना है जिसका पता निर्दिष्ट रजिस्टर में है। | प्रभाव उस निर्देश पर नियंत्रण स्थानांतरित करना है जिसका पता निर्दिष्ट रजिस्टर में है। | ||
कई | कई आरआईएससी मशीनों, के साथ-साथ सीआईएससी आईबीएम प्रणाली/360 और उत्तराधिकारियों के पास उप-दैनिकि कॉल निर्देश हैं जो रिटर्न स्टेटमेंट को एड्रेस रजिस्टर में रखते हैं रजिस्टर-अप्रत्यक्ष एड्रेसिंग मोड का इस्तेमाल उस सबरूटीन कॉल से वापस आने के लिए किया जाता है। | ||
== अनुक्रमिक एड्रेसिंग मोड == | == अनुक्रमिक एड्रेसिंग मोड == | ||
Line 92: | Line 90: | ||
=== अनुक्रमिक निष्पादन === | === अनुक्रमिक निष्पादन === | ||
+----------+ | +----------+ | ||
| | | nop | execute the following instruction: | ||
+----------+ | +----------+ | ||
( | (Effective PC address = next instruction address) | ||
सीपीयू, अनुक्रमिक निर्देश को निष्पादित करने के बाद, निम्नलिखित निर्देश को तुरंत निष्पादित करता है। | सीपीयू, अनुक्रमिक निर्देश को निष्पादित करने के बाद, निम्नलिखित निर्देश को तुरंत निष्पादित करता है। | ||
Line 101: | Line 99: | ||
कुछ कंप्यूटरों पर अनुक्रमिक निष्पादन को एड्रेसिंग मोड नहीं माना जाता है। | कुछ कंप्यूटरों पर अनुक्रमिक निष्पादन को एड्रेसिंग मोड नहीं माना जाता है। | ||
अधिकांश | अधिकांश सीपीयू वास्तुकला पर अधिकांश निर्देश अनुक्रमिक निर्देश हैं। चूंकि अधिकांश निर्देश अनुक्रमिक निर्देश होते हैं, सीपीयू डिजाइनर अक्सर ऐसी विशेषताएं जोड़ते हैं जो इन अनुक्रमिक निर्देशों को तेजी से चलाने के लिए जानबूझकर अन्य निर्देशों - शाखा निर्देशों पर प्रदर्शन का त्याग करते हैं। | ||
सशर्त शाखाएं | सशर्त शाखाएं पीसी 2 को संभावित परिणामों में से एक के साथ लोड करती हैं, स्थिति के आधार पर-अधिकांश सीपीयू वास्तुकला "ली गई" शाखा के लिए कुछ अन्य एड्रेसिंग मोड का उपयोग करते हैं, और "नहीं ली गई" शाखा के लिए अनुक्रमिक निष्पादन। | ||
आधुनिक सीपीयू में कई विशेषताएं - निर्देश प्रीफेच और अधिक जटिल पाइपलाइन (कंप्यूटिंग) आईएनजी, आउट-ऑफ - ऑर्डर निष्पादन, आदि - इस भ्रम को बनाए रखते हैं कि प्रत्येक निर्देश अगले एक के शुरू होने से पहले समाप्त हो जाता है, वही अंतिम परिणाम देता है, भले ही आंतरिक रूप से ऐसा नहीं होता है। | आधुनिक सीपीयू में कई विशेषताएं - निर्देश प्रीफेच और अधिक जटिल पाइपलाइन (कंप्यूटिंग) आईएनजी, आउट-ऑफ - ऑर्डर निष्पादन, आदि - इस भ्रम को बनाए रखते हैं कि प्रत्येक निर्देश अगले एक के शुरू होने से पहले समाप्त हो जाता है, वही अंतिम परिणाम देता है, भले ही आंतरिक रूप से ऐसा नहीं होता है। | ||
Line 110: | Line 108: | ||
==== सीपीयू जो अनुक्रमिक निष्पादन का उपयोग नहीं करते हैं ==== | ==== सीपीयू जो अनुक्रमिक निष्पादन का उपयोग नहीं करते हैं ==== | ||
सीपीयू जो प्रोग्राम काउंटर के साथ अनुक्रमिक निष्पादन का उपयोग नहीं करते हैं वे अत्यंत दुर्लभ हैं। कुछ सीपीयू में, प्रत्येक निर्देश हमेशा अगले निर्देश का पता निर्दिष्ट करता है। ऐसे सीपीयू में निर्देश सूचक होता है जो उस निर्दिष्ट पते को रखता है, यह कोई प्रोग्राम काउंटर नहीं है क्योंकि इसे बढ़ाने का कोई प्रावधान नहीं है। ऐसे सीपीयू में कुछ ड्रम मेमोरी कंप्यूटर शामिल हैं जैसे आईबीएम 650, एसईसीडी मशीन, लिब्रास्कोप एलजीपी-30, और आरटीएक्स 32P।<ref>{{cite web|url = http://www.ece.cmu.edu/~koopman/stack_computers/sec5_3.html |title =Architecture of the RTX 32P|work = Stack Computers|first = Philip|last= Koopman|date= 1989}}</ref> | |||
अन्य कंप्यूटिंग वास्तुकला बहुत आगे जाते हैं, वॉन न्यूमैन वास्तुकला को बायपास करने का प्रयास करते हैं वॉन न्यूमैन टोंटी विभिन्न प्रकार के प्रोग्राम काउंटर का उपयोग करके मशीन वास्तुकला में परिणाम। | अन्य कंप्यूटिंग वास्तुकला बहुत आगे जाते हैं, वॉन न्यूमैन वास्तुकला को बायपास करने का प्रयास करते हैं वॉन न्यूमैन टोंटी विभिन्न प्रकार के प्रोग्राम काउंटर का उपयोग करके मशीन वास्तुकला में परिणाम। | ||
=== सशर्त निष्पादन === | === सशर्त निष्पादन === | ||
कुछ कंप्यूटर वास्तुकला में सशर्त निर्देश होते हैं (जैसे | कुछ कंप्यूटर वास्तुकला में सशर्त निर्देश होते हैं (जैसे एआरएम वास्तुकला, लेकिन अब 64-बिट मोड में सभी निर्देशों के लिए नहीं) या सशर्त लोड निर्देश (जैसे x86) जो कुछ मामलों में सशर्त शाखाओं को अनावश्यक बना सकते हैं और निर्देश पाइपलाइन को फ्लश करने से बच सकते हैं। स्थिति रजिस्टर सेट करने के लिए 'तुलना' जैसे निर्देश का उपयोग किया जाता है, और बाद के निर्देशों में उस स्थिति कोड पर एक परीक्षण शामिल होता है ताकि यह देखा जा सके कि उनका पालन किया जाता है या अनदेखा किया जाता है। | ||
=== छोड़ें === | === छोड़ें === | ||
Line 124: | Line 122: | ||
(प्रभावी पीसी पता = अगला निर्देश पता + 1) | (प्रभावी पीसी पता = अगला निर्देश पता + 1) | ||
स्किप एड्रेसिंग को एक निश्चित "+1" ऑफसेट के साथ एक विशेष प्रकार का | स्किप एड्रेसिंग को एक निश्चित "+1" ऑफसेट के साथ एक विशेष प्रकार का पीसी - पूर्ण एड्रेसिंग मोड माना जा सकता है। पीसी - पूर्ण एड्रेसिंग की तरह, कुछ सीपीयू में इस एड्रेसिंग मोड के संस्करण होते हैं जो केवल रजिस्टर("स्किप if reg1=0" ) या कोई रजिस्टर नहीं होते हैं, जो स्थिति रजिस्टर में कुछ पहले से निर्धारित बिट का उल्लेख करते हैं। अन्य सीपीयू में संस्करण होता है जो परीक्षण के लिए विशिष्ट बाइट में विशिष्ट बिट का चयन करता है ("स्किप reg12 का बिट 7 0 है")। | ||
अन्य सभी सशर्त शाखाओं के विपरीत, "स्किप" निर्देश को निर्देश पाइपलाइन को फ्लश करने की आवश्यकता नहीं होती है, हालांकि इसे अगले निर्देश को अनदेखा करने की आवश्यकता हो सकती है। | अन्य सभी सशर्त शाखाओं के विपरीत, "स्किप" निर्देश को निर्देश पाइपलाइन को फ्लश करने की आवश्यकता नहीं होती है, हालांकि इसे अगले निर्देश को अनदेखा करने की आवश्यकता हो सकती है। | ||
Line 153: | Line 151: | ||
यदि ऑफ़सेट शून्य है, तो यह ''अप्रत्यक्ष पंजीकरण'' पता का उदाहरण बन जाता है प्रभावी पता आधार रजिस्टर में सिर्फ मूल्य है। | यदि ऑफ़सेट शून्य है, तो यह ''अप्रत्यक्ष पंजीकरण'' पता का उदाहरण बन जाता है प्रभावी पता आधार रजिस्टर में सिर्फ मूल्य है। | ||
कई | कई आरआईएससी मशीनों पर, शून्य मान पर रजिस्टर 0 तय किया जाता है। यदि रजिस्टर 0 का उपयोग आधार रजिस्टर के रूप में किया जाता है, तो यह एब्सोल्यूट एड्रेसिंग का उदाहरण बन जाता है। हालाँकि, मेमोरी के केवल एक छोटे से हिस्से तक पहुँचा जा सकता है (64 किलोबाइट, यदि ऑफ़सेट 16 बिट है)। | ||
वर्तमान कंप्यूटर मेमोरी के आकार के संबंध में 16-बिट ऑफ़सेट बहुत छोटा लग सकता है (यही कारण है कि 80386 ने इसे 32-बिट तक विस्तारित किया)। यह और भी बुरा हो सकता है | वर्तमान कंप्यूटर मेमोरी के आकार के संबंध में 16-बिट ऑफ़सेट बहुत छोटा लग सकता है (यही कारण है कि 80386 ने इसे 32-बिट तक विस्तारित किया)। यह और भी बुरा हो सकता है आईबीएम प्रणाली/360 मेनफ्रेम में केवल अहस्ताक्षरित 12-बिट ऑफसेट होता है। हालाँकि, संदर्भ की स्थानीयता का सिद्धांत लागू होता है कम समय के अंतराल में, अधिकांश डेटा आइटम जो प्रोग्राम एक्सेस करना चाहता है, एक दूसरे के काफी करीब होते हैं। | ||
यह एड्रेसिंग मोड इंडेक्सेड एब्सोल्यूट एड्रेसिंग मोड से काफी निकटता से संबंधित है। | यह एड्रेसिंग मोड इंडेक्सेड एब्सोल्यूट एड्रेसिंग मोड से काफी निकटता से संबंधित है। | ||
Line 168: | Line 166: | ||
+----------+-----+--------------------------+ | +----------+-----+--------------------------+ | ||
इस "एड्रेसिंग मोड" का | इस "एड्रेसिंग मोड" का कोई प्रभावी पता नहीं है, और इसे कुछ कंप्यूटरों पर एड्रेसिंग मोड नहीं माना जाता है। | ||
स्थिरांक हस्ताक्षरित या अहस्ताक्षरित हो सकता है। उदाहरण के लिए, <code>move.l #$FEEDABBA, D0</code> "FEEDABBA" के तत्काल हेक्स मान को रजिस्टर D0 में स्थानांतरित करने के लिए। | स्थिरांक हस्ताक्षरित या अहस्ताक्षरित हो सकता है। उदाहरण के लिए, <code>move.l #$FEEDABBA, D0</code> "FEEDABBA" के तत्काल हेक्स मान को रजिस्टर D0 में स्थानांतरित करने के लिए। | ||
मेमोरी से ऑपरेंड का उपयोग करने के बजाय, ऑपरेंड का मान निर्देश के भीतर ही होता है। | मेमोरी से ऑपरेंड का उपयोग करने के बजाय, ऑपरेंड का मान निर्देश के भीतर ही होता है। डीईसी वीएएक्स मशीन पर, शाब्दिक ऑपरेंड आकार 6, 8, 16 या 32 बिट लंबा हो सकता है। | ||
एंड्रयू तानेनबाम ने दिखाया कि कार्यक्रम में सभी स्थिरांक का 98% 13 बिट्स में फिट होगा (आरआईएससी | एंड्रयू तानेनबाम ने दिखाया कि कार्यक्रम में सभी स्थिरांक का 98% 13 बिट्स में फिट होगा (आरआईएससी डिजाइन दर्शन देखें) | ||
=== अंतर्निहित === | === अंतर्निहित === | ||
Line 186: | Line 184: | ||
निहित एड्रेसिंग मोड, जिसे निहित एड्रेसिंग मोड (x86 असेंबली भाषा) भी कहा जाता है, स्पष्ट रूप से स्रोत या गंतव्य (या कभी-कभी दोनों) के लिए प्रभावी पता निर्दिष्ट नहीं करता है। | निहित एड्रेसिंग मोड, जिसे निहित एड्रेसिंग मोड (x86 असेंबली भाषा) भी कहा जाता है, स्पष्ट रूप से स्रोत या गंतव्य (या कभी-कभी दोनों) के लिए प्रभावी पता निर्दिष्ट नहीं करता है। | ||
या तो स्रोत (यदि कोई हो) या गंतव्य प्रभावी पता (या कभी-कभी दोनों) | या तो स्रोत (यदि कोई हो) या गंतव्य प्रभावी पता (या कभी-कभी दोनों) ओपकोड द्वारा निहित होता है। | ||
पुराने कंप्यूटरों (1970 के दशक के मध्य तक) में इंप्लाइड एड्रेसिंग काफी सामान्य थी। ऐसे कंप्यूटरों में सामान्यतः केवल एक ही रजिस्टर होता था जिसमें संचयक अंकगणित प्रदर्शन किया जा सकता था। ऐसी संचायक मशीनें लगभग हर निर्देश में उस संचायक को परोक्ष रूप से संदर्भित करती हैं। उदाहरण के लिए, ऑपरेशन <a := b + c; > अनुक्रम का उपयोग करके किया जा सकता है <लोड बी,ग जोड़ें स्टोर ए> -- गंतव्य (संचयक) प्रत्येक "लोड" और "जोड़ें" निर्देश स्रोत (संचयक) प्रत्येक "स्टोर" निर्देश में निहित है। | पुराने कंप्यूटरों (1970 के दशक के मध्य तक) में इंप्लाइड एड्रेसिंग काफी सामान्य थी। ऐसे कंप्यूटरों में सामान्यतः केवल एक ही रजिस्टर होता था जिसमें संचयक अंकगणित प्रदर्शन किया जा सकता था। ऐसी संचायक मशीनें लगभग हर निर्देश में उस संचायक को परोक्ष रूप से संदर्भित करती हैं। उदाहरण के लिए, ऑपरेशन <a:= b + c; > अनुक्रम का उपयोग करके किया जा सकता है <लोड बी,ग जोड़ें स्टोर ए> -- गंतव्य (संचयक) प्रत्येक "लोड" और "जोड़ें" निर्देश स्रोत (संचयक) प्रत्येक "स्टोर" निर्देश में निहित है। | ||
बाद के कंप्यूटरों में सामान्यतः एक से अधिक सामान्य-उद्देश्य रजिस्टर या रैम स्थान होते थे जो अंकगणित के लिए स्रोत या गंतव्य या दोनों हो सकते हैं और इसलिए बाद में कंप्यूटर को अंकगणित के स्रोत और गंतव्य को निर्दिष्ट करने के लिए किसी अन्य एड्रेसिंग मोड की आवश्यकता होती है। | बाद के कंप्यूटरों में सामान्यतः एक से अधिक सामान्य - उद्देश्य रजिस्टर या रैम स्थान होते थे जो अंकगणित के लिए स्रोत या गंतव्य या दोनों हो सकते हैं और इसलिए बाद में कंप्यूटर को अंकगणित के स्रोत और गंतव्य को निर्दिष्ट करने के लिए किसी अन्य एड्रेसिंग मोड की आवश्यकता होती है। | ||
x86 निर्देशों में, कुछ ऑपरेंड या परिणामों में से एक के लिए निहित रजिस्टरों का उपयोग करते हैं (गुणा, विभाजन, सशर्त कूद की गिनती)। | x86 निर्देशों में, कुछ ऑपरेंड या परिणामों में से एक के लिए निहित रजिस्टरों का उपयोग करते हैं (गुणा, विभाजन, सशर्त कूद की गिनती)। | ||
कई कंप्यूटरों (जैसे x86 और | कई कंप्यूटरों (जैसे x86 और एवीआर) में विशेष-उद्देश्य रजिस्टर होता है जिसे स्टैक पॉइंटर कहा जाता है जो स्टैक से डेटा को पुश या पॉप करते समय निहित रूप से बढ़ा हुआ या घटा हुआ होता है, और स्रोत या गंतव्य प्रभावी पता (निहित रूप से) उसमें स्टेक सूचक संग्रहीत पता होता है। | ||
कई 32-बिट कंप्यूटर (जैसे 68000, | कई 32-बिट कंप्यूटर (जैसे 68000, एआरएम, या पावर पीसी) में एक से अधिक रजिस्टर होते हैं जिनका उपयोग स्टैक सूचक के रूप में किया जा सकता है और इसलिए "अप्रत्यक्ष स्वयं वेतन वृद्धि दर्ज करें" एड्रेसिंग मोड का उपयोग यह निर्दिष्ट करने के लिए करें कि इनमें से कौन सा रजिस्टर स्टैक से डेटा को पुश या पॉप करते समय उपयोग किया जाना चाहिए। | ||
कुछ मौजूदा कंप्यूटर वास्तुकला (जैसे | कुछ मौजूदा कंप्यूटर वास्तुकला (जैसे आईबीएम/390 और इंटेल पेंटियम) में पहले के डिजाइनों के साथ पश्चगामी संगतता बनाए रखने के लिए निहित ऑपरेंड के साथ कुछ निर्देश शामिल हैं। | ||
कई कंप्यूटरों पर, निर्देश जो उपयोगकर्ता/ | कई कंप्यूटरों पर, निर्देश जो उपयोगकर्ता/प्रणाली मोड बिट, इंटरप्ट-सक्षम बिट इत्यादि को फ्लिप करते हैं, उन बिट्स को रखने वाले विशेष रजिस्टर को स्पष्ट रूप से निर्दिष्ट करते हैं। यह पोपेक और गोल्डबर्ग वर्चुअलाइजेशन आवश्यकताओं को पूरा करने के लिए उन निर्देशों को फंसाने के लिए आवश्यक हार्डवेयर को सरल बनाता है - ऐसी प्रणाली पर, ट्रैप लॉजिक को किसी भी ऑपरेंड (या अंतिम प्रभावी पते पर) को देखने की आवश्यकता नहीं है, लेकिन केवल ओपकोड पर . | ||
कुछ सीपीयू | कुछ सीपीयू ऐसे डिजाइन किए गए हैं जहां प्रत्येक ऑपरेंड हमेशा प्रत्येक निर्देश में निहित रूप से निर्दिष्ट होता है - शून्य-ऑपरेंड सीपीयू। | ||
== कोड या डेटा के लिए अन्य एड्रेसिंग मोड == | == कोड या डेटा के लिए अन्य एड्रेसिंग मोड == | ||
Line 213: | Line 211: | ||
(प्रभावी पता = निर्देश में दिया गया पता) | (प्रभावी पता = निर्देश में दिया गया पता) | ||
इसके लिए काफी बड़े पते के लिए निर्देश में जगह की आवश्यकता होती है। यह अक्सर सीआईएससी | इसके लिए काफी बड़े पते के लिए निर्देश में जगह की आवश्यकता होती है। यह अक्सर सीआईएससी मशीनों पर उपलब्ध होता है जिसमें चर-लंबाई के निर्देश होते हैं, जैसे कि x86। | ||
कुछ आरआईएससी | कुछ आरआईएससी मशीनों में एक विशेष ''लोड अपर लिटरल'' निर्देश होता है जो एक रजिस्टर के शीर्ष भाग में 16- या 20-बिट स्थिरांक रखता है। इसके बाद बेस-प्लस-ऑफ़सेट एड्रेसिंग मोड में बेस रजिस्टर के रूप में इस्तेमाल किया जा सकता है जो कम-ऑर्डर 16 या 12 बिट्स की आपूर्ति करता है। संयोजन पूर्ण 32-बिट पते की अनुमति देता है। | ||
=== अनुक्रमित निरपेक्ष === | === अनुक्रमित निरपेक्ष === | ||
Line 224: | Line 222: | ||
(प्रभावी पता = पता + निर्दिष्ट सूचकांक रजिस्टर की सामग्री) | (प्रभावी पता = पता + निर्दिष्ट सूचकांक रजिस्टर की सामग्री) | ||
इसके लिए काफी बड़े पते के लिए निर्देश में जगह की भी आवश्यकता होती है। पता | इसके लिए काफी बड़े पते के लिए निर्देश में जगह की भी आवश्यकता होती है। पता सरणी या वेक्टर की शुरुआत हो सकता है, और सूचकांक आवश्यक विशेष सरणी तत्व का चयन कर सकता है। प्रत्येक सरणी तत्व के आकार की अनुमति देने के लिए प्रोसेसर इंडेक्स रजिस्टर को स्केल कर सकता है। | ||
ध्यान दें कि यह कमोबेश बेस-प्लस-ऑफ़सेट एड्रेसिंग मोड जैसा ही है, सिवाय इसके कि इस मामले में ऑफ़सेट किसी भी मेमोरी लोकेशन को संबोधित करने के लिए पर्याप्त है। | ध्यान दें कि यह कमोबेश बेस-प्लस-ऑफ़सेट एड्रेसिंग मोड जैसा ही है, सिवाय इसके कि इस मामले में ऑफ़सेट किसी भी मेमोरी लोकेशन को संबोधित करने के लिए पर्याप्त है। | ||
''उदाहरण'' 1 सबरूटीन के भीतर, प्रोग्रामर स्ट्रिंग को स्थानीय स्थिरांक या स्थिर चर के रूप में परिभाषित कर सकता है। स्ट्रिंग का पता निर्देश में शाब्दिक पते में संग्रहीत किया जाता है। ऑफ़सेट - लूप के इस पुनरावृत्ति पर स्ट्रिंग के किस वर्ण का उपयोग करना है - इंडेक्स रजिस्टर में संग्रहीत किया जाता है। | ''उदाहरण'' 1 सबरूटीन के भीतर, प्रोग्रामर स्ट्रिंग को स्थानीय स्थिरांक या स्थिर चर के रूप में परिभाषित कर सकता है। स्ट्रिंग का पता निर्देश में शाब्दिक पते में संग्रहीत किया जाता है। ऑफ़सेट-लूप के इस पुनरावृत्ति पर स्ट्रिंग के किस वर्ण का उपयोग करना है-इंडेक्स रजिस्टर में संग्रहीत किया जाता है। | ||
''उदाहरण'' 2 प्रोग्रामर कई बड़े सरणियों को ग्लोबल्स या फील्ड (कंप्यूटर साइंस) के रूप में परिभाषित कर सकता है। सरणी की शुरुआत को संदर्भित करने वाले निर्देश के शाब्दिक पते (शायद प्रोग्राम-लोड समय पर स्थानांतरित लोडर द्वारा संशोधित) में संग्रहीत किया जाता है। ऑफ़सेट - लूप के इस पुनरावृत्ति पर उपयोग करने के लिए सरणी से कौन सा आइटम - इंडेक्स रजिस्टर में संग्रहीत किया जाता है। अक्सर लूप में निर्देश लूप काउंटर और कई सरणियों के ऑफसेट के लिए ही रजिस्टर का पुन: उपयोग करते हैं। | ''उदाहरण'' 2 प्रोग्रामर कई बड़े सरणियों को ग्लोबल्स या फील्ड (कंप्यूटर साइंस) के रूप में परिभाषित कर सकता है। सरणी की शुरुआत को संदर्भित करने वाले निर्देश के शाब्दिक पते (शायद प्रोग्राम-लोड समय पर स्थानांतरित लोडर द्वारा संशोधित) में संग्रहीत किया जाता है। ऑफ़सेट-लूप के इस पुनरावृत्ति पर उपयोग करने के लिए सरणी से कौन सा आइटम-इंडेक्स रजिस्टर में संग्रहीत किया जाता है। अक्सर लूप में निर्देश लूप काउंटर और कई सरणियों के ऑफसेट के लिए ही रजिस्टर का पुन: उपयोग करते हैं। | ||
=== बेस प्लस इंडेक्स === | === बेस प्लस इंडेक्स === | ||
Line 257: | Line 255: | ||
(प्रभावी पता = निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की स्केल की गई सामग्री) | (प्रभावी पता = निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की स्केल की गई सामग्री) | ||
आधार रजिस्टर में सरणी या वेक्टर डेटा संरचना का प्रारंभ पता हो सकता है, और सूचकांक में आवश्यक एक विशेष सरणी तत्व की ऑफसेट हो सकती है। | |||
यह एड्रेसिंग मोड प्रत्येक सरणी तत्व के आकार की अनुमति देने के लिए इंडेक्स रजिस्टर में मान को गतिशील रूप से मापता है, उदा। यदि सरणी तत्व डबल परिशुद्धता फ़्लोटिंग-पॉइंट संख्याएं हैं जो प्रत्येक 8 बाइट्स पर कब्जा कर रही हैं तो प्रभावी पता गणना में उपयोग किए जाने से पहले इंडेक्स रजिस्टर में मान 8 से गुणा किया जाता है। स्केल फैक्टर | यह एड्रेसिंग मोड प्रत्येक सरणी तत्व के आकार की अनुमति देने के लिए इंडेक्स रजिस्टर में मान को गतिशील रूप से मापता है, उदा। यदि सरणी तत्व डबल परिशुद्धता फ़्लोटिंग-पॉइंट संख्याएं हैं जो प्रत्येक 8 बाइट्स पर कब्जा कर रही हैं तो प्रभावी पता गणना में उपयोग किए जाने से पहले इंडेक्स रजिस्टर में मान 8 से गुणा किया जाता है। स्केल फैक्टर सामान्य रूप से दो की शक्ति होने तक ही सीमित होता है, ताकि गुणन के बजाय स्थानांतरण का उपयोग किया जा सके। | ||
=== अप्रत्यक्ष पंजीकृत करें === | === अप्रत्यक्ष पंजीकृत करें === | ||
Line 268: | Line 266: | ||
(प्रभावी पता = आधार रजिस्टर की सामग्री) | (प्रभावी पता = आधार रजिस्टर की सामग्री) | ||
कुछ कंप्यूटरों में यह | कुछ कंप्यूटरों में यह विशिष्ट एड्रेसिंग मोड के रूप में होता है। कई कंप्यूटर 0 के ऑफ़सेट मान के साथ बस बेस प्लस ऑफ़सेट का उपयोग करते हैं। उदाहरण के लिए, (A7) | ||
=== ऑटोइनक्रिकमेंट अप्रत्यक्ष पंजीकृत करें === | === ऑटोइनक्रिकमेंट अप्रत्यक्ष पंजीकृत करें === | ||
Line 277: | Line 275: | ||
(प्रभावी पता = आधार रजिस्टर की सामग्री) | (प्रभावी पता = आधार रजिस्टर की सामग्री) | ||
प्रभावी पता निर्धारित करने के बाद, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से बढ़ जाता है जिसे एक्सेस किया जाना है। उदाहरण के लिए, (A7)+ एड्रेस रजिस्टर A7 की सामग्री को एक्सेस करेगा, फिर A7 के एड्रेस पॉइंटर को 1 ( | प्रभावी पता निर्धारित करने के बाद, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से बढ़ जाता है जिसे एक्सेस किया जाना है। उदाहरण के लिए, (A7)+ एड्रेस रजिस्टर A7 की सामग्री को एक्सेस करेगा, फिर A7 के एड्रेस पॉइंटर को 1 (सामान्यत: 1 शब्द) से बढ़ा देगा। एक लूप के भीतर, इस एड्रेसिंग मोड का उपयोग किसी सरणी या वेक्टर के सभी तत्वों के माध्यम से कदम उठाने के लिए किया जा सकता है। | ||
उच्च-स्तरीय भाषाओं में अक्सर यह एक अच्छा विचार माना जाता है कि जो कार्य परिणाम लौटाते हैं उनका कोई | उच्च-स्तरीय भाषाओं में अक्सर यह एक अच्छा विचार माना जाता है कि जो कार्य परिणाम लौटाते हैं उनका कोई दुष्प्रभाव नहीं होना चाहिए (दुष्प्रभावों की कमी प्रोग्राम को समझने और सत्यापन को बहुत आसान बनाती है)। इस एड्रेसिंग मोड का एक दुष्प्रभाव है कि आधार रजिस्टर बदल दिया जाता है। यदि बाद की मेमोरी एक्सेस एक त्रुटि का कारण बनती है (उदाहरण के लिए पृष्ठ दोष, बस त्रुटि, पता त्रुटि) जिससे रुकावट आती है, तो निर्देश को फिर से शुरू करना अधिक समस्याग्रस्त हो जाता है क्योंकि एक या अधिक रजिस्टरों को उस स्थिति में वापस सेट करने की आवश्यकता हो सकती है जहां वे पहले थे। निर्देश मूल रूप से शुरू हुआ। | ||
कम से कम दो कंप्यूटर | कम से कम दो कंप्यूटर वस्तुकला रहे हैं जिनमें इस एड्रेसिंग मोड का उपयोग करने पर इंटरप्ट से पुनर्प्राप्ति के संबंध में कार्यान्वयन की समस्याएं हैं: | ||
* मोटोरोला 68000 (पता 24 बिट्स में दर्शाया गया है)। एक या दो | * मोटोरोला 68000 (पता 24 बिट्स में दर्शाया गया है)। एक या दो स्वयं वेतन वृद्धि रजिस्टर ऑपरेंड हो सकते हैं। 68010+ ने बस त्रुटि या पता त्रुटियों पर प्रोसेसर की आंतरिक स्थिति को सहेजकर समस्या का समाधान किया। | ||
* | *डीईसी वीएएक्स 6 स्वयं वेतन वृद्धि रजिस्टर ऑपरेंड तक हो सकते हैं। प्रत्येक ऑपरेंड एक्सेस दो पेज फॉल्ट का कारण बन सकता है (यदि ऑपरेंड एक पेज बाउंड्री को स्ट्रैडल करने के लिए होता है)। बेशक निर्देश 50 बाइट से अधिक लंबा हो सकता है और पृष्ठ सीमा को भी फैला सकता है। | ||
=== ऑटोडेक्रिमेंट अप्रत्यक्ष पंजीकृत करें === | === ऑटोडेक्रिमेंट अप्रत्यक्ष पंजीकृत करें === | ||
Line 294: | Line 292: | ||
प्रभावी पता निर्धारित करने से पहले, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से घटाया जाता है जिसे एक्सेस किया जाना है। | प्रभावी पता निर्धारित करने से पहले, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से घटाया जाता है जिसे एक्सेस किया जाना है। | ||
लूप के भीतर, इस एड्रेसिंग मोड का उपयोग किसी सरणी या वेक्टर के सभी तत्वों के माध्यम से पीछे की ओर जाने के लिए किया जा सकता है। पिछले एड्रेसिंग मोड ( | लूप के भीतर, इस एड्रेसिंग मोड का उपयोग किसी सरणी या वेक्टर के सभी तत्वों के माध्यम से पीछे की ओर जाने के लिए किया जा सकता है। पिछले एड्रेसिंग मोड (स्वयं वेतन वृद्धि) के संयोजन के साथ इस मोड का उपयोग करके स्टैक को लागू किया जा सकता है। | ||
# | #अप्रत्यक्ष रूप से स्वत: वेतन वृद्धि के अंतर्गत दुष्प्रभावों की चर्चा देखें। | ||
=== स्मृति अप्रत्यक्ष === | === स्मृति अप्रत्यक्ष === | ||
इस आलेख में उल्लिखित किसी भी एड्रेसिंग मोड में अप्रत्यक्ष एड्रेसिंग को इंगित करने के लिए | इस आलेख में उल्लिखित किसी भी एड्रेसिंग मोड में अप्रत्यक्ष एड्रेसिंग को इंगित करने के लिए अतिरिक्त बिट हो सकता है, यानी कुछ मोड का उपयोग करके गणना की गई पता वास्तव में एक स्थान का पता है (सामान्यत: पूर्ण शब्द) जिसमें वास्तविक प्रभावी पता होता है . | ||
कोड या डेटा के लिए | कोड या डेटा के लिए अप्रत्यक्ष संबोधन का इस्तेमाल किया जा सकता है। यह संकेत, संदर्भों, या हैंडल (कंप्यूटिंग) के कार्यान्वयन को बहुत आसान बना सकता है, और उन सबरूटीन्स को कॉल करना भी आसान बना सकता है जो अन्यथा संबोधित नहीं हैं। अप्रत्यक्ष संबोधन में अतिरिक्त मेमोरी एक्सेस शामिल होने के कारण प्रदर्शन दंड लगती है। | ||
कुछ शुरुआती मिनीकंप्यूटर (जैसे | कुछ शुरुआती मिनीकंप्यूटर (जैसे डीईसी पीडीपी-8, डेटा जनरल नोवा) में केवल कुछ ही रजिस्टर थे और केवल सीमित डायरेक्ट एड्रेसिंग रेंज (8 बिट) थी। इसलिए मेमोरी का उपयोग अप्रत्यक्ष संबोधन किसी भी महत्वपूर्ण मात्रा में मेमोरी को संदर्भित करने का लगभग एकमात्र तरीका था। | ||
===पीसी- | ===पीसी-पूर्ण === | ||
+----------+----------+--------------+---------------------+ | +----------+----------+--------------+---------------------+ | ||
| लोड | reg1 | आधार = पीसी | ऑफसेट | | | लोड | reg1 | आधार = पीसी | ऑफसेट | | ||
Line 313: | Line 311: | ||
(प्रभावी पता = पीसी + ऑफसेट) | (प्रभावी पता = पीसी + ऑफसेट) | ||
पीसी- | पीसी - पूर्ण एड्रेसिंग मोड का उपयोग वर्तमान निर्देश से थोड़ी दूरी पर प्रोग्राम मेमोरी में संग्रहीत मूल्य के साथ रजिस्टर लोड करने के लिए किया जा सकता है। इसे बेस प्लस ऑफ़सेट एड्रेसिंग मोड के एक विशेष मामले के रूप में देखा जा सकता है, जो प्रोग्राम काउंटर (पीसी) को बेस रजिस्टर के रूप में चुनता है। | ||
कुछ सीपीयू ऐसे हैं जो पीसी- | कुछ सीपीयू ऐसे हैं जो पीसी- पूर्ण डेटा संदर्भों का समर्थन करते हैं। ऐसे सीपीयू में शामिल हैं | ||
एमओएस 6502 और इसके डेरिवेटिव ने सभी शाखाओं | एमओएस 6502 और इसके डेरिवेटिव ने सभी शाखाओं के लिए पूर्ण पते का इस्तेमाल किया। केवल इन निर्देशों ने इस मोड का इस्तेमाल किया, जंप ने कई अन्य एड्रेसिंग मोड का इस्तेमाल किया। | ||
x86-64 | x86-64 वास्तुकला और 64-बिट एआरएमv8-A वास्तुकला<ref>{{cite web|url=https://quequero.org/2014/04/introduction-to-arm-architecture/|title=Introduction to ARMv8 64-bit Architecture|date = 9 April 2014|work = UIC Academy |publisher = quequero.org}}</ref> पीसी - पूर्ण एड्रेसिंग मोड हैं, जिन्हें x86-64 में "RIP-पूर्ण" और एआरएमv8-A में "शाब्दिक" कहा जाता है। मोटोरोला 6809 पीसी - पूर्ण एड्रेसिंग मोड का भी समर्थन करता है। | ||
पीडीपी -11 वास्तुकला, वीएएक्स वास्तुकला और 32-बिट एआरएम वास्तुकला पीसी को रजिस्टर फाइल में रखते हुए पीसी-सापेक्ष एड्रेसिंग का समर्थन करते हैं। | |||
आईबीएमz/वास्तुकला में विशिष्ट निर्देश शामिल हैं, उदाहरण के लिए, लोड रिलेटिव लॉन्ग, पीसी - पूर्ण एड्रेसिंग के साथ यदि सामान्य-निर्देश-एक्सटेंशन सुविधा सक्रिय है। | |||
जब इस एड्रेसिंग मोड का उपयोग किया जाता है, तो संकलक | जब इस एड्रेसिंग मोड का उपयोग किया जाता है, तो संकलक सामान्यत: उन स्थिरांक को निर्देशों के रूप में गलती से निष्पादित करने से रोकने के लिए, सबरूटीन के तुरंत पहले या तुरंत बाद शाब्दिक पूल में स्थिरांक रखता है। | ||
यह एड्रेसिंग मोड, जो हमेशा मेमोरी से डेटा प्राप्त करता है या डेटा को मेमोरी में स्टोर करता है और फिर क्रमिक रूप से अगले निर्देश को निष्पादित करने के लिए गिरता है (डेटा को प्रभावी पता इंगित करता है), पीसी- | यह एड्रेसिंग मोड, जो हमेशा मेमोरी से डेटा प्राप्त करता है या डेटा को मेमोरी में स्टोर करता है और फिर क्रमिक रूप से अगले निर्देश को निष्पादित करने के लिए गिरता है (डेटा को प्रभावी पता इंगित करता है), "पीसी - पूर्ण शाखा" के साथ भ्रमित नहीं होना चाहिए जो डेटा प्राप्त नहीं करता है या मेमोरी में डेटा स्टोर करें, लेकिन इसके बजाय दिए गए ऑफ़सेट पर किसी अन्य निर्देश की शाखाएं (प्रभावी पता निष्पादन योग्य निर्देश को इंगित करता है)। | ||
==अप्रचलित एड्रेसिंग मोड== | ==अप्रचलित एड्रेसिंग मोड== | ||
यहां सूचीबद्ध एड्रेसिंग मोड का उपयोग 1950-1980 की अवधि में किया गया था, लेकिन अब अधिकांश वर्तमान कंप्यूटरों पर उपलब्ध नहीं हैं। | यहां सूचीबद्ध एड्रेसिंग मोड का उपयोग 1950-1980 की अवधि में किया गया था, लेकिन अब अधिकांश वर्तमान कंप्यूटरों पर उपलब्ध नहीं हैं। यह सूची किसी भी तरह से पूर्ण नहीं है, समय-समय पर कई अन्य दिलचस्प और अजीबोगरीब एड्रेसिंग मोड का इस्तेमाल किया गया है, उदा निरपेक्ष-ऋण-तार्किक-या दो या तीन सूचकांक रजिस्टर में से।<ref>{{cite book|url=http://bitsavers.org/pdf/ibm/704/24-6661-2_704_Manual_1955.pdf|title=704 Electronic Data-Processing Machine Manual of Operation|pages=10–11|publisher=[[IBM]]|year=1955}}</ref><ref>{{cite book|url=http://bitsavers.org/pdf/ibm/7090/22-6528-4_7090Manual.pdf|title=Reference Manual IBM 7090 Data Processing System|pages=9–10|publisher=IBM|year=1962}}</ref> | ||
यह सूची किसी भी तरह से पूर्ण नहीं है | |||
=== | === बहु-स्तरीय स्मृति अप्रत्यक्ष === | ||
यदि शब्द का आकार पते से बड़ा है, तो | यदि शब्द का आकार पते से बड़ा है, तो मेमोरी-अप्रत्यक्ष संबोधन के लिए संदर्भित शब्द में अन्य मेमोरी अप्रत्यक्ष चक्र को इंगित करने के लिए अप्रत्यक्ष ध्वज सेट हो सकता है। इस ध्वज को अप्रत्यक्ष बिट के रूप में संदर्भित किया जाता है, और परिणामी सूचक टैग किया हुआ सूचक होता है, अप्रत्यक्ष बिट टैगिंग चाहे वह प्रत्यक्ष सूचक हो या अप्रत्यक्ष सूचक। यह सुनिश्चित करने के लिए देखभाल की आवश्यकता है कि अप्रत्यक्ष पतों की श्रृंखला स्वयं को संदर्भित नहीं करती है, यदि ऐसा होता है, तो किसी पते को हल करने का प्रयास करते समय अनंत लूप प्राप्त कर सकता है। | ||
आईबीएम 1620, डेटा जनरल नोवा, एचपी 2100 श्रृंखला, और | आईबीएम 1620, डेटा जनरल नोवा, एचपी 2100 श्रृंखला, और एनएआर2 प्रत्येक में ऐसी बहु-स्तरीय मेमोरी अप्रत्यक्ष होती है, और इस तरह के अनंत पता गणना लूप में प्रवेश कर सकती है। नोवा पर मेमोरी इनडायरेक्ट एड्रेसिंग मोड ने थ्रेडेड कोड के आविष्कार को प्रभावित किया। | ||
नोवा पर मेमोरी इनडायरेक्ट एड्रेसिंग मोड ने थ्रेडेड कोड के आविष्कार को प्रभावित | |||
18-बिट कंप्यूटिंग के साथ डीईसी पीडीपी -10 कंप्यूटर | 18-बिट कंप्यूटिंग के साथ डीईसी पीडीपी -10 कंप्यूटर और 36-बिट शब्दों ने प्रत्येक चरण में इंडेक्स रजिस्टर का उपयोग करने की संभावना के साथ बहु-स्तरीय अप्रत्यक्ष पते की अनुमति दी। प्रत्येक एड्रेस वर्ड को डिकोड करने से पहले प्रायोरिटी इंटरप्ट प्रणाली से पूछताछ की गई।<ref>{{cite book |title=DEC-10-HMAA-D: PDP-10 KA10 Central Processor Maintenance Manual |date=December 1968 |publisher=[[Digital Equipment Corporation]] |location=[[Maynard, Massachusetts]] |page=2-11 |edition=1st Printing |url=http://bitsavers.org/pdf/dec/pdp10/KA10/DEC-10-HMAA_D_KA10_Maint_Dec68.pdf#page=23 |access-date=15 May 2021 |format=PDF |quote=Figure 2-9: Effective Address Calculation: test "PI RQ ?"}}</ref> इसलिए, अप्रत्यक्ष एड्रेस लूप डिवाइस सर्विस रूटीन के निष्पादन को नहीं रोकेगा, जिसमें कोई भी प्रीमेशन प्रीमेप्टिव मल्टीटास्किंग शेड्यूलर का टाइम-स्लाइस एक्सपायरी हैंडलर शामिल है। लूपिंग निर्देश को किसी अन्य कंप्यूट-बाउंड जॉब की तरह माना जाएगा। | ||
=== मेमोरी-मैप्ड रजिस्टर === | === मेमोरी-मैप्ड रजिस्टर === | ||
Line 375: | Line 370: | ||
:9995 Program register{{efn|Only valid from console|name=console}} | :9995 Program register{{efn|Only valid from console|name=console}} | ||
:9999 Instruction counter{{efn|name=console}} | :9999 Instruction counter{{efn|name=console}} | ||
}}, प्रवृत्ति केवल निचले सिरे पर रजिस्टर पते का उपयोग करने और | }}, प्रवृत्ति केवल निचले सिरे पर रजिस्टर पते का उपयोग करने और मेमोरी के केवल पहले 8 या 16 शब्दों (जैसे आईसीटी 1900 श्रृंखला, डीईसी पीडीपी -10) का उपयोग करने के लिए कर रही है। इसका मतलब यह था कि निर्देश को पंजीकृत करने के लिए अलग ऐड रजिस्टर की कोई आवश्यकता नहीं थी - कोई भी केवल निर्देश को पंजीकृत करने के लिए ऐड मेमोरी का उपयोग कर सकता था। | ||
पीडीपी -10 के शुरुआती मॉडल के मामले में, जिसमें कोई कैश मेमोरी नहीं थी, मेमोरी के पहले कुछ शब्दों में लोड किया गया एक तंग आंतरिक लूप (जहां स्थापित होने पर तेज़ रजिस्टरों को संबोधित किया जा सकता था) इससे कहीं ज्यादा तेजी से चलता था | पीडीपी -10 के शुरुआती मॉडल के मामले में, जिसमें कोई कैश मेमोरी नहीं थी, मेमोरी के पहले कुछ शब्दों में लोड किया गया एक तंग आंतरिक लूप (जहां स्थापित होने पर तेज़ रजिस्टरों को संबोधित किया जा सकता था) चुंबकीय कोर मेमोरी इससे कहीं ज्यादा तेजी से चलता था | ||
डीईसी पीडीपी -11 श्रृंखला के बाद के मॉडल ने इनपुट/आउटपुट क्षेत्र में पतों पर रजिस्टरों को मैप किया, लेकिन यह मुख्य रूप से दूरस्थ निदान की अनुमति देने के लिए था। भ्रामक रूप से, 16-बिट रजिस्टरों को लगातार 8-बिट बाइट पते पर मैप किया गया था। | |||
=== मेमोरी इनडायरेक्ट और ऑटोइनक्रिकमेंट === | === मेमोरी इनडायरेक्ट और ऑटोइनक्रिकमेंट === | ||
डीईसी पीडीपी-8 मिनीकंप्यूटर में आठ विशेष स्थान थे (8 से 15 के पते पर)। जब मेमोरी अप्रत्यक्ष पतों के माध्यम से प्रवेश किया जाता है, तो ये स्थान उपयोग से पहले स्वचालित रूप से बढ़ जाएंगे।<ref>{{ | |||
Citation | Citation | ||
| last1 = Jones | first1 = Douglas | | last1 = Jones | first1 = Douglas | ||
Line 396: | Line 391: | ||
| url = http://users.rcn.com/crfriend/museum/doco/DG/Nova/ | | url = http://users.rcn.com/crfriend/museum/doco/DG/Nova/ | ||
| access-date = 1 July 2013 | | access-date = 1 July 2013 | ||
}}</ref> जब मेमोरी | }}</ref> जब मेमोरी अप्रत्यक्ष पतों के माध्यम से प्रवेश किया जाता है, तो 16 से 23 स्वचालित रूप से उपयोग से पहले वृद्धि होगी, और 24 से 31 स्वचालित रूप से उपयोग से पहले घट जाएगी। | ||
=== शून्य पृष्ठ === | === शून्य पृष्ठ === | ||
डाटा जनरल नोवा, मोटोरोला 6800 परिवार, और एमओएस टेक्नोलॉजी 6502 प्रोसेसर के परिवार में बहुत कम आंतरिक रजिस्टर थे। आंतरिक रजिस्टरों के विपरीत अंकगणित और तार्किक निर्देश ज्यादातर | डाटा जनरल नोवा, मोटोरोला 6800 परिवार, और एमओएस टेक्नोलॉजी 6502 प्रोसेसर के परिवार में बहुत कम आंतरिक रजिस्टर थे। आंतरिक रजिस्टरों के विपरीत अंकगणित और तार्किक निर्देश ज्यादातर मेमोरी में मूल्यों के खिलाफ किए गए थे। फलस्वरूप, कई निर्देशों को मेमोरी के लिए दो-बाइट (16-बिट) स्थान की आवश्यकता होती है। यह देखते हुए कि इन प्रोसेसर पर ऑपकोड केवल एक बाइट (8 बिट) लंबाई के थे, मेमोरी एड्रेस कोड आकार का एक महत्वपूर्ण हिस्सा बना सकते हैं। | ||
इन प्रोसेसर के डिजाइनरों में | इन प्रोसेसर के डिजाइनरों में आंशिक उपाय शामिल था जिसे "शून्य पृष्ठ" पतों के रूप में जाना जाता है। मेमोरी के शुरुआती 256 बाइट्स ($0000 - $00FF a.k.a., पेज "0") को एक - बाइट पूर्ण या अनुक्रमित मेमोरी एड्रेस का उपयोग करके प्रवेश किया जा सकता है। इसने निर्देश निष्पादन समय को एक घड़ी चक्र और निर्देश लंबाई को एक बाइट से कम कर दिया। इस क्षेत्र में अक्सर उपयोग किए जाने वाले डेटा को संग्रहीत करके, कार्यक्रमों को छोटा और तेज़ बनाया जा सकता है। | ||
फलस्वरूप, शून्य पृष्ठ का उपयोग रजिस्टर फ़ाइल के समान ही किया गया था। हालांकि, कई प्रणालियों पर, इसके परिणामस्वरूप ऑपरेटिंग प्रणाली और उपयोगकर्ता प्रोग्राम द्वारा शून्य पृष्ठ मेमोरी क्षेत्र का उच्च उपयोग किया गया, मुक्त स्थान सीमित होने के कारण उपयोग को सीमित कर दिया था। | |||
=== सीधा पृष्ठ === | === सीधा पृष्ठ === | ||
डब्ल्यूडीसी 65816, सीएसजी 65सीई02, और मोटोरोला 6809 सहित कई लेट मॉडल 8-बिट प्रोसेसर में शून्य पेज एड्रेस मोड को बढ़ाया गया था। नया मोड, जिसे "डायरेक्ट पेज" एड्रेसिंग के रूप में जाना जाता है, ने 256-बाइट शून्य को स्थानांतरित करने की क्षमता को जोड़ा। मेमोरी की शुरुआत से पेज मेमोरी विंडो (ऑफ़सेट पता $0000) मेमोरी के पहले 64 KB के भीतर एक नए स्थान पर। | |||
सीएसजी 65सीई02 ने नए बेस पेज (बी) रजिस्टर में 8-बिट ऑफ़सेट मान को स्टोर करके पहले 64 KB मेमोरी के भीतर किसी भी 256-बाइट सीमा में सीधे पृष्ठ को स्थानांतरित करने की अनुमति दी। मोटोरोला 6809 अपने डायरेक्ट पेज (डीपी) रजिस्टर के साथ भी ऐसा ही कर सकता है। डब्ल्यूडीसी 65816 एक कदम और आगे बढ़ गया और नए डायरेक्ट (डी) रजिस्टर में 16-बिट ऑफ़सेट मान को स्टोर करके मेमोरी के पहले 64 KB के भीतर डायरेक्ट पेज को किसी भी स्थान पर ले जाने की अनुमति दी। | |||
परिणामस्वरूप, अधिक संख्या में प्रोग्राम उन्नत प्रत्यक्ष पृष्ठ एड्रेसिंग मोड बनाम लीगेसी प्रोसेसर का उपयोग करने में सक्षम थे जिसमें केवल शून्य पृष्ठ एड्रेसिंग मोड शामिल था। | परिणामस्वरूप, अधिक संख्या में प्रोग्राम उन्नत प्रत्यक्ष पृष्ठ एड्रेसिंग मोड बनाम लीगेसी प्रोसेसर का उपयोग करने में सक्षम थे जिसमें केवल शून्य पृष्ठ एड्रेसिंग मोड शामिल था। | ||
=== सीमा जांच के साथ स्केल इंडेक्स === | === सीमा जांच के साथ स्केल इंडेक्स === | ||
यह स्केल किए गए | यह स्केल किए गए सूची पतों के समान है, सिवाय इसके कि निर्देश में दो अतिरिक्त ऑपरेंड (सामान्यत: स्थिरांक) होते हैं, और हार्डवेयर जांचता है कि सूची वैल्यू इन सीमाओं के बीच है। | ||
एक अन्य भिन्नता वेक्टर डिस्क्रिप्टर का उपयोग सीमा को बनाए रखने के लिए करती है | एक अन्य भिन्नता वेक्टर डिस्क्रिप्टर का उपयोग सीमा को बनाए रखने के लिए करती है इससे गतिशील रूप से आवंटित सरणी को कार्यान्वित करना आसान हो जाता है और अभी भी पूर्ण सीमा जांच होती है। | ||
=== शब्द के भीतर बिट फ़ील्ड के लिए अप्रत्यक्ष === | === शब्द के भीतर बिट फ़ील्ड के लिए अप्रत्यक्ष === | ||
कुछ कंप्यूटरों में शब्दों के भीतर | कुछ कंप्यूटरों में शब्दों के भीतर उपक्षेत्रों के लिए विशेष अप्रत्यक्ष एड्रेसिंग मोड थे। | ||
जीई/हनीवेल-600 श्रृंखला वर्ण अप्रत्यक्ष शब्द को संबोधित करते हुए इसके 36-बिट शब्द के भीतर या तो 6-बिट या 9-बिट वर्ण फ़ील्ड निर्दिष्ट करता है। | |||
डीईसी पीडीपी -10, 36-बिट में भी विशेष निर्देश थे, जो | डीईसी पीडीपी -10, 36-बिट में भी विशेष निर्देश थे, जो मेमोरी को 1 बिट से 36 बिट तक किसी भी आकार के निश्चित आकार के बिट फ़ील्ड या बाइट्स के अनुक्रम के रूप में माना जा सकता था। मेमोरी में एक-शब्द अनुक्रम डिस्क्रिप्टर, जिसे "बाइट सूचक" कहा जाता है, अनुक्रम के भीतर वर्तमान शब्द पता, एक शब्द के भीतर बिट स्थिति और प्रत्येक बाइट का आकार रखता है। | ||
इस | इस वर्णनकर्ता के माध्यम से बाइट्स को लोड और स्टोर करने के लिए निर्देश मौजूद थे, और वर्णनकर्ता को अगले बाइट पर इंगित करने के लिए बढ़ाने के लिए (बाइट्स शब्द सीमाओं में विभाजित नहीं थे)। अधिकांश डीईसी सॉफ़्टवेयर ने प्रति शब्द पांच 7-बिट बाइट्स (सादे एएससीआईआई वर्ण) का उपयोग किया, जिसमें एक बिट प्रति शब्द अप्रयुक्त था। सी (प्रोग्रामिंग भाषा) के कार्यान्वयन को प्रति शब्द चार 9-बिट बाइट्स का उपयोग करना पड़ा, क्योंकि सी में 'मॉलोक' फ़ंक्शन मानता है कि एक इंट का आकार चार के आकार का कुछ गुणक है<ref>[http://www.codingunit.com/c-reference-stdlib-h-function-malloc "C Reference: function malloc()"]</ref> वास्तविक गुणक प्रणाली-निर्भर संकलन-समय ऑपरेटर आकार द्वारा निर्धारित किया जाता है। | ||
=== सूचकांक अगला निर्देश === | === सूचकांक अगला निर्देश === | ||
इलियट 503,<ref name="brooks">Dave Brooks. [https://web.archive.org/web/20141101211113/http://members.iinet.com.au/~daveb/history.html#puzzle "Some Old Computers"].</ref> इलियट 803,<ref name="brooks"/><ref>Bill Purvis. [https://web.archive.org/web/20080616173228/http://bil.members.beeb.net/inst803.html "Some details of the Elliott 803B hardware"]</ref> और अपोलो गाइडेंस कंप्यूटर ने केवल | इलियट 503,<ref name="brooks">Dave Brooks. [https://web.archive.org/web/20141101211113/http://members.iinet.com.au/~daveb/history.html#puzzle "Some Old Computers"].</ref> इलियट 803,<ref name="brooks"/><ref>Bill Purvis. [https://web.archive.org/web/20080616173228/http://bil.members.beeb.net/inst803.html "Some details of the Elliott 803B hardware"]</ref> और अपोलो गाइडेंस कंप्यूटर ने केवल पूर्ण एड्रेसिंग का इस्तेमाल किया, और उसके पास कोई इंडेक्स रजिस्टर नहीं था। इस प्रकार, अप्रत्यक्ष कूद, या रजिस्टरों के माध्यम से कूदना, निर्देश सेट में समर्थित नहीं थे। इसके बजाय, वर्तमान मेमोरी शब्द की सामग्री को अगले निर्देश में जोड़ने का निर्देश दिया जा सकता है। निष्पादित किए जाने वाले अगले निर्देश में कम मान जोड़ना, उदाहरण के लिए,<code>JUMP 0</code> को<code>JUMP 20 में बदल सकता है</code>, इस प्रकार अनुक्रमित जम्प का प्रभाव पैदा करता है। ध्यान दें कि निर्देश ऑन-द-फ्लाई संशोधित किया गया है और मेमोरी में अपरिवर्तित रहता है, यानी यह स्वयं-संशोधित कोड नहीं है। यदि अगले निर्देश में जोड़ा जा रहा मूल्य काफी बड़ा था, तो यह उस निर्देश के साथ-साथ पते के ऑपकोड को भी संशोधित कर सकता था। | ||
इस प्रकार, अप्रत्यक्ष कूद, या रजिस्टरों के माध्यम से कूदना, निर्देश सेट में समर्थित नहीं थे। इसके बजाय, वर्तमान मेमोरी शब्द की सामग्री को अगले निर्देश में जोड़ने का निर्देश दिया जा सकता है। निष्पादित किए जाने वाले अगले निर्देश में | |||
==शब्दावली== | ==शब्दावली== | ||
{{glossary}} | {{glossary}} | ||
{{term| | {{term|अप्रत्यक्ष}}{{defn|एक सूचक या पते के माध्यम से संदर्भित डेटा। | ||
{{term| | }} | ||
{{term| | {{term|तत्काल}}{{defn|निर्देश या आदेश सूची में सीधे एम्बेड किया गया डेटा। | ||
{{term| | }} | ||
{{term| | {{term|अनुक्रमणिका}}{{defn| गतिशील ऑफसेट, जिसे सामान्यत: एक इंडेक्स रजिस्टर में रखा जाता है, संभवतः किसी वस्तु के आकार से बढ़ाया जाता है।}} | ||
{{term| | {{term|प्रतिसंतुलन}}{{defn| पते पर तत्काल मूल्य जोड़ा गया उदाहरण के लिए, सी प्रोग्रामिंग भाषा में संरचना क्षेत्र पहुंच के अनुरूप।}} | ||
{{term| | {{term|सापेक्ष}}{{defn|एक पता दूसरे पते के सापेक्ष बनता है।}} | ||
{{term|पोस्ट वेतन वृद्धि}}{{defn|उपयोग किए गए पिछले डेटा के पते का चरण, सी प्रोग्रामिंग भाषा में *p++ के समान, स्टैक पॉप संचालन के लिए उपयोग किया जाता है। | |||
}} | |||
{{term|पूर्व वेतन वृद्धि | |||
}}{{defn|उपयोग से पहले एक पते की कमी, सी प्रोग्रामिंग भाषा में *--p के समान, स्टैक पुश ऑपरेशंस के लिए उपयोग की जाती है। | |||
}} | |||
{{glossary end}} | {{glossary end}} | ||
Line 444: | Line 443: | ||
==यह भी देखें== | ==यह भी देखें== | ||
*निर्देश सेट वास्तुकला | *निर्देश सेट वास्तुकला | ||
*पता | *बस पता | ||
==टिप्पणियाँ== | ==टिप्पणियाँ== | ||
Line 461: | Line 460: | ||
* [http://www.cs.iastate.edu/~prabhu/Tutorial/PIPELINE/addressMode.html Addressing modes] | * [http://www.cs.iastate.edu/~prabhu/Tutorial/PIPELINE/addressMode.html Addressing modes] | ||
{{CPU technologies}} | {{CPU technologies}} | ||
[[Category: | [[Category:All articles needing additional references]] | ||
[[Category:Articles needing additional references from May 2009]] | |||
[[Category:Articles needing additional references from May 2012]] | |||
[[Category:Articles with invalid date parameter in template]] | |||
[[Category:Articles with short description]] | |||
[[Category:Collapse templates]] | |||
[[Category:Created On 06/09/2022]] | [[Category:Created On 06/09/2022]] | ||
[[Category:Machine Translated Page]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Short description with empty Wikidata description]] | |||
[[Category:Sidebars with styles needing conversion]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates generating microformats]] | |||
[[Category:Templates that are not mobile friendly]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Wikipedia metatemplates]] | |||
[[Category:कंप्यूटर आर्किटेक्चर]] | |||
[[Category:मशीन कोड]] | |||
[[Category:विधानसभा भाषाएं]] |
Latest revision as of 13:01, 19 October 2023
एड्रेसिंग मोड अधिकांश सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) रचना में निर्देश सेट वास्तुकला का एक पहलू है। किसी दिए गए निर्देश सेट वास्तुकला में विभिन्न एड्रेसिंग मोड परिभाषित करते हैं कि उस वास्तुकला में मशीन कोड निर्देश प्रत्येक निर्देश के संकार्य की पहचान कैसे करता है। एड्रेसिंग मोड निर्दिष्ट करता है कि मशीन निर्देश या अन्य जगहों में निहित रजिस्टरों और/या स्थिरांक में रखी गई जानकारी का उपयोग करके ऑपरेंड के प्रभावी मेमोरी एड्रेस की गणना कैसे करें।
कंप्यूटर प्रोग्रामिंग में, एड्रेसिंग मोड मुख्य रूप से उन लोगों के लिए रुचि रखते हैं जो असेंबली लैंग्वेज में लिखते हैं और कंपाइलर लेखकों के लिए संबंधित अवधारणा के लिए ऑर्थोगोनल निर्देश सेट देखें जो किसी भी एड्रेसिंग मोड का उपयोग करने के लिए किसी भी निर्देश की क्षमता से संबंधित है।
चेतावनियां
ध्यान दें कि विभिन्न एड्रेसिंग मोड के नामकरण का कोई सामान्यतः स्वीकृत तरीका नहीं है। विशेष रूप से, अलग-अलग लेखक और कंप्यूटर निर्माता एक ही एड्रेसिंग मोड को अलग-अलग नाम दे सकते हैं, या अलग-अलग एड्रेसिंग मोड को एक ही नाम दे सकते हैं। इसके अलावा, एड्रेसिंग मोड, जिसे दिए गए वास्तुकला में, एकल एड्रेसिंग मोड के रूप में माना जाता है, कार्यक्षमता का प्रतिनिधित्व कर सकता है, जो कि अन्य वास्तुकला में, दो या दो से अधिक एड्रेसिंग मोड द्वारा कवर किया जाता है। उदाहरण के लिए, कुछ जटिल निर्देश सेट कंप्यूटर (सीआईएससी) वास्तुकला, जैसे डिजिटल उपकरण निगम (डीईसी) वीएएक्स, रजिस्टरों और शाब्दिक या तत्काल स्थिरांक को सिर्फ एक अन्य एड्रेसिंग मोड के रूप में मानते हैं। जैसे आईबीएम प्रणाली/360 और उसके उत्तराधिकारी, और सबसे कम निर्देश सेट कंप्यूटर आरआईएससी डिज़ाइन, इस जानकारी को निर्देश के भीतर एन्कोड करते हैं। इस प्रकार, बाद वाली मशीनों में रजिस्टर को दूसरे में कॉपी करने, रजिस्टर में शाब्दिक स्थिरांक की कापी बनाने और मेमोरी स्थान की सामग्री को रजिस्टर में कॉपी करने के लिए तीन अलग-अलग निर्देश कोड होते हैं, जबकि वीएएक्स में केवल "एमओवी" निर्देश होता है।
"एड्रेसिंग मोड" शब्द स्वयं विभिन्न व्याख्याओं के अधीन है या तो "मेमोरी एड्रेस कैलकुलेशन मोड" या "ऑपरेंड एक्सेसिंग मोड"। पहली व्याख्या के तहत, निर्देश जो मेमोरी से नहीं पढ़ते हैं या मेमोरी में नहीं लिखते हैं (जैसे "रजिस्टर में शाब्दिक जोड़") को "एड्रेसिंग मोड" नहीं माना जाता है। दूसरी व्याख्या वीएएक्स जैसी मशीनों के लिए अनुमति देती है जो रजिस्टर या शाब्दिक ऑपरेंड के लिए अनुमति देने के लिए ऑपरेंड मोड बिट्स का उपयोग करती हैं। "लोड प्रभावी पता" जैसे निर्देशों पर केवल पहली व्याख्या लागू होती है, जो ऑपरेंड के पते को लोड करती है, न कि ऑपरेंड को ही।
नीचे सूचीबद्ध एड्रेसिंग मोड को कोड एड्रेसिंग और डेटा एड्रेसिंग में विभाजित किया गया है। अधिकांश कंप्यूटर वास्तुकला इस अंतर को बनाए रखते हैं, लेकिन कुछ वास्तुकला हैं (या रहे हैं) जो किसी भी संदर्भ में सभी एड्रेसिंग मोड का उपयोग करने की अनुमति देते हैं।
नीचे दिखाए गए निर्देश एड्रेसिंग मोड को स्पष्ट रूप से विशुद्ध करने के लिए प्रतिनिधि हैं, और जरूरी नहीं कि किसी विशेष कंप्यूटर द्वारा उपयोग किए जाने वाले स्मृती-विज्ञान को प्रतिबिंबित करें।
एड्रेसिंग मोड की संख्या
कंप्यूटर वास्तुकला हार्डवेयर में प्रदान किए जाने वाले एड्रेसिंग मोड की संख्या के अनुसार बहुत भिन्न होते हैं। जटिल एड्रेसिंग मोड को खत्म करने और केवल एक या कुछ सरल एड्रेसिंग मोड का उपयोग करने के कुछ लाभ हैं, यह साबित हुआ है कि भले ही इसके लिए कुछ अतिरिक्त निर्देशों और शायद अतिरिक्त रजिस्टर की आवश्यकता हो।[1][2] [3][4][5] निर्देश पाइपलाइन किए गए सीपीयू को डिजाइन करना बहुत आसान है यदि केवल उपलब्ध एड्रेसिंग मोड सरल हैं।
अधिकांश आरआईएससी वास्तुकला में केवल पांच सरल एड्रेसिंग मोड होते हैं, जबकि सीआईएससी वास्तुकला जैसे डीईसी वीएएक्स में एक दर्जन से अधिक एड्रेसिंग मोड होते हैं, जिनमें से कुछ काफी जटिल होते हैं। आईबीएम प्रणाली/360 वास्तुकला में केवल तीन एड्रेसिंग मोड थे प्रणाली/390 के लिए कुछ और जोड़े गए हैं।
जब केवल कुछ एड्रेसिंग मोड होते हैं, तो आवश्यक विशेष एड्रेसिंग मोड सामान्यतः निर्देश कोड (जैसे आईबीएम प्रणाली/360 और उत्तराधिकारी, अधिकांश आरआईएससी) के भीतर एन्कोड किया जाता है। लेकिन जब कई एड्रेसिंग मोड होते हैं, तो एड्रेसिंग मोड को निर्दिष्ट करने के लिए एक विशिष्ट फ़ील्ड को अक्सर निर्देश में अलग रखा जाता है। डीईसी वीएएक्स ने लगभग सभी निर्देशों के लिए कई मेमोरी ऑपरेंड की अनुमति दी, और इसलिए उस विशेष ऑपरेंड के लिए एड्रेसिंग मोड को इंगित करने के लिए प्रत्येक ऑपरेंड विनिर्देशक के पहले कुछ बिट्स आरक्षित किए। एड्रेसिंग मोड विनिर्देशक बिट्स को ओपकोड ऑपरेशन बिट्स से अलग रखते हुए ऑर्थोगोनल अनुदेश सेट तैयार करता है।
कई एड्रेसिंग मोड वाले कंप्यूटर पर भी, वास्तविक कार्यक्रमों के माप[6] से संकेत मिलता है कि नीचे सूचीबद्ध सरल एड्रेसिंग मोड में उपयोग किए गए सभी एड्रेसिंग मोड में से कुछ 90% या अधिक के लिए खाते हैं। चूंकि इस तरह के अधिकांश माप संकलक द्वारा उच्च-स्तरीय भाषाओं से उत्पन्न कोड पर आधारित होते हैं, यह कुछ हद तक उपयोग किए जा रहे संकलक की सीमाओं को दर्शाता है।[7][6][8]
उपयोगी दुष्प्रभाव
कुछ निर्देश सेट वास्तुकला, जैसे कि Intel x86 और आईबीएम/360 और इसके उत्तराधिकारी, में लोड प्रभावी पता निर्देश होता है।[9][10] यह प्रभावी ऑपरेंड पते की गणना करता है, लेकिन उस मेमोरी स्थान पर कार्य करने के बजाय, यह उस पते को लोड करता है जिसे रजिस्टर में प्रवेश किया गया होता है। किसी सरणी तत्व के पते को सबरूटीन में पास करते समय यह उपयोगी हो सकता है। यह निर्देश में सामान्य से अधिक गणना करने का चतुर तरीका भी हो सकता है, उदाहरण के लिए एड्रेसिंग मोड "बेस + इंडेक्स + ऑफ़सेट" (नीचे विस्तृत) के साथ इस तरह के निर्देश का उपयोग करने से निर्देश में दो रजिस्टर और स्थिरांक को एक साथ जोड़ने की अनुमति मिलती है।
कोड के लिए सरल एड्रेसिंग मोड
कोड के लिए कुछ सरल एड्रेसिंग मोड नीचे दिखाए गए हैं। नामकरण मंच के आधार पर भिन्न हो सकता है।
निरपेक्ष या प्रत्यक्ष
+-----+----------------------------+ |jump| address | +-----+----------------------------+ (Effective PC address = address)
पूर्ण निर्देश पते के लिए प्रभावी पता पैरामीटर ही है जिसमें कोई संशोधन नहीं है।
पीसी - पूर्ण
+-----+----------------------------+ |jump| offset | jump relative +-----+----------------------------+ (Effective PC address = next instruction address + offset, offset may be negative)
पीसी - पूर्ण निर्देश पते के लिए प्रभावी पता अगले निर्देश के पते में जोड़ा गया ऑफसेट पैरामीटर है। यह ऑफ़सेट सामान्यतः निर्देश से पहले और बाद में कोड के संदर्भ की अनुमति देने के लिए हस्ताक्षरित होता है।[11] यह जम्प के संबंध में विशेष रूप से उपयोगी है, क्योंकि विशिष्ट जम्प पास के निर्देशों के लिए होती है (उच्च-स्तरीय भाषा में सबसे अधिक यदि या जबकि बयान काफी कम होते हैं)। वास्तविक कार्यक्रमों के मापन से पता चलता है कि 8 या 10 बिट ऑफ़सेट कुछ 90% सशर्त जम्प (लगभग ± 128 या ± 512 बाइट्स) के लिए पर्याप्त है।[12]
पीसी - पूर्ण एड्रेसिंग का अन्य लाभ यह है कि कोड स्थिति-स्वतंत्र हो सकता है, अर्थात इसे किसी भी पते को समायोजित करने की आवश्यकता के बिना मेमोरी में कहीं भी लोड किया जा सकता है।
इस एड्रेसिंग मोड के कुछ संस्करण सशर्त हो सकते हैं जो दो रजिस्टरों ("जंप अगर reg1=reg2"), रजिस्टर ("जंप जब तक reg1=0") या कोई रजिस्टर नहीं है, तो स्थिति रजिस्टर में कुछ पहले से निर्धारित बिट का उल्लेख करता है। नीचे सशर्त निष्पादन भी देखें।
अप्रत्यक्ष पंजीकृत करें
+----------+-----+ |jump Via| reg | +----------+-----+ (Effective PC address = contents of register 'reg)
रजिस्टर अप्रत्यक्ष निर्देश के लिए प्रभावी पता निर्दिष्ट रजिस्टर में पता है। उदाहरण के लिए, (A7) पता रजिस्टर A7 की सामग्री तक पहुंचने के लिए।
प्रभाव उस निर्देश पर नियंत्रण स्थानांतरित करना है जिसका पता निर्दिष्ट रजिस्टर में है।
कई आरआईएससी मशीनों, के साथ-साथ सीआईएससी आईबीएम प्रणाली/360 और उत्तराधिकारियों के पास उप-दैनिकि कॉल निर्देश हैं जो रिटर्न स्टेटमेंट को एड्रेस रजिस्टर में रखते हैं रजिस्टर-अप्रत्यक्ष एड्रेसिंग मोड का इस्तेमाल उस सबरूटीन कॉल से वापस आने के लिए किया जाता है।
अनुक्रमिक एड्रेसिंग मोड
अनुक्रमिक निष्पादन
+----------+ | nop | execute the following instruction: +----------+ (Effective PC address = next instruction address)
सीपीयू, अनुक्रमिक निर्देश को निष्पादित करने के बाद, निम्नलिखित निर्देश को तुरंत निष्पादित करता है।
कुछ कंप्यूटरों पर अनुक्रमिक निष्पादन को एड्रेसिंग मोड नहीं माना जाता है।
अधिकांश सीपीयू वास्तुकला पर अधिकांश निर्देश अनुक्रमिक निर्देश हैं। चूंकि अधिकांश निर्देश अनुक्रमिक निर्देश होते हैं, सीपीयू डिजाइनर अक्सर ऐसी विशेषताएं जोड़ते हैं जो इन अनुक्रमिक निर्देशों को तेजी से चलाने के लिए जानबूझकर अन्य निर्देशों - शाखा निर्देशों पर प्रदर्शन का त्याग करते हैं।
सशर्त शाखाएं पीसी 2 को संभावित परिणामों में से एक के साथ लोड करती हैं, स्थिति के आधार पर-अधिकांश सीपीयू वास्तुकला "ली गई" शाखा के लिए कुछ अन्य एड्रेसिंग मोड का उपयोग करते हैं, और "नहीं ली गई" शाखा के लिए अनुक्रमिक निष्पादन।
आधुनिक सीपीयू में कई विशेषताएं - निर्देश प्रीफेच और अधिक जटिल पाइपलाइन (कंप्यूटिंग) आईएनजी, आउट-ऑफ - ऑर्डर निष्पादन, आदि - इस भ्रम को बनाए रखते हैं कि प्रत्येक निर्देश अगले एक के शुरू होने से पहले समाप्त हो जाता है, वही अंतिम परिणाम देता है, भले ही आंतरिक रूप से ऐसा नहीं होता है।
इस तरह के अनुक्रमिक निर्देशों का प्रत्येक "मूल खंड" संदर्भ के अस्थायी और स्थानिक इलाके दोनों को प्रदर्शित करता है।
सीपीयू जो अनुक्रमिक निष्पादन का उपयोग नहीं करते हैं
सीपीयू जो प्रोग्राम काउंटर के साथ अनुक्रमिक निष्पादन का उपयोग नहीं करते हैं वे अत्यंत दुर्लभ हैं। कुछ सीपीयू में, प्रत्येक निर्देश हमेशा अगले निर्देश का पता निर्दिष्ट करता है। ऐसे सीपीयू में निर्देश सूचक होता है जो उस निर्दिष्ट पते को रखता है, यह कोई प्रोग्राम काउंटर नहीं है क्योंकि इसे बढ़ाने का कोई प्रावधान नहीं है। ऐसे सीपीयू में कुछ ड्रम मेमोरी कंप्यूटर शामिल हैं जैसे आईबीएम 650, एसईसीडी मशीन, लिब्रास्कोप एलजीपी-30, और आरटीएक्स 32P।[13]
अन्य कंप्यूटिंग वास्तुकला बहुत आगे जाते हैं, वॉन न्यूमैन वास्तुकला को बायपास करने का प्रयास करते हैं वॉन न्यूमैन टोंटी विभिन्न प्रकार के प्रोग्राम काउंटर का उपयोग करके मशीन वास्तुकला में परिणाम।
सशर्त निष्पादन
कुछ कंप्यूटर वास्तुकला में सशर्त निर्देश होते हैं (जैसे एआरएम वास्तुकला, लेकिन अब 64-बिट मोड में सभी निर्देशों के लिए नहीं) या सशर्त लोड निर्देश (जैसे x86) जो कुछ मामलों में सशर्त शाखाओं को अनावश्यक बना सकते हैं और निर्देश पाइपलाइन को फ्लश करने से बच सकते हैं। स्थिति रजिस्टर सेट करने के लिए 'तुलना' जैसे निर्देश का उपयोग किया जाता है, और बाद के निर्देशों में उस स्थिति कोड पर एक परीक्षण शामिल होता है ताकि यह देखा जा सके कि उनका पालन किया जाता है या अनदेखा किया जाता है।
छोड़ें
+----------+-----+-----+ |स्किपईक्यू| reg1| reg2| अगला निर्देश छोड़ें यदि reg1=reg2 +----------+-----+-----+ (प्रभावी पीसी पता = अगला निर्देश पता + 1)
स्किप एड्रेसिंग को एक निश्चित "+1" ऑफसेट के साथ एक विशेष प्रकार का पीसी - पूर्ण एड्रेसिंग मोड माना जा सकता है। पीसी - पूर्ण एड्रेसिंग की तरह, कुछ सीपीयू में इस एड्रेसिंग मोड के संस्करण होते हैं जो केवल रजिस्टर("स्किप if reg1=0" ) या कोई रजिस्टर नहीं होते हैं, जो स्थिति रजिस्टर में कुछ पहले से निर्धारित बिट का उल्लेख करते हैं। अन्य सीपीयू में संस्करण होता है जो परीक्षण के लिए विशिष्ट बाइट में विशिष्ट बिट का चयन करता है ("स्किप reg12 का बिट 7 0 है")।
अन्य सभी सशर्त शाखाओं के विपरीत, "स्किप" निर्देश को निर्देश पाइपलाइन को फ्लश करने की आवश्यकता नहीं होती है, हालांकि इसे अगले निर्देश को अनदेखा करने की आवश्यकता हो सकती है।
डेटा के लिए सरल एड्रेसिंग मोड
डेटा के लिए कुछ सरल एड्रेसिंग मोड नीचे दिखाए गए हैं। नामकरण मंच के आधार पर भिन्न हो सकता है।
रजिस्टर करें (या सीधे रजिस्टर करें)
+----------+-----+-----+-----+ | मूल | reg1| reg2| reg3| reg1 := reg2 * reg3; +----------+-----+-----+-----+
इस "एड्रेसिंग मोड" का कोई प्रभावी पता नहीं होता है और इसे कुछ कंप्यूटरों पर एड्रेसिंग मोड नहीं माना जाता है।
इस उदाहरण में, सभी ऑपरेंड रजिस्टरों में हैं, और परिणाम रजिस्टर में रखा गया है।
बेस प्लस ऑफ़सेट, और विविधताएं
इसे कभी-कभी 'आधार प्लस विस्थापन' के रूप में जाना जाता है
+----------+-----+--------------------------+ | लोड | रेग | आधार| ऑफसेट | रेग: = रैम [आधार + ऑफसेट] +----------+-----+--------------------------+ (प्रभावी पता = ऑफसेट + निर्दिष्ट आधार रजिस्टर की सामग्री)
ऑफ़सेट सामान्यतः हस्ताक्षरित 16-बिट मान होता है (हालांकि 80386 ने इसे 32 बिट्स तक विस्तारित किया)।
यदि ऑफ़सेट शून्य है, तो यह अप्रत्यक्ष पंजीकरण पता का उदाहरण बन जाता है प्रभावी पता आधार रजिस्टर में सिर्फ मूल्य है।
कई आरआईएससी मशीनों पर, शून्य मान पर रजिस्टर 0 तय किया जाता है। यदि रजिस्टर 0 का उपयोग आधार रजिस्टर के रूप में किया जाता है, तो यह एब्सोल्यूट एड्रेसिंग का उदाहरण बन जाता है। हालाँकि, मेमोरी के केवल एक छोटे से हिस्से तक पहुँचा जा सकता है (64 किलोबाइट, यदि ऑफ़सेट 16 बिट है)।
वर्तमान कंप्यूटर मेमोरी के आकार के संबंध में 16-बिट ऑफ़सेट बहुत छोटा लग सकता है (यही कारण है कि 80386 ने इसे 32-बिट तक विस्तारित किया)। यह और भी बुरा हो सकता है आईबीएम प्रणाली/360 मेनफ्रेम में केवल अहस्ताक्षरित 12-बिट ऑफसेट होता है। हालाँकि, संदर्भ की स्थानीयता का सिद्धांत लागू होता है कम समय के अंतराल में, अधिकांश डेटा आइटम जो प्रोग्राम एक्सेस करना चाहता है, एक दूसरे के काफी करीब होते हैं।
यह एड्रेसिंग मोड इंडेक्सेड एब्सोल्यूट एड्रेसिंग मोड से काफी निकटता से संबंधित है।
उदाहरण 1 सबरूटीन के भीतर प्रोग्रामर मुख्य रूप से मापदंडों और स्थानीय चर में रुचि रखता है, जो शायद ही कभी 64 KB(किलोबाइट) से अधिक होगा, जिसके लिए आधार रजिस्टर (फ्रेम पॉइंटर) पर्याप्त है। यदि यह रूटीन किसी वस्तु-उन्मुख भाषा में एक वर्ग विधि है, तो एक दूसरे आधार रजिस्टर की आवश्यकता होती है जो वर्तमान वस्तु (कुछ उच्च स्तरीय भाषाओं में 'यह' या 'स्व') के गुणों पर इंगित करता है।
उदाहरण 2 यदि आधार रजिस्टर में मिश्रित प्रकार (एक रिकॉर्ड या संरचना) का पता होता है, तो ऑफ़सेट का उपयोग उस रिकॉर्ड से फ़ील्ड का चयन करने के लिए किया जा सकता है (अधिकांश रिकॉर्ड/संरचनाएं आकार में 32 KB से कम हैं)।
तत्काल/शाब्दिक
+----------+-----+--------------------------+ | जोड़ें | reg1| reg2| स्थिर | reg1 := reg2 + स्थिरांक; +----------+-----+--------------------------+
इस "एड्रेसिंग मोड" का कोई प्रभावी पता नहीं है, और इसे कुछ कंप्यूटरों पर एड्रेसिंग मोड नहीं माना जाता है।
स्थिरांक हस्ताक्षरित या अहस्ताक्षरित हो सकता है। उदाहरण के लिए, move.l #$FEEDABBA, D0
"FEEDABBA" के तत्काल हेक्स मान को रजिस्टर D0 में स्थानांतरित करने के लिए।
मेमोरी से ऑपरेंड का उपयोग करने के बजाय, ऑपरेंड का मान निर्देश के भीतर ही होता है। डीईसी वीएएक्स मशीन पर, शाब्दिक ऑपरेंड आकार 6, 8, 16 या 32 बिट लंबा हो सकता है।
एंड्रयू तानेनबाम ने दिखाया कि कार्यक्रम में सभी स्थिरांक का 98% 13 बिट्स में फिट होगा (आरआईएससी डिजाइन दर्शन देखें)
अंतर्निहित
+-----------------+ | क्लियर कैरी बिट | +-----------------+ +---------------------+ | स्पष्ट संचायक | +---------------------+
निहित एड्रेसिंग मोड, जिसे निहित एड्रेसिंग मोड (x86 असेंबली भाषा) भी कहा जाता है, स्पष्ट रूप से स्रोत या गंतव्य (या कभी-कभी दोनों) के लिए प्रभावी पता निर्दिष्ट नहीं करता है।
या तो स्रोत (यदि कोई हो) या गंतव्य प्रभावी पता (या कभी-कभी दोनों) ओपकोड द्वारा निहित होता है।
पुराने कंप्यूटरों (1970 के दशक के मध्य तक) में इंप्लाइड एड्रेसिंग काफी सामान्य थी। ऐसे कंप्यूटरों में सामान्यतः केवल एक ही रजिस्टर होता था जिसमें संचयक अंकगणित प्रदर्शन किया जा सकता था। ऐसी संचायक मशीनें लगभग हर निर्देश में उस संचायक को परोक्ष रूप से संदर्भित करती हैं। उदाहरण के लिए, ऑपरेशन <a:= b + c; > अनुक्रम का उपयोग करके किया जा सकता है <लोड बी,ग जोड़ें स्टोर ए> -- गंतव्य (संचयक) प्रत्येक "लोड" और "जोड़ें" निर्देश स्रोत (संचयक) प्रत्येक "स्टोर" निर्देश में निहित है।
बाद के कंप्यूटरों में सामान्यतः एक से अधिक सामान्य - उद्देश्य रजिस्टर या रैम स्थान होते थे जो अंकगणित के लिए स्रोत या गंतव्य या दोनों हो सकते हैं और इसलिए बाद में कंप्यूटर को अंकगणित के स्रोत और गंतव्य को निर्दिष्ट करने के लिए किसी अन्य एड्रेसिंग मोड की आवश्यकता होती है।
x86 निर्देशों में, कुछ ऑपरेंड या परिणामों में से एक के लिए निहित रजिस्टरों का उपयोग करते हैं (गुणा, विभाजन, सशर्त कूद की गिनती)।
कई कंप्यूटरों (जैसे x86 और एवीआर) में विशेष-उद्देश्य रजिस्टर होता है जिसे स्टैक पॉइंटर कहा जाता है जो स्टैक से डेटा को पुश या पॉप करते समय निहित रूप से बढ़ा हुआ या घटा हुआ होता है, और स्रोत या गंतव्य प्रभावी पता (निहित रूप से) उसमें स्टेक सूचक संग्रहीत पता होता है।
कई 32-बिट कंप्यूटर (जैसे 68000, एआरएम, या पावर पीसी) में एक से अधिक रजिस्टर होते हैं जिनका उपयोग स्टैक सूचक के रूप में किया जा सकता है और इसलिए "अप्रत्यक्ष स्वयं वेतन वृद्धि दर्ज करें" एड्रेसिंग मोड का उपयोग यह निर्दिष्ट करने के लिए करें कि इनमें से कौन सा रजिस्टर स्टैक से डेटा को पुश या पॉप करते समय उपयोग किया जाना चाहिए।
कुछ मौजूदा कंप्यूटर वास्तुकला (जैसे आईबीएम/390 और इंटेल पेंटियम) में पहले के डिजाइनों के साथ पश्चगामी संगतता बनाए रखने के लिए निहित ऑपरेंड के साथ कुछ निर्देश शामिल हैं।
कई कंप्यूटरों पर, निर्देश जो उपयोगकर्ता/प्रणाली मोड बिट, इंटरप्ट-सक्षम बिट इत्यादि को फ्लिप करते हैं, उन बिट्स को रखने वाले विशेष रजिस्टर को स्पष्ट रूप से निर्दिष्ट करते हैं। यह पोपेक और गोल्डबर्ग वर्चुअलाइजेशन आवश्यकताओं को पूरा करने के लिए उन निर्देशों को फंसाने के लिए आवश्यक हार्डवेयर को सरल बनाता है - ऐसी प्रणाली पर, ट्रैप लॉजिक को किसी भी ऑपरेंड (या अंतिम प्रभावी पते पर) को देखने की आवश्यकता नहीं है, लेकिन केवल ओपकोड पर .
कुछ सीपीयू ऐसे डिजाइन किए गए हैं जहां प्रत्येक ऑपरेंड हमेशा प्रत्येक निर्देश में निहित रूप से निर्दिष्ट होता है - शून्य-ऑपरेंड सीपीयू।
कोड या डेटा के लिए अन्य एड्रेसिंग मोड
पूर्ण/प्रत्यक्ष
+----------+-----+------------------------------------------ ---+ | लोड | रेग | पता | +----------+-----+------------------------------------------ ---+ (प्रभावी पता = निर्देश में दिया गया पता)
इसके लिए काफी बड़े पते के लिए निर्देश में जगह की आवश्यकता होती है। यह अक्सर सीआईएससी मशीनों पर उपलब्ध होता है जिसमें चर-लंबाई के निर्देश होते हैं, जैसे कि x86।
कुछ आरआईएससी मशीनों में एक विशेष लोड अपर लिटरल निर्देश होता है जो एक रजिस्टर के शीर्ष भाग में 16- या 20-बिट स्थिरांक रखता है। इसके बाद बेस-प्लस-ऑफ़सेट एड्रेसिंग मोड में बेस रजिस्टर के रूप में इस्तेमाल किया जा सकता है जो कम-ऑर्डर 16 या 12 बिट्स की आपूर्ति करता है। संयोजन पूर्ण 32-बिट पते की अनुमति देता है।
अनुक्रमित निरपेक्ष
+----------+-----+------------------------------------------ ---+ | लोड | reg |सूचकांक| पता | +----------+-----+------------------------------------------ ---+ (प्रभावी पता = पता + निर्दिष्ट सूचकांक रजिस्टर की सामग्री)
इसके लिए काफी बड़े पते के लिए निर्देश में जगह की भी आवश्यकता होती है। पता सरणी या वेक्टर की शुरुआत हो सकता है, और सूचकांक आवश्यक विशेष सरणी तत्व का चयन कर सकता है। प्रत्येक सरणी तत्व के आकार की अनुमति देने के लिए प्रोसेसर इंडेक्स रजिस्टर को स्केल कर सकता है।
ध्यान दें कि यह कमोबेश बेस-प्लस-ऑफ़सेट एड्रेसिंग मोड जैसा ही है, सिवाय इसके कि इस मामले में ऑफ़सेट किसी भी मेमोरी लोकेशन को संबोधित करने के लिए पर्याप्त है।
उदाहरण 1 सबरूटीन के भीतर, प्रोग्रामर स्ट्रिंग को स्थानीय स्थिरांक या स्थिर चर के रूप में परिभाषित कर सकता है। स्ट्रिंग का पता निर्देश में शाब्दिक पते में संग्रहीत किया जाता है। ऑफ़सेट-लूप के इस पुनरावृत्ति पर स्ट्रिंग के किस वर्ण का उपयोग करना है-इंडेक्स रजिस्टर में संग्रहीत किया जाता है।
उदाहरण 2 प्रोग्रामर कई बड़े सरणियों को ग्लोबल्स या फील्ड (कंप्यूटर साइंस) के रूप में परिभाषित कर सकता है। सरणी की शुरुआत को संदर्भित करने वाले निर्देश के शाब्दिक पते (शायद प्रोग्राम-लोड समय पर स्थानांतरित लोडर द्वारा संशोधित) में संग्रहीत किया जाता है। ऑफ़सेट-लूप के इस पुनरावृत्ति पर उपयोग करने के लिए सरणी से कौन सा आइटम-इंडेक्स रजिस्टर में संग्रहीत किया जाता है। अक्सर लूप में निर्देश लूप काउंटर और कई सरणियों के ऑफसेट के लिए ही रजिस्टर का पुन: उपयोग करते हैं।
बेस प्लस इंडेक्स
+----------+-----+-----+-----+ | लोड | रेग | आधार|सूचकांक| +----------+-----+-----+-----+ (प्रभावी पता = निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की सामग्री)
आधार रजिस्टर में सरणी या वेक्टर का प्रारंभ पता हो सकता है, और सूचकांक आवश्यक विशेष सरणी तत्व का चयन कर सकता है। प्रत्येक सरणी तत्व के आकार की अनुमति देने के लिए प्रोसेसर इंडेक्स रजिस्टर को स्केल कर सकता है। इसका उपयोग पैरामीटर के रूप में पारित सरणी के तत्वों तक पहुंचने के लिए किया जा सकता है।
बेस प्लस इंडेक्स प्लस ऑफ़सेट
+----------+-----+-----+-----+---------------------+ | लोड | रेग | आधार|सूचकांक| ऑफसेट | +----------+-----+-----+-----+---------------------+ (प्रभावी पता = ऑफसेट + निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की सामग्री)
आधार रजिस्टर में सरणी या रिकॉर्ड के वेक्टर का प्रारंभ पता हो सकता है, सूचकांक आवश्यक विशेष रिकॉर्ड का चयन कर सकता है, और ऑफ़सेट उस रिकॉर्ड के भीतर फ़ील्ड का चयन कर सकता है। प्रत्येक सरणी तत्व के आकार की अनुमति देने के लिए प्रोसेसर इंडेक्स रजिस्टर को स्केल कर सकता है।
स्केल किया गया
+----------+-----+-----+-----+ | लोड | रेग | आधार|सूचकांक| +----------+-----+-----+-----+ (प्रभावी पता = निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की स्केल की गई सामग्री)
आधार रजिस्टर में सरणी या वेक्टर डेटा संरचना का प्रारंभ पता हो सकता है, और सूचकांक में आवश्यक एक विशेष सरणी तत्व की ऑफसेट हो सकती है।
यह एड्रेसिंग मोड प्रत्येक सरणी तत्व के आकार की अनुमति देने के लिए इंडेक्स रजिस्टर में मान को गतिशील रूप से मापता है, उदा। यदि सरणी तत्व डबल परिशुद्धता फ़्लोटिंग-पॉइंट संख्याएं हैं जो प्रत्येक 8 बाइट्स पर कब्जा कर रही हैं तो प्रभावी पता गणना में उपयोग किए जाने से पहले इंडेक्स रजिस्टर में मान 8 से गुणा किया जाता है। स्केल फैक्टर सामान्य रूप से दो की शक्ति होने तक ही सीमित होता है, ताकि गुणन के बजाय स्थानांतरण का उपयोग किया जा सके।
अप्रत्यक्ष पंजीकृत करें
+----------+----------+-----+ | लोड | reg1 | आधार| +----------+----------+-----+ (प्रभावी पता = आधार रजिस्टर की सामग्री)
कुछ कंप्यूटरों में यह विशिष्ट एड्रेसिंग मोड के रूप में होता है। कई कंप्यूटर 0 के ऑफ़सेट मान के साथ बस बेस प्लस ऑफ़सेट का उपयोग करते हैं। उदाहरण के लिए, (A7)
ऑटोइनक्रिकमेंट अप्रत्यक्ष पंजीकृत करें
+----------+-----+----------+ | लोड | रेग | आधार | +----------+-----+----------+ (प्रभावी पता = आधार रजिस्टर की सामग्री)
प्रभावी पता निर्धारित करने के बाद, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से बढ़ जाता है जिसे एक्सेस किया जाना है। उदाहरण के लिए, (A7)+ एड्रेस रजिस्टर A7 की सामग्री को एक्सेस करेगा, फिर A7 के एड्रेस पॉइंटर को 1 (सामान्यत: 1 शब्द) से बढ़ा देगा। एक लूप के भीतर, इस एड्रेसिंग मोड का उपयोग किसी सरणी या वेक्टर के सभी तत्वों के माध्यम से कदम उठाने के लिए किया जा सकता है।
उच्च-स्तरीय भाषाओं में अक्सर यह एक अच्छा विचार माना जाता है कि जो कार्य परिणाम लौटाते हैं उनका कोई दुष्प्रभाव नहीं होना चाहिए (दुष्प्रभावों की कमी प्रोग्राम को समझने और सत्यापन को बहुत आसान बनाती है)। इस एड्रेसिंग मोड का एक दुष्प्रभाव है कि आधार रजिस्टर बदल दिया जाता है। यदि बाद की मेमोरी एक्सेस एक त्रुटि का कारण बनती है (उदाहरण के लिए पृष्ठ दोष, बस त्रुटि, पता त्रुटि) जिससे रुकावट आती है, तो निर्देश को फिर से शुरू करना अधिक समस्याग्रस्त हो जाता है क्योंकि एक या अधिक रजिस्टरों को उस स्थिति में वापस सेट करने की आवश्यकता हो सकती है जहां वे पहले थे। निर्देश मूल रूप से शुरू हुआ।
कम से कम दो कंप्यूटर वस्तुकला रहे हैं जिनमें इस एड्रेसिंग मोड का उपयोग करने पर इंटरप्ट से पुनर्प्राप्ति के संबंध में कार्यान्वयन की समस्याएं हैं:
- मोटोरोला 68000 (पता 24 बिट्स में दर्शाया गया है)। एक या दो स्वयं वेतन वृद्धि रजिस्टर ऑपरेंड हो सकते हैं। 68010+ ने बस त्रुटि या पता त्रुटियों पर प्रोसेसर की आंतरिक स्थिति को सहेजकर समस्या का समाधान किया।
- डीईसी वीएएक्स 6 स्वयं वेतन वृद्धि रजिस्टर ऑपरेंड तक हो सकते हैं। प्रत्येक ऑपरेंड एक्सेस दो पेज फॉल्ट का कारण बन सकता है (यदि ऑपरेंड एक पेज बाउंड्री को स्ट्रैडल करने के लिए होता है)। बेशक निर्देश 50 बाइट से अधिक लंबा हो सकता है और पृष्ठ सीमा को भी फैला सकता है।
ऑटोडेक्रिमेंट अप्रत्यक्ष पंजीकृत करें
+----------+-----+-----+ | लोड | रेग | आधार| +----------+-----+-----+ (प्रभावी पता = आधार रजिस्टर की नई सामग्री)
प्रभावी पता निर्धारित करने से पहले, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से घटाया जाता है जिसे एक्सेस किया जाना है।
लूप के भीतर, इस एड्रेसिंग मोड का उपयोग किसी सरणी या वेक्टर के सभी तत्वों के माध्यम से पीछे की ओर जाने के लिए किया जा सकता है। पिछले एड्रेसिंग मोड (स्वयं वेतन वृद्धि) के संयोजन के साथ इस मोड का उपयोग करके स्टैक को लागू किया जा सकता है।
- अप्रत्यक्ष रूप से स्वत: वेतन वृद्धि के अंतर्गत दुष्प्रभावों की चर्चा देखें।
स्मृति अप्रत्यक्ष
इस आलेख में उल्लिखित किसी भी एड्रेसिंग मोड में अप्रत्यक्ष एड्रेसिंग को इंगित करने के लिए अतिरिक्त बिट हो सकता है, यानी कुछ मोड का उपयोग करके गणना की गई पता वास्तव में एक स्थान का पता है (सामान्यत: पूर्ण शब्द) जिसमें वास्तविक प्रभावी पता होता है .
कोड या डेटा के लिए अप्रत्यक्ष संबोधन का इस्तेमाल किया जा सकता है। यह संकेत, संदर्भों, या हैंडल (कंप्यूटिंग) के कार्यान्वयन को बहुत आसान बना सकता है, और उन सबरूटीन्स को कॉल करना भी आसान बना सकता है जो अन्यथा संबोधित नहीं हैं। अप्रत्यक्ष संबोधन में अतिरिक्त मेमोरी एक्सेस शामिल होने के कारण प्रदर्शन दंड लगती है।
कुछ शुरुआती मिनीकंप्यूटर (जैसे डीईसी पीडीपी-8, डेटा जनरल नोवा) में केवल कुछ ही रजिस्टर थे और केवल सीमित डायरेक्ट एड्रेसिंग रेंज (8 बिट) थी। इसलिए मेमोरी का उपयोग अप्रत्यक्ष संबोधन किसी भी महत्वपूर्ण मात्रा में मेमोरी को संदर्भित करने का लगभग एकमात्र तरीका था।
पीसी-पूर्ण
+----------+----------+--------------+---------------------+ | लोड | reg1 | आधार = पीसी | ऑफसेट | +----------+----------+--------------+---------------------+ reg1: = RAM [पीसी + ऑफ़सेट] (प्रभावी पता = पीसी + ऑफसेट)
पीसी - पूर्ण एड्रेसिंग मोड का उपयोग वर्तमान निर्देश से थोड़ी दूरी पर प्रोग्राम मेमोरी में संग्रहीत मूल्य के साथ रजिस्टर लोड करने के लिए किया जा सकता है। इसे बेस प्लस ऑफ़सेट एड्रेसिंग मोड के एक विशेष मामले के रूप में देखा जा सकता है, जो प्रोग्राम काउंटर (पीसी) को बेस रजिस्टर के रूप में चुनता है।
कुछ सीपीयू ऐसे हैं जो पीसी- पूर्ण डेटा संदर्भों का समर्थन करते हैं। ऐसे सीपीयू में शामिल हैं
एमओएस 6502 और इसके डेरिवेटिव ने सभी शाखाओं के लिए पूर्ण पते का इस्तेमाल किया। केवल इन निर्देशों ने इस मोड का इस्तेमाल किया, जंप ने कई अन्य एड्रेसिंग मोड का इस्तेमाल किया।
x86-64 वास्तुकला और 64-बिट एआरएमv8-A वास्तुकला[14] पीसी - पूर्ण एड्रेसिंग मोड हैं, जिन्हें x86-64 में "RIP-पूर्ण" और एआरएमv8-A में "शाब्दिक" कहा जाता है। मोटोरोला 6809 पीसी - पूर्ण एड्रेसिंग मोड का भी समर्थन करता है।
पीडीपी -11 वास्तुकला, वीएएक्स वास्तुकला और 32-बिट एआरएम वास्तुकला पीसी को रजिस्टर फाइल में रखते हुए पीसी-सापेक्ष एड्रेसिंग का समर्थन करते हैं।
आईबीएमz/वास्तुकला में विशिष्ट निर्देश शामिल हैं, उदाहरण के लिए, लोड रिलेटिव लॉन्ग, पीसी - पूर्ण एड्रेसिंग के साथ यदि सामान्य-निर्देश-एक्सटेंशन सुविधा सक्रिय है।
जब इस एड्रेसिंग मोड का उपयोग किया जाता है, तो संकलक सामान्यत: उन स्थिरांक को निर्देशों के रूप में गलती से निष्पादित करने से रोकने के लिए, सबरूटीन के तुरंत पहले या तुरंत बाद शाब्दिक पूल में स्थिरांक रखता है।
यह एड्रेसिंग मोड, जो हमेशा मेमोरी से डेटा प्राप्त करता है या डेटा को मेमोरी में स्टोर करता है और फिर क्रमिक रूप से अगले निर्देश को निष्पादित करने के लिए गिरता है (डेटा को प्रभावी पता इंगित करता है), "पीसी - पूर्ण शाखा" के साथ भ्रमित नहीं होना चाहिए जो डेटा प्राप्त नहीं करता है या मेमोरी में डेटा स्टोर करें, लेकिन इसके बजाय दिए गए ऑफ़सेट पर किसी अन्य निर्देश की शाखाएं (प्रभावी पता निष्पादन योग्य निर्देश को इंगित करता है)।
अप्रचलित एड्रेसिंग मोड
यहां सूचीबद्ध एड्रेसिंग मोड का उपयोग 1950-1980 की अवधि में किया गया था, लेकिन अब अधिकांश वर्तमान कंप्यूटरों पर उपलब्ध नहीं हैं। यह सूची किसी भी तरह से पूर्ण नहीं है, समय-समय पर कई अन्य दिलचस्प और अजीबोगरीब एड्रेसिंग मोड का इस्तेमाल किया गया है, उदा निरपेक्ष-ऋण-तार्किक-या दो या तीन सूचकांक रजिस्टर में से।[15][16]
बहु-स्तरीय स्मृति अप्रत्यक्ष
यदि शब्द का आकार पते से बड़ा है, तो मेमोरी-अप्रत्यक्ष संबोधन के लिए संदर्भित शब्द में अन्य मेमोरी अप्रत्यक्ष चक्र को इंगित करने के लिए अप्रत्यक्ष ध्वज सेट हो सकता है। इस ध्वज को अप्रत्यक्ष बिट के रूप में संदर्भित किया जाता है, और परिणामी सूचक टैग किया हुआ सूचक होता है, अप्रत्यक्ष बिट टैगिंग चाहे वह प्रत्यक्ष सूचक हो या अप्रत्यक्ष सूचक। यह सुनिश्चित करने के लिए देखभाल की आवश्यकता है कि अप्रत्यक्ष पतों की श्रृंखला स्वयं को संदर्भित नहीं करती है, यदि ऐसा होता है, तो किसी पते को हल करने का प्रयास करते समय अनंत लूप प्राप्त कर सकता है।
आईबीएम 1620, डेटा जनरल नोवा, एचपी 2100 श्रृंखला, और एनएआर2 प्रत्येक में ऐसी बहु-स्तरीय मेमोरी अप्रत्यक्ष होती है, और इस तरह के अनंत पता गणना लूप में प्रवेश कर सकती है। नोवा पर मेमोरी इनडायरेक्ट एड्रेसिंग मोड ने थ्रेडेड कोड के आविष्कार को प्रभावित किया।
18-बिट कंप्यूटिंग के साथ डीईसी पीडीपी -10 कंप्यूटर और 36-बिट शब्दों ने प्रत्येक चरण में इंडेक्स रजिस्टर का उपयोग करने की संभावना के साथ बहु-स्तरीय अप्रत्यक्ष पते की अनुमति दी। प्रत्येक एड्रेस वर्ड को डिकोड करने से पहले प्रायोरिटी इंटरप्ट प्रणाली से पूछताछ की गई।[17] इसलिए, अप्रत्यक्ष एड्रेस लूप डिवाइस सर्विस रूटीन के निष्पादन को नहीं रोकेगा, जिसमें कोई भी प्रीमेशन प्रीमेप्टिव मल्टीटास्किंग शेड्यूलर का टाइम-स्लाइस एक्सपायरी हैंडलर शामिल है। लूपिंग निर्देश को किसी अन्य कंप्यूट-बाउंड जॉब की तरह माना जाएगा।
मेमोरी-मैप्ड रजिस्टर
कुछ कंप्यूटरों पर ऐसे पते थे जो प्राथमिक भंडारण के बजाय रजिस्टरों को संदर्भित करते थे, या उन रजिस्टरों को लागू करने के लिए उपयोग की जाने वाली प्राथमिक मेमोरी के लिए। हालांकि कुछ शुरुआती कंप्यूटरों पर पता श्रेणी के उच्च अंत में रजिस्टर पते थे, उदाहरण के लिए, आईबीएम 650[18][lower-alpha 1], आईबीएम 7070[19][lower-alpha 3], प्रवृत्ति केवल निचले सिरे पर रजिस्टर पते का उपयोग करने और मेमोरी के केवल पहले 8 या 16 शब्दों (जैसे आईसीटी 1900 श्रृंखला, डीईसी पीडीपी -10) का उपयोग करने के लिए कर रही है। इसका मतलब यह था कि निर्देश को पंजीकृत करने के लिए अलग ऐड रजिस्टर की कोई आवश्यकता नहीं थी - कोई भी केवल निर्देश को पंजीकृत करने के लिए ऐड मेमोरी का उपयोग कर सकता था।
पीडीपी -10 के शुरुआती मॉडल के मामले में, जिसमें कोई कैश मेमोरी नहीं थी, मेमोरी के पहले कुछ शब्दों में लोड किया गया एक तंग आंतरिक लूप (जहां स्थापित होने पर तेज़ रजिस्टरों को संबोधित किया जा सकता था) चुंबकीय कोर मेमोरी इससे कहीं ज्यादा तेजी से चलता था
डीईसी पीडीपी -11 श्रृंखला के बाद के मॉडल ने इनपुट/आउटपुट क्षेत्र में पतों पर रजिस्टरों को मैप किया, लेकिन यह मुख्य रूप से दूरस्थ निदान की अनुमति देने के लिए था। भ्रामक रूप से, 16-बिट रजिस्टरों को लगातार 8-बिट बाइट पते पर मैप किया गया था।
मेमोरी इनडायरेक्ट और ऑटोइनक्रिकमेंट
डीईसी पीडीपी-8 मिनीकंप्यूटर में आठ विशेष स्थान थे (8 से 15 के पते पर)। जब मेमोरी अप्रत्यक्ष पतों के माध्यम से प्रवेश किया जाता है, तो ये स्थान उपयोग से पहले स्वचालित रूप से बढ़ जाएंगे।[20] इसने पते को बढ़ाने के लिए संचयक का उपयोग किए बिना लूप में मेमोरी के माध्यम से कदम उठाना आसान बना दिया।
डेटा जनरल नोवा मिनीकंप्यूटर में 16 से 31 पते पर 16 विशेष मेमोरी स्थान थे।[21] जब मेमोरी अप्रत्यक्ष पतों के माध्यम से प्रवेश किया जाता है, तो 16 से 23 स्वचालित रूप से उपयोग से पहले वृद्धि होगी, और 24 से 31 स्वचालित रूप से उपयोग से पहले घट जाएगी।
शून्य पृष्ठ
डाटा जनरल नोवा, मोटोरोला 6800 परिवार, और एमओएस टेक्नोलॉजी 6502 प्रोसेसर के परिवार में बहुत कम आंतरिक रजिस्टर थे। आंतरिक रजिस्टरों के विपरीत अंकगणित और तार्किक निर्देश ज्यादातर मेमोरी में मूल्यों के खिलाफ किए गए थे। फलस्वरूप, कई निर्देशों को मेमोरी के लिए दो-बाइट (16-बिट) स्थान की आवश्यकता होती है। यह देखते हुए कि इन प्रोसेसर पर ऑपकोड केवल एक बाइट (8 बिट) लंबाई के थे, मेमोरी एड्रेस कोड आकार का एक महत्वपूर्ण हिस्सा बना सकते हैं।
इन प्रोसेसर के डिजाइनरों में आंशिक उपाय शामिल था जिसे "शून्य पृष्ठ" पतों के रूप में जाना जाता है। मेमोरी के शुरुआती 256 बाइट्स ($0000 - $00FF a.k.a., पेज "0") को एक - बाइट पूर्ण या अनुक्रमित मेमोरी एड्रेस का उपयोग करके प्रवेश किया जा सकता है। इसने निर्देश निष्पादन समय को एक घड़ी चक्र और निर्देश लंबाई को एक बाइट से कम कर दिया। इस क्षेत्र में अक्सर उपयोग किए जाने वाले डेटा को संग्रहीत करके, कार्यक्रमों को छोटा और तेज़ बनाया जा सकता है।
फलस्वरूप, शून्य पृष्ठ का उपयोग रजिस्टर फ़ाइल के समान ही किया गया था। हालांकि, कई प्रणालियों पर, इसके परिणामस्वरूप ऑपरेटिंग प्रणाली और उपयोगकर्ता प्रोग्राम द्वारा शून्य पृष्ठ मेमोरी क्षेत्र का उच्च उपयोग किया गया, मुक्त स्थान सीमित होने के कारण उपयोग को सीमित कर दिया था।
सीधा पृष्ठ
डब्ल्यूडीसी 65816, सीएसजी 65सीई02, और मोटोरोला 6809 सहित कई लेट मॉडल 8-बिट प्रोसेसर में शून्य पेज एड्रेस मोड को बढ़ाया गया था। नया मोड, जिसे "डायरेक्ट पेज" एड्रेसिंग के रूप में जाना जाता है, ने 256-बाइट शून्य को स्थानांतरित करने की क्षमता को जोड़ा। मेमोरी की शुरुआत से पेज मेमोरी विंडो (ऑफ़सेट पता $0000) मेमोरी के पहले 64 KB के भीतर एक नए स्थान पर।
सीएसजी 65सीई02 ने नए बेस पेज (बी) रजिस्टर में 8-बिट ऑफ़सेट मान को स्टोर करके पहले 64 KB मेमोरी के भीतर किसी भी 256-बाइट सीमा में सीधे पृष्ठ को स्थानांतरित करने की अनुमति दी। मोटोरोला 6809 अपने डायरेक्ट पेज (डीपी) रजिस्टर के साथ भी ऐसा ही कर सकता है। डब्ल्यूडीसी 65816 एक कदम और आगे बढ़ गया और नए डायरेक्ट (डी) रजिस्टर में 16-बिट ऑफ़सेट मान को स्टोर करके मेमोरी के पहले 64 KB के भीतर डायरेक्ट पेज को किसी भी स्थान पर ले जाने की अनुमति दी।
परिणामस्वरूप, अधिक संख्या में प्रोग्राम उन्नत प्रत्यक्ष पृष्ठ एड्रेसिंग मोड बनाम लीगेसी प्रोसेसर का उपयोग करने में सक्षम थे जिसमें केवल शून्य पृष्ठ एड्रेसिंग मोड शामिल था।
सीमा जांच के साथ स्केल इंडेक्स
यह स्केल किए गए सूची पतों के समान है, सिवाय इसके कि निर्देश में दो अतिरिक्त ऑपरेंड (सामान्यत: स्थिरांक) होते हैं, और हार्डवेयर जांचता है कि सूची वैल्यू इन सीमाओं के बीच है।
एक अन्य भिन्नता वेक्टर डिस्क्रिप्टर का उपयोग सीमा को बनाए रखने के लिए करती है इससे गतिशील रूप से आवंटित सरणी को कार्यान्वित करना आसान हो जाता है और अभी भी पूर्ण सीमा जांच होती है।
शब्द के भीतर बिट फ़ील्ड के लिए अप्रत्यक्ष
कुछ कंप्यूटरों में शब्दों के भीतर उपक्षेत्रों के लिए विशेष अप्रत्यक्ष एड्रेसिंग मोड थे।
जीई/हनीवेल-600 श्रृंखला वर्ण अप्रत्यक्ष शब्द को संबोधित करते हुए इसके 36-बिट शब्द के भीतर या तो 6-बिट या 9-बिट वर्ण फ़ील्ड निर्दिष्ट करता है।
डीईसी पीडीपी -10, 36-बिट में भी विशेष निर्देश थे, जो मेमोरी को 1 बिट से 36 बिट तक किसी भी आकार के निश्चित आकार के बिट फ़ील्ड या बाइट्स के अनुक्रम के रूप में माना जा सकता था। मेमोरी में एक-शब्द अनुक्रम डिस्क्रिप्टर, जिसे "बाइट सूचक" कहा जाता है, अनुक्रम के भीतर वर्तमान शब्द पता, एक शब्द के भीतर बिट स्थिति और प्रत्येक बाइट का आकार रखता है।
इस वर्णनकर्ता के माध्यम से बाइट्स को लोड और स्टोर करने के लिए निर्देश मौजूद थे, और वर्णनकर्ता को अगले बाइट पर इंगित करने के लिए बढ़ाने के लिए (बाइट्स शब्द सीमाओं में विभाजित नहीं थे)। अधिकांश डीईसी सॉफ़्टवेयर ने प्रति शब्द पांच 7-बिट बाइट्स (सादे एएससीआईआई वर्ण) का उपयोग किया, जिसमें एक बिट प्रति शब्द अप्रयुक्त था। सी (प्रोग्रामिंग भाषा) के कार्यान्वयन को प्रति शब्द चार 9-बिट बाइट्स का उपयोग करना पड़ा, क्योंकि सी में 'मॉलोक' फ़ंक्शन मानता है कि एक इंट का आकार चार के आकार का कुछ गुणक है[22] वास्तविक गुणक प्रणाली-निर्भर संकलन-समय ऑपरेटर आकार द्वारा निर्धारित किया जाता है।
सूचकांक अगला निर्देश
इलियट 503,[23] इलियट 803,[23][24] और अपोलो गाइडेंस कंप्यूटर ने केवल पूर्ण एड्रेसिंग का इस्तेमाल किया, और उसके पास कोई इंडेक्स रजिस्टर नहीं था। इस प्रकार, अप्रत्यक्ष कूद, या रजिस्टरों के माध्यम से कूदना, निर्देश सेट में समर्थित नहीं थे। इसके बजाय, वर्तमान मेमोरी शब्द की सामग्री को अगले निर्देश में जोड़ने का निर्देश दिया जा सकता है। निष्पादित किए जाने वाले अगले निर्देश में कम मान जोड़ना, उदाहरण के लिए,JUMP 0
कोJUMP 20 में बदल सकता है
, इस प्रकार अनुक्रमित जम्प का प्रभाव पैदा करता है। ध्यान दें कि निर्देश ऑन-द-फ्लाई संशोधित किया गया है और मेमोरी में अपरिवर्तित रहता है, यानी यह स्वयं-संशोधित कोड नहीं है। यदि अगले निर्देश में जोड़ा जा रहा मूल्य काफी बड़ा था, तो यह उस निर्देश के साथ-साथ पते के ऑपकोड को भी संशोधित कर सकता था।
शब्दावली
- अप्रत्यक्ष
- एक सूचक या पते के माध्यम से संदर्भित डेटा।
- तत्काल
- निर्देश या आदेश सूची में सीधे एम्बेड किया गया डेटा।
- अनुक्रमणिका
- गतिशील ऑफसेट, जिसे सामान्यत: एक इंडेक्स रजिस्टर में रखा जाता है, संभवतः किसी वस्तु के आकार से बढ़ाया जाता है।
- प्रतिसंतुलन
- पते पर तत्काल मूल्य जोड़ा गया उदाहरण के लिए, सी प्रोग्रामिंग भाषा में संरचना क्षेत्र पहुंच के अनुरूप।
- सापेक्ष
- एक पता दूसरे पते के सापेक्ष बनता है।
- पोस्ट वेतन वृद्धि
- उपयोग किए गए पिछले डेटा के पते का चरण, सी प्रोग्रामिंग भाषा में *p++ के समान, स्टैक पॉप संचालन के लिए उपयोग किया जाता है।
- पूर्व वेतन वृद्धि
- उपयोग से पहले एक पते की कमी, सी प्रोग्रामिंग भाषा में *--p के समान, स्टैक पुश ऑपरेशंस के लिए उपयोग की जाती है।
यह भी देखें
- निर्देश सेट वास्तुकला
- बस पता
टिप्पणियाँ
- ↑ Condensor storage units for 650:
- 8000 Console switches
- 8001 Distributor
- 8002 Lower accumulator
- 8003 Upper accumulator
- ↑ 2.0 2.1 Only valid from console
- ↑ For 5K or 10K 7070
- 00xx Index register xx
- 9991 Accumulator 1
- 9992 Accumulator 2
- 9993 Accumulator 3
- 9995 Program register[lower-alpha 2]
- 9999 Instruction counter[lower-alpha 2]
संदर्भ
- ↑ F. Chow; S. Correll; M. Himelstein; E. Killian; L. Weber (1987). "How many addressing modes are enough?". ACM Sigarch Computer Architecture News. 15 (5): 117–121. doi:10.1145/36177.36193.
- ↑ John L. Hennessy; Mark A. Horowitz (1986). "An Overview of the MIPS-X-MP Project" (PDF).
... MIPS-X uses a single addressing mode: base register plus offset. This simple addressing mode allows the computation of the effective address to begin very early ...
- ↑ Dr. Jon Squire. "Lecture 19, Pipelining Data Forwarding". CS411 Selected Lecture Notes.
- ↑ "High Performance Computing, Notes of Class 11 (Sept. 15 and 20, 2000) - Pipelining". Archived from the original on 2013-12-27. Retrieved 2014-02-08.
- ↑ John Paul Shen, Mikko H. Lipasti (2004). Modern Processor Design. McGraw-Hill Professional. ISBN 9780070570641.
- ↑ 6.0 6.1 John L. Hennessy; David A. Patterson (2002-05-29). Computer Architecture: A Quantitative Approach. p. 104. ISBN 9780080502526.
The C54x has 17 data addressing modes, not counting register access, but the four found in MIPS account for 70% of the modes. Autoincrement and autodecrement, found in some RISC architectures, account for another 25% of the usage. This data was collected form a measurement of static instructions for the C-callable library of 54 DSP routines coded in assembly language.
- ↑ Dr. Sofiène Tahar. "Instruction Set Principles: Addressing Mode Usage (Summary)" (PDF). Archived from the original (PDF) on 2011-09-30.
3 programs measured on machine with all address modes (VAX) ... 75% displacement and immediate
- ↑ Ali-Reza Adl-Tabatabai; Geoff Langdale; Steven Lucco; Robert Wahbe (1995). "Efficient and Language-Independent Mobile Programs". Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation - PLDI '96. pp. 127–136. doi:10.1145/231379.231402. ISBN 0897917952. S2CID 2534344.
79% of all instructions executed could be replaced by RISC instructions or synthesized into RISC instructions using only basic block instruction combination.
- ↑ IBM System/360 Principles of Operation (PDF). IBM. September 1968. p. 135. A22-6821-7. Retrieved 12 July 2019.
- ↑ z/Architecture Principles of Operation (PDF). IBM. September 2017. pp. 7–266. SA22-7832-11. Retrieved 12 July 2019.
- ↑ Max Maxfield. "Building a 4-Bit Computer: Assembly Language and Assembler". Section "Addressing modes". 2019.
- ↑ Kong, Shing; Patterson, David (1995). "Instruction set design". Slide 27.
- ↑ Koopman, Philip (1989). "Architecture of the RTX 32P". Stack Computers.
- ↑ "Introduction to ARMv8 64-bit Architecture". UIC Academy. quequero.org. 9 April 2014.
- ↑ 704 Electronic Data-Processing Machine Manual of Operation (PDF). IBM. 1955. pp. 10–11.
- ↑ Reference Manual IBM 7090 Data Processing System (PDF). IBM. 1962. pp. 9–10.
- ↑ DEC-10-HMAA-D: PDP-10 KA10 Central Processor Maintenance Manual (PDF) (1st Printing ed.). Maynard, Massachusetts: Digital Equipment Corporation. December 1968. p. 2-11. Retrieved 15 May 2021.
Figure 2-9: Effective Address Calculation: test "PI RQ ?"
- ↑ "Storage" (PDF). 650 magnetic drum data-processing machine - manual of operation (PDF). June 1955. p. 9. 22-6060-2. Retrieved March 14, 2022.
- ↑ "Core Storage and Register Addresses" (PDF). Reference Manual - IBM 7070 Data Processing System (PDF). January 1960. p. 252. A22-7003-0. Retrieved March 14, 2022.
- ↑ Jones, Douglas, Reference Instructions on the PDP-8, retrieved 1 July 2013
- ↑ Friend, Carl, Data General NOVA Instruction Set Summary, retrieved 1 July 2013
- ↑ "C Reference: function malloc()"
- ↑ 23.0 23.1 Dave Brooks. "Some Old Computers".
- ↑ Bill Purvis. "Some details of the Elliott 803B hardware"