एड्रेसिंग मोड: Difference between revisions

From Vigyanwiki
No edit summary
 
(72 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{More citations needed|date=May 2009}}
एड्रेसिंग मोड अधिकांश सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) रचना में निर्देश सेट वास्तुकला का एक पहलू है। किसी दिए गए निर्देश सेट वास्तुकला में विभिन्न एड्रेसिंग मोड परिभाषित करते हैं कि उस वास्तुकला में मशीन कोड निर्देश प्रत्येक निर्देश के संकार्य की पहचान कैसे करता है। एड्रेसिंग मोड निर्दिष्ट करता है कि मशीन निर्देश या अन्य जगहों में निहित रजिस्टरों और/या स्थिरांक में रखी गई जानकारी का उपयोग करके ऑपरेंड के प्रभावी मेमोरी एड्रेस की गणना कैसे करें।
{{Short description|Aspect of the instruction set architecture of CPUs}}
एड्रेसिंग मोड अधिकांश सेंट्रल प्रोसेसिंग यूनिट (CPU) डिजाइनों में इंस्ट्रक्शन सेट आर्किटेक्चर का एक पहलू है। किसी दिए गए निर्देश सेट आर्किटेक्चर में परिभाषित विभिन्न एड्रेसिंग मोड परिभाषित करते हैं कि उस आर्किटेक्चर में मशीन कोड निर्देश (कंप्यूटर विज्ञान) प्रत्येक निर्देश के ऑपरेंड की पहचान कैसे करता है। एड्रेसिंग मोड निर्दिष्ट करता है कि मशीन निर्देश या अन्य जगहों में निहित रजिस्टरों और/या स्थिरांक में रखी गई जानकारी का उपयोग करके ऑपरेंड के प्रभावी मेमोरी एड्रेस की गणना कैसे करें।


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


== चेतावनी ==
== चेतावनियां ==
{{Unreferenced section|date=May 2012}}
ध्यान दें कि विभिन्न एड्रेसिंग मोड के नामकरण का कोई सामान्यतः स्वीकृत तरीका नहीं है। विशेष रूप से, अलग-अलग लेखक और कंप्यूटर निर्माता एक ही एड्रेसिंग मोड को अलग-अलग नाम दे सकते हैं, या अलग-अलग एड्रेसिंग मोड को एक ही नाम दे सकते हैं। इसके अलावा, एड्रेसिंग मोड, जिसे दिए गए वास्तुकला में, एकल एड्रेसिंग मोड के रूप में माना जाता है, कार्यक्षमता का प्रतिनिधित्व कर सकता है, जो कि अन्य वास्तुकला में, दो या दो से अधिक एड्रेसिंग मोड द्वारा कवर किया जाता है। उदाहरण के लिए, कुछ जटिल निर्देश सेट कंप्यूटर (सीआईएससी) वास्तुकला, जैसे डिजिटल उपकरण निगम (डीईसी) वीएएक्स, रजिस्टरों और शाब्दिक या तत्काल स्थिरांक को सिर्फ एक अन्य एड्रेसिंग मोड के रूप में मानते हैं। जैसे आईबीएम प्रणाली/360 और उसके उत्तराधिकारी, और सबसे कम निर्देश सेट कंप्यूटर आरआईएससी डिज़ाइन, इस जानकारी को निर्देश के भीतर एन्कोड करते हैं। इस प्रकार, बाद वाली मशीनों में रजिस्टर को दूसरे में कॉपी करने, रजिस्टर में शाब्दिक स्थिरांक की कापी बनाने और मेमोरी स्थान की सामग्री को रजिस्टर में कॉपी करने के लिए तीन अलग-अलग निर्देश कोड होते हैं, जबकि वीएएक्स में केवल "एमओवी" निर्देश होता है।
ध्यान दें कि विभिन्न एड्रेसिंग मोड के नामकरण का कोई सामान्यतः स्वीकृत तरीका नहीं है। विशेष रूप से, अलग-अलग लेखक और कंप्यूटर निर्माता एक ही एड्रेसिंग मोड को अलग-अलग नाम दे सकते हैं, या अलग-अलग एड्रेसिंग मोड को एक ही नाम दे सकते हैं। इसके अलावा, एक एड्रेसिंग मोड, जिसे दिए गए आर्किटेक्चर में, सिंगल एड्रेसिंग मोड के रूप में माना जाता है, कार्यक्षमता का प्रतिनिधित्व कर सकता है, जो कि अन्य आर्किटेक्चर में, दो या दो से अधिक एड्रेसिंग मोड द्वारा कवर किया जाता है। उदाहरण के लिए, कुछ जटिल निर्देश सेट कंप्यूटर CISC(सीआईएससी) आर्किटेक्चर, जैसे डिजिटल उपकरण निगम | डिजिटल उपकरण निगम DEC(डीईसी) वैक्स, रजिस्टरों और शाब्दिक या तत्काल स्थिरांक (कंप्यूटर विज्ञान) को सिर्फ एक अन्य एड्रेसिंग मोड के रूप में मानते हैं। अन्य, जैसे IBM सिस्टम/360 और उसके उत्तराधिकारी, और सबसे कम निर्देश सेट कंप्यूटर RISC(आरआईएससी) डिज़ाइन, इस जानकारी को निर्देश के भीतर एन्कोड करते हैं। इस प्रकार, बाद वाली मशीनों में एक रजिस्टर को दूसरे में कॉपी करने, रजिस्टर में शाब्दिक स्थिरांक की प्रतिलिपि बनाने और मेमोरी लोकेशन की सामग्री को एक रजिस्टर में कॉपी करने के लिए तीन अलग-अलग निर्देश कोड होते हैं, जबकि VAX में केवल "MOV" निर्देश होता है।


"एड्रेसिंग मोड" शब्द स्वयं विभिन्न व्याख्याओं के अधीन है या तो "मेमोरी एड्रेस कैलकुलेशन मोड" या "ऑपरेंड एक्सेसिंग मोड"। पहली व्याख्या के तहत, निर्देश जो मेमोरी से नहीं पढ़ते हैं या मेमोरी में नहीं लिखते हैं (जैसे कि "रजिस्टर में शाब्दिक जोड़ें") को "एड्रेसिंग मोड" नहीं माना जाता है। दूसरी व्याख्या VAX जैसी मशीनों के लिए अनुमति देती है जो रजिस्टर या शाब्दिक ऑपरेंड के लिए अनुमति देने के लिए ऑपरेंड मोड बिट्स का उपयोग करती हैं। "लोड प्रभावी पता" जैसे निर्देशों पर केवल पहली व्याख्या लागू होती है, जो ऑपरेंड के पते को लोड करती है, न कि ऑपरेंड को ही।
"एड्रेसिंग मोड" शब्द स्वयं विभिन्न व्याख्याओं के अधीन है या तो "मेमोरी एड्रेस कैलकुलेशन मोड" या "ऑपरेंड एक्सेसिंग मोड"। पहली व्याख्या के तहत, निर्देश जो मेमोरी से नहीं पढ़ते हैं या मेमोरी में नहीं लिखते हैं (जैसे "रजिस्टर में शाब्दिक जोड़") को "एड्रेसिंग मोड" नहीं माना जाता है। दूसरी व्याख्या वीएएक्स जैसी मशीनों के लिए अनुमति देती है जो रजिस्टर या शाब्दिक ऑपरेंड के लिए अनुमति देने के लिए ऑपरेंड मोड बिट्स का उपयोग करती हैं। "लोड प्रभावी पता" जैसे निर्देशों पर केवल पहली व्याख्या लागू होती है, जो ऑपरेंड के पते को लोड करती है, न कि ऑपरेंड को ही।


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


नीचे दिखाए गए निर्देश एड्रेसिंग मोड को स्पष्ट करने के लिए विशुद्ध रूप से प्रतिनिधि हैं, और जरूरी नहीं कि किसी विशेष कंप्यूटर द्वारा उपयोग किए जाने वाले निमोनिक्स को प्रतिबिंबित करें।
नीचे दिखाए गए निर्देश एड्रेसिंग मोड को स्पष्ट रूप से विशुद्ध करने के लिए प्रतिनिधि हैं, और जरूरी नहीं कि किसी विशेष कंप्यूटर द्वारा उपयोग किए जाने वाले स्मृती-विज्ञान को प्रतिबिंबित करें।


== एड्रेसिंग मोड की संख्या ==
== एड्रेसिंग मोड की संख्या ==
कंप्यूटर आर्किटेक्चर हार्डवेयर में प्रदान किए जाने वाले एड्रेसिंग मोड की संख्या के अनुसार बहुत भिन्न होते हैं। जटिल एड्रेसिंग मोड को खत्म करने और केवल एक या कुछ सरल एड्रेसिंग मोड का उपयोग करने के कुछ लाभ हैं, भले ही इसके लिए कुछ अतिरिक्त निर्देशों और शायद अतिरिक्त रजिस्टर की आवश्यकता हो।<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> निर्देश पाइपलाइन सीपीयू को डिजाइन करना बहुत आसान है यदि केवल उपलब्ध एकमात्र एड्रेसिंग मोड सरल हैं।
कंप्यूटर वास्तुकला हार्डवेयर में प्रदान किए जाने वाले एड्रेसिंग मोड की संख्या के अनुसार बहुत भिन्न होते हैं। जटिल एड्रेसिंग मोड को खत्म करने और केवल एक या कुछ सरल एड्रेसिंग मोड का उपयोग करने के कुछ लाभ हैं, यह साबित हुआ है कि भले ही इसके लिए कुछ अतिरिक्त निर्देशों और शायद अतिरिक्त रजिस्टर की आवश्यकता हो।<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> निर्देश पाइपलाइन किए गए सीपीयू को डिजाइन करना बहुत आसान है यदि केवल उपलब्ध एड्रेसिंग मोड सरल हैं।


अधिकांश RISC(आरआईएससी) आर्किटेक्चर में केवल पांच सरल एड्रेसिंग मोड होते हैं, जबकि CISC(सीआईएससी) आर्किटेक्चर जैसे DEC(डीईसी) वैक्स में एक दर्जन से अधिक एड्रेसिंग मोड होते हैं, जिनमें से कुछ काफी जटिल होते हैं। IBM सिस्टम/360 आर्किटेक्चर में केवल तीन एड्रेसिंग मोड थे सिस्टम/390 के लिए कुछ और जोड़े गए हैं।
अधिकांश आरआईएससी वास्तुकला में केवल पांच सरल एड्रेसिंग मोड होते हैं, जबकि सीआईएससी वास्तुकला जैसे डीईसी वीएएक्स में एक दर्जन से अधिक एड्रेसिंग मोड होते हैं, जिनमें से कुछ काफी जटिल होते हैं। आईबीएम प्रणाली/360 वास्तुकला में केवल तीन एड्रेसिंग मोड थे प्रणाली/390 के लिए कुछ और जोड़े गए हैं।


जब केवल कुछ एड्रेसिंग मोड होते हैं, तो आवश्यक विशेष एड्रेसिंग मोड सामान्यतः निर्देश कोड के भीतर एन्कोड किया जाता है (जैसे IBM(आईबीएम) सिस्टम/360 और उत्तराधिकारी, अधिकांश RISC (आरआईएससी))। लेकिन जब कई एड्रेसिंग मोड होते हैं, तो एड्रेसिंग मोड को निर्दिष्ट करने के लिए एक विशिष्ट फ़ील्ड को अक्सर निर्देश में अलग रखा जाता है। DEC VAX ने लगभग सभी निर्देशों के लिए कई मेमोरी ऑपरेंड की अनुमति दी, और इसलिए उस विशेष ऑपरेंड के लिए एड्रेसिंग मोड को इंगित करने के लिए प्रत्येक ऑपरेंड विनिर्देशक के पहले कुछ बिट्स आरक्षित किए। एड्रेसिंग मोड स्पेसिफायर बिट्स को ओपकोड ऑपरेशन बिट्स से अलग रखते हुए ऑर्थोगोनल इंस्ट्रक्शन सेट तैयार करता है।
जब केवल कुछ एड्रेसिंग मोड होते हैं, तो आवश्यक विशेष एड्रेसिंग मोड सामान्यतः निर्देश कोड (जैसे आईबीएम प्रणाली/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>
कई एड्रेसिंग मोड वाले कंप्यूटर पर भी, वास्तविक कार्यक्रमों के माप<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>{{
कुछ निर्देश सेट आर्किटेक्चर, जैसे कि x86 और IBM/360 और इसके उत्तराधिकारी, में लोड प्रभावी पता निर्देश होता है।<ref>{{
cite manual
cite manual
  | publisher = IBM
  | publisher = IBM
Line 44: Line 40:
  | date = September 2017
  | date = September 2017
  | access-date = 12 July 2019
  | access-date = 12 July 2019
}}</ref> यह प्रभावी ऑपरेंड पते की गणना करता है, लेकिन उस स्मृति स्थान पर कार्य करने के बजाय, यह उस पते को लोड करता है जिसे एक रजिस्टर में एक्सेस किया गया होता। किसी सरणी तत्व के पते को सबरूटीन में पास करते समय यह उपयोगी हो सकता है। यह एक निर्देश में सामान्य से अधिक गणना करने का एक चतुर तरीका भी हो सकता है; उदाहरण के लिए, एड्रेसिंग मोड बेस + इंडेक्स + ऑफ़सेट (नीचे विस्तृत) के साथ इस तरह के निर्देश का उपयोग करने से एक निर्देश में दो रजिस्टर और एक स्थिरांक को एक साथ जोड़ने की अनुमति मिलती है।
}}</ref> यह प्रभावी ऑपरेंड पते की गणना करता है, लेकिन उस मेमोरी स्थान पर कार्य करने के बजाय, यह उस पते को लोड करता है जिसे रजिस्टर में प्रवेश किया गया होता है। किसी सरणी तत्व के पते को सबरूटीन में पास करते समय यह उपयोगी हो सकता है। यह निर्देश में सामान्य से अधिक गणना करने का चतुर तरीका भी हो सकता है, उदाहरण के लिए एड्रेसिंग मोड "बेस + इंडेक्स + ऑफ़सेट" (नीचे विस्तृत) के साथ इस तरह के निर्देश का उपयोग करने से निर्देश में दो रजिस्टर और स्थिरांक को एक साथ जोड़ने की अनुमति मिलती है।


== कोड के लिए सरल एड्रेसिंग मोड ==
== कोड के लिए सरल एड्रेसिंग मोड ==
Line 50: Line 46:
कोड के लिए कुछ सरल एड्रेसिंग मोड नीचे दिखाए गए हैं। नामकरण मंच के आधार पर भिन्न हो सकता है।
कोड के लिए कुछ सरल एड्रेसिंग मोड नीचे दिखाए गए हैं। नामकरण मंच के आधार पर भिन्न हो सकता है।


=== पूर्ण या प्रत्यक्ष ===
=== निरपेक्ष या प्रत्यक्ष ===
     +-----+----------------------------+
     +-----+----------------------------+
     |कूद| पता |
     |jump| address  |
     +-----+----------------------------+
     +-----+----------------------------+
   
   
     (प्रभावी पीसी पता = पता)
     (Effective PC address = address)


एक पूर्ण निर्देश पते के लिए प्रभावी पता पता पैरामीटर ही है जिसमें कोई संशोधन नहीं है।
पूर्ण निर्देश पते के लिए प्रभावी पता पैरामीटर ही है जिसमें कोई संशोधन नहीं है।


===पीसी-रिश्तेदार ===
===पीसी - पूर्ण ===
     +-----+----------------------------+
     +-----+----------------------------+
     |कूद| ऑफसेट | कूद रिश्तेदार
     |jump| offset  | jump relative
     +-----+----------------------------+
     +-----+----------------------------+
   
   
     (प्रभावी पीसी पता = अगला निर्देश पता + ऑफ़सेट, ऑफ़सेट नकारात्मक हो सकता है)
     (Effective PC address = next instruction address + offset, offset may be negative)


प्रोग्राम काउंटर-रिलेटिव इंस्ट्रक्शन एड्रेस के लिए प्रभावी पता अगले निर्देश के पते में जोड़ा गया ऑफसेट पैरामीटर है। यह ऑफ़सेट आमतौर पर निर्देश से पहले और बाद में कोड के संदर्भ की अनुमति देने के लिए हस्ताक्षरित होता है।<ref name="maxfield" >
पीसी - पूर्ण निर्देश पते के लिए प्रभावी पता अगले निर्देश के पते में जोड़ा गया ऑफसेट पैरामीटर है। यह ऑफ़सेट सामान्यतः निर्देश से पहले और बाद में कोड के संदर्भ की अनुमति देने के लिए हस्ताक्षरित होता है।<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>  
यह छलांग के संबंध में विशेष रूप से उपयोगी है, क्योंकि विशिष्ट छलांग पास के निर्देशों के लिए होती है (उच्च-स्तरीय भाषा में सबसे अधिक या जबकि बयान काफी कम होते हैं)। वास्तविक कार्यक्रमों के मापन से पता चलता है कि 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") या कोई रजिस्टर नहीं है, तो स्थिति रजिस्टर में कुछ पहले से निर्धारित बिट का उल्लेख करता है। नीचे सशर्त निष्पादन भी देखें।


=== अप्रत्यक्ष पंजीकृत करें ===
=== अप्रत्यक्ष पंजीकृत करें ===
     +----------+-----+
     +----------+-----+
     |जंपविया| रेग |
     |jump Via| reg |
     +----------+-----+
     +----------+-----+
   
   
     (प्रभावी पीसी पता = रजिस्टर 'reg' की सामग्री)
     (Effective PC address = contents of register 'reg)


एक रजिस्टर अप्रत्यक्ष निर्देश के लिए प्रभावी पता निर्दिष्ट रजिस्टर में पता है। उदाहरण के लिए, (ए 7) पता रजिस्टर ए 7 की सामग्री तक पहुंचने के लिए।
रजिस्टर अप्रत्यक्ष निर्देश के लिए प्रभावी पता निर्दिष्ट रजिस्टर में पता है। उदाहरण के लिए, (A7) पता रजिस्टर A7 की सामग्री तक पहुंचने के लिए।


प्रभाव उस निर्देश पर नियंत्रण स्थानांतरित करना है जिसका पता निर्दिष्ट रजिस्टर में है।
प्रभाव उस निर्देश पर नियंत्रण स्थानांतरित करना है जिसका पता निर्दिष्ट रजिस्टर में है।


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


== अनुक्रमिक एड्रेसिंग मोड ==
== अनुक्रमिक एड्रेसिंग मोड ==
Line 94: Line 90:
=== अनुक्रमिक निष्पादन ===
=== अनुक्रमिक निष्पादन ===
     +----------+
     +----------+
     | नहीं | निम्नलिखित निर्देश निष्पादित करें:
     | nop | execute the following instruction:
     +----------+
     +----------+
   
   
     (प्रभावी पीसी पता = अगला निर्देश पता)
     (Effective PC address = next instruction address)


सीपीयू, अनुक्रमिक निर्देश को निष्पादित करने के बाद, निम्नलिखित निर्देश को तुरंत निष्पादित करता है।
सीपीयू, अनुक्रमिक निर्देश को निष्पादित करने के बाद, निम्नलिखित निर्देश को तुरंत निष्पादित करता है।
Line 103: Line 99:
कुछ कंप्यूटरों पर अनुक्रमिक निष्पादन को एड्रेसिंग मोड नहीं माना जाता है।
कुछ कंप्यूटरों पर अनुक्रमिक निष्पादन को एड्रेसिंग मोड नहीं माना जाता है।


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


सशर्त शाखाएं पीसी को 2 संभावित परिणामों में से एक के साथ लोड करती हैं, स्थिति के आधार पर- अधिकांश सीपीयू आर्किटेक्चर ली गई शाखा के लिए कुछ अन्य एड्रेसिंग मोड का उपयोग करते हैं, और नहीं ली गई शाखा के लिए अनुक्रमिक निष्पादन।
सशर्त शाखाएं पीसी 2 को संभावित परिणामों में से एक के साथ लोड करती हैं, स्थिति के आधार पर-अधिकांश सीपीयू वास्तुकला "ली गई" शाखा के लिए कुछ अन्य एड्रेसिंग मोड का उपयोग करते हैं, और "नहीं ली गई" शाखा के लिए अनुक्रमिक निष्पादन।


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


इस तरह के अनुक्रमिक निर्देशों का प्रत्येक मूल खंड संदर्भ के अस्थायी और स्थानिक इलाके दोनों को प्रदर्शित करता है।
इस तरह के अनुक्रमिक निर्देशों का प्रत्येक "मूल खंड" संदर्भ के अस्थायी और स्थानिक इलाके दोनों को प्रदर्शित करता है।


==== सीपीयू जो अनुक्रमिक निष्पादन का उपयोग नहीं करते हैं ====
==== सीपीयू जो अनुक्रमिक निष्पादन का उपयोग नहीं करते हैं ====
सीपीयू जो प्रोग्राम काउंटर के साथ अनुक्रमिक निष्पादन का उपयोग नहीं करते हैं वे अत्यंत दुर्लभ हैं। कुछ सीपीयू में, प्रत्येक निर्देश हमेशा अगले निर्देश का पता निर्दिष्ट करता है। ऐसे सीपीयू में एक निर्देश सूचक होता है जो उस निर्दिष्ट पते को रखता है; यह कोई प्रोग्राम काउंटर नहीं है क्योंकि इसे बढ़ाने का कोई प्रावधान नहीं है। ऐसे CPU में कुछ ड्रम मेमोरी कंप्यूटर शामिल हैं जैसे IBM 650, SECD मशीन, LGP-30|Librascope LGP-30, और RTX 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>
सीपीयू जो प्रोग्राम काउंटर के साथ अनुक्रमिक निष्पादन का उपयोग नहीं करते हैं वे अत्यंत दुर्लभ हैं। कुछ सीपीयू में, प्रत्येक निर्देश हमेशा अगले निर्देश का पता निर्दिष्ट करता है। ऐसे सीपीयू में निर्देश सूचक होता है जो उस निर्दिष्ट पते को रखता है, यह कोई प्रोग्राम काउंटर नहीं है क्योंकि इसे बढ़ाने का कोई प्रावधान नहीं है। ऐसे सीपीयू में कुछ ड्रम मेमोरी कंप्यूटर शामिल हैं जैसे आईबीएम 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) जो कुछ मामलों में सशर्त शाखाओं को अनावश्यक बना सकते हैं और निर्देश पाइपलाइन को फ्लश करने से बच सकते हैं। एक स्थिति रजिस्टर सेट करने के लिए 'तुलना' जैसे निर्देश का उपयोग किया जाता है, और बाद के निर्देशों में उस स्थिति कोड पर एक परीक्षण शामिल होता है ताकि यह देखा जा सके कि उनका पालन किया जाता है या अनदेखा किया जाता है।
कुछ कंप्यूटर वास्तुकला में सशर्त निर्देश होते हैं (जैसे एआरएम वास्तुकला, लेकिन अब 64-बिट मोड में सभी निर्देशों के लिए नहीं) या सशर्त लोड निर्देश (जैसे x86) जो कुछ मामलों में सशर्त शाखाओं को अनावश्यक बना सकते हैं और निर्देश पाइपलाइन को फ्लश करने से बच सकते हैं। स्थिति रजिस्टर सेट करने के लिए 'तुलना' जैसे निर्देश का उपयोग किया जाता है, और बाद के निर्देशों में उस स्थिति कोड पर एक परीक्षण शामिल होता है ताकि यह देखा जा सके कि उनका पालन किया जाता है या अनदेखा किया जाता है।


=== छोड़ें ===
=== छोड़ें ===
Line 125: Line 122:
     (प्रभावी पीसी पता = अगला निर्देश पता + 1)
     (प्रभावी पीसी पता = अगला निर्देश पता + 1)


स्किप एड्रेसिंग को एक निश्चित +1 ऑफसेट के साथ एक विशेष प्रकार का पीसी-रिश्तेदार एड्रेसिंग मोड माना जा सकता है। पीसी-रिश्तेदार एड्रेसिंग की तरह, कुछ सीपीयू में इस एड्रेसिंग मोड के संस्करण होते हैं जो केवल एक रजिस्टर (स्किप if reg1=0 ) या कोई रजिस्टर नहीं होते हैं, जो स्थिति रजिस्टर में कुछ पहले से सेट बिट का उल्लेख करते हैं। अन्य सीपीयू में एक संस्करण होता है जो परीक्षण के लिए एक विशिष्ट बाइट में एक विशिष्ट बिट का चयन करता है (छोड़ें अगर reg12 का बिट 7 0 है)।
स्किप एड्रेसिंग को एक निश्चित "+1" ऑफसेट के साथ एक विशेष प्रकार का पीसी - पूर्ण एड्रेसिंग मोड माना जा सकता है। पीसी - पूर्ण एड्रेसिंग की तरह, कुछ सीपीयू में इस एड्रेसिंग मोड के संस्करण होते हैं जो केवल रजिस्टर("स्किप if reg1=0" ) या कोई रजिस्टर नहीं होते हैं, जो स्थिति रजिस्टर में कुछ पहले से निर्धारित बिट का उल्लेख करते हैं। अन्य सीपीयू में संस्करण होता है जो परीक्षण के लिए विशिष्ट बाइट में विशिष्ट बिट का चयन करता है ("स्किप reg12 का बिट 7 0 है")।


अन्य सभी सशर्त शाखाओं के विपरीत, एक स्किप निर्देश को निर्देश पाइपलाइन को फ्लश करने की आवश्यकता नहीं होती है, हालांकि इसे अगले निर्देश को अनदेखा करने की आवश्यकता हो सकती है।
अन्य सभी सशर्त शाखाओं के विपरीत, "स्किप" निर्देश को निर्देश पाइपलाइन को फ्लश करने की आवश्यकता नहीं होती है, हालांकि इसे अगले निर्देश को अनदेखा करने की आवश्यकता हो सकती है।


== डेटा के लिए सरल एड्रेसिंग मोड ==
== डेटा के लिए सरल एड्रेसिंग मोड ==
Line 133: Line 130:
डेटा के लिए कुछ सरल एड्रेसिंग मोड नीचे दिखाए गए हैं। नामकरण मंच के आधार पर भिन्न हो सकता है।
डेटा के लिए कुछ सरल एड्रेसिंग मोड नीचे दिखाए गए हैं। नामकरण मंच के आधार पर भिन्न हो सकता है।


==={{anchor|REGISTER PLUS REGISTER}}रजिस्टर करें (या सीधे रजिस्टर करें) ===
===रजिस्टर करें (या सीधे रजिस्टर करें) ===
     +----------+-----+-----+-----+
     +----------+-----+-----+-----+
     | मूल | reg1| reg2| reg3| reg1 := reg2 * reg3;
     | मूल | reg1| reg2| reg3| reg1 := reg2 * reg3;
     +----------+-----+-----+-----+
     +----------+-----+-----+-----+


इस एड्रेसिंग मोड में एक प्रभावी पता नहीं होता है और इसे कुछ कंप्यूटरों पर एड्रेसिंग मोड नहीं माना जाता है।
इस "एड्रेसिंग मोड" का कोई प्रभावी पता नहीं होता है और इसे कुछ कंप्यूटरों पर एड्रेसिंग मोड नहीं माना जाता है।


इस उदाहरण में, सभी ऑपरेंड रजिस्टरों में हैं, और परिणाम एक रजिस्टर में रखा गया है।
इस उदाहरण में, सभी ऑपरेंड रजिस्टरों में हैं, और परिणाम रजिस्टर में रखा गया है।


==={{anchor|REGISTER PLUS IMMIEDIATE CONSTANT}}बेस प्लस ऑफ़सेट, और विविधताएं ===
===बेस प्लस ऑफ़सेट, और विविधताएं ===
इसे कभी-कभी 'आधार प्लस विस्थापन' के रूप में जाना जाता है
इसे कभी-कभी 'आधार प्लस विस्थापन' के रूप में जाना जाता है
     +----------+-----+--------------------------+
     +----------+-----+--------------------------+
Line 150: Line 147:
     (प्रभावी पता = ऑफसेट + निर्दिष्ट आधार रजिस्टर की सामग्री)
     (प्रभावी पता = ऑफसेट + निर्दिष्ट आधार रजिस्टर की सामग्री)


ऑफ़सेट (कंप्यूटर विज्ञान) आमतौर पर एक हस्ताक्षरित 16-बिट मान होता है (हालांकि 80386 ने इसे 32 बिट्स तक विस्तारित किया)।
ऑफ़सेट सामान्यतः हस्ताक्षरित 16-बिट मान होता है (हालांकि 80386 ने इसे 32 बिट्स तक विस्तारित किया)।


यदि ऑफ़सेट शून्य है, तो यह रजिस्टर इनडायरेक्ट एड्रेसिंग का एक उदाहरण बन जाता है; प्रभावी पता आधार रजिस्टर में सिर्फ मूल्य है।
यदि ऑफ़सेट शून्य है, तो यह ''अप्रत्यक्ष पंजीकरण''  पता का उदाहरण बन जाता है प्रभावी पता आधार रजिस्टर में सिर्फ मूल्य है।


कई आरआईएससी मशीनों पर, शून्य मान पर रजिस्टर 0 तय किया जाता है। यदि रजिस्टर 0 का उपयोग आधार रजिस्टर के रूप में किया जाता है, तो यह एब्सोल्यूट एड्रेसिंग का एक उदाहरण बन जाता है। हालाँकि, मेमोरी के केवल एक छोटे से हिस्से तक पहुँचा जा सकता है (64 किलोबाइट, यदि ऑफ़सेट 16 बिट है)।
कई आरआईएससी मशीनों पर, शून्य मान पर रजिस्टर 0 तय किया जाता है। यदि रजिस्टर 0 का उपयोग आधार रजिस्टर के रूप में किया जाता है, तो यह एब्सोल्यूट एड्रेसिंग का उदाहरण बन जाता है। हालाँकि, मेमोरी के केवल एक छोटे से हिस्से तक पहुँचा जा सकता है (64 किलोबाइट, यदि ऑफ़सेट 16 बिट है)।


वर्तमान कंप्यूटर मेमोरी के आकार के संबंध में 16-बिट ऑफ़सेट बहुत छोटा लग सकता है (यही कारण है कि 80386 ने इसे 32-बिट तक विस्तारित किया)। यह और भी बुरा हो सकता है: आईबीएम सिस्टम/360 मेनफ्रेम में केवल एक अहस्ताक्षरित 12-बिट ऑफसेट होता है। हालाँकि, संदर्भ की स्थानीयता का सिद्धांत लागू होता है: थोड़े समय के अंतराल में, अधिकांश डेटा आइटम जो एक प्रोग्राम एक्सेस करना चाहता है, एक दूसरे के काफी करीब होते हैं।
वर्तमान कंप्यूटर मेमोरी के आकार के संबंध में 16-बिट ऑफ़सेट बहुत छोटा लग सकता है (यही कारण है कि 80386 ने इसे 32-बिट तक विस्तारित किया)। यह और भी बुरा हो सकता है आईबीएम प्रणाली/360 मेनफ्रेम में केवल अहस्ताक्षरित 12-बिट ऑफसेट होता है। हालाँकि, संदर्भ की स्थानीयता का सिद्धांत लागू होता है कम समय के अंतराल में, अधिकांश डेटा आइटम जो प्रोग्राम एक्सेस करना चाहता है, एक दूसरे के काफी करीब होते हैं।


यह एड्रेसिंग मोड इंडेक्सेड एब्सोल्यूट एड्रेसिंग मोड से काफी निकटता से संबंधित है।
यह एड्रेसिंग मोड इंडेक्सेड एब्सोल्यूट एड्रेसिंग मोड से काफी निकटता से संबंधित है।


उदाहरण 1:
''उदाहरण'' 1 सबरूटीन के भीतर प्रोग्रामर मुख्य रूप से मापदंडों और स्थानीय चर में रुचि रखता है, जो शायद ही कभी 64 KB(किलोबाइट) से अधिक होगा, जिसके लिए आधार रजिस्टर (फ्रेम पॉइंटर) पर्याप्त है। यदि यह रूटीन किसी वस्तु-उन्मुख भाषा में एक वर्ग विधि है, तो एक दूसरे आधार रजिस्टर की आवश्यकता होती है जो वर्तमान वस्तु (कुछ उच्च स्तरीय भाषाओं में '<nowiki/>'''यह'''<nowiki/>' या ''''स्व'''<nowiki/>') के गुणों पर इंगित करता है।
एक सबरूटीन के भीतर एक प्रोग्रामर मुख्य रूप से मापदंडों और स्थानीय चर में रुचि रखता है, जो शायद ही कभी 64 किलोबाइट से अधिक होगा, जिसके लिए एक बेस रजिस्टर (फ्रेम पॉइंटर) पर्याप्त है। यदि यह रूटीन किसी वस्तु-उन्मुख भाषा में एक वर्ग विधि है, तो एक दूसरे आधार रजिस्टर की आवश्यकता होती है जो वर्तमान वस्तु (कुछ उच्च स्तरीय भाषाओं में 'यह' या 'स्व') के गुणों पर इंगित करता है।


उदाहरण 2:
''उदाहरण'' 2 यदि आधार रजिस्टर में मिश्रित प्रकार (एक रिकॉर्ड या संरचना) का पता होता है, तो ऑफ़सेट का उपयोग उस रिकॉर्ड से फ़ील्ड का चयन करने के लिए किया जा सकता है (अधिकांश रिकॉर्ड/संरचनाएं आकार में 32 KB से कम हैं)।
यदि आधार रजिस्टर में एक मिश्रित प्रकार (एक रिकॉर्ड या संरचना) का पता होता है, तो ऑफ़सेट का उपयोग उस रिकॉर्ड से एक फ़ील्ड का चयन करने के लिए किया जा सकता है (अधिकांश रिकॉर्ड/संरचनाएं आकार में 32 केबी से कम हैं)।


=== तत्काल/शाब्दिक ===
=== तत्काल/शाब्दिक ===
Line 171: Line 166:
     +----------+-----+--------------------------+
     +----------+-----+--------------------------+


इस एड्रेसिंग मोड में एक प्रभावी पता नहीं है, और इसे कुछ कंप्यूटरों पर एड्रेसिंग मोड नहीं माना जाता है।
इस "एड्रेसिंग मोड" का कोई प्रभावी पता नहीं है, और इसे कुछ कंप्यूटरों पर एड्रेसिंग मोड नहीं माना जाता है।


स्थिरांक हस्ताक्षरित या अहस्ताक्षरित हो सकता है। उदाहरण के लिए, <code>move.l #$FEEDABBA, D0</code> FEEDABBA के तत्काल हेक्स मान को रजिस्टर D0 में स्थानांतरित करने के लिए।
स्थिरांक हस्ताक्षरित या अहस्ताक्षरित हो सकता है। उदाहरण के लिए, <code>move.l #$FEEDABBA, D0</code> "FEEDABBA" के तत्काल हेक्स मान को रजिस्टर D0 में स्थानांतरित करने के लिए।


मेमोरी से ऑपरेंड का उपयोग करने के बजाय, ऑपरेंड का मान निर्देश के भीतर ही होता है। DEC VAX मशीन पर, शाब्दिक ऑपरेंड आकार 6, 8, 16 या 32 बिट लंबा हो सकता है।
मेमोरी से ऑपरेंड का उपयोग करने के बजाय, ऑपरेंड का मान निर्देश के भीतर ही होता है। डीईसी वीएएक्स मशीन पर, शाब्दिक ऑपरेंड आकार 6, 8, 16 या 32 बिट लंबा हो सकता है।


एंड्रयू एस। तानेनबाम ने दिखाया कि एक कार्यक्रम में सभी स्थिरांक का 98% 13 बिट्स में फिट होगा (देखें कम किए गए निर्देश सेट कंप्यूटर # निर्देश सेट दर्शन)
एंड्रयू तानेनबाम ने दिखाया कि कार्यक्रम में सभी स्थिरांक का 98% 13 बिट्स में फिट होगा (आरआईएससी डिजाइन दर्शन देखें)


=== लागू ===
=== अंतर्निहित ===
     +-----------------+
     +-----------------+
     | क्लियर कैरी बिट |
     | क्लियर कैरी बिट |
Line 187: Line 182:
     | स्पष्ट संचायक |
     | स्पष्ट संचायक |
     +---------------------+
     +---------------------+
निहित एड्रेसिंग मोड, जिसे निहित एड्रेसिंग मोड (x86 असेंबली भाषा) भी कहा जाता है, स्पष्ट रूप से स्रोत या गंतव्य (या कभी-कभी दोनों) के लिए एक प्रभावी पता निर्दिष्ट नहीं करता है।
निहित एड्रेसिंग मोड, जिसे निहित एड्रेसिंग मोड (x86 असेंबली भाषा) भी कहा जाता है, स्पष्ट रूप से स्रोत या गंतव्य (या कभी-कभी दोनों) के लिए प्रभावी पता निर्दिष्ट नहीं करता है।


या तो स्रोत (यदि कोई हो) या गंतव्य प्रभावी पता (या कभी-कभी दोनों) opcode द्वारा निहित है।
या तो स्रोत (यदि कोई हो) या गंतव्य प्रभावी पता (या कभी-कभी दोनों) ओपकोड द्वारा निहित होता है।


पुराने कंप्यूटरों (1970 के दशक के मध्य तक) में इंप्लाइड एड्रेसिंग काफी आम थी। ऐसे कंप्यूटरों में आमतौर पर केवल एक ही रजिस्टर होता था जिसमें अंकगणित किया जा सकता था-संचयक। ऐसी संचायक मशीनें लगभग हर निर्देश में उस संचायक को परोक्ष रूप से संदर्भित करती हैं। उदाहरण के लिए, ऑपरेशन <a := b + c; > अनुक्रम का उपयोग करके किया जा सकता है <लोड बी; ग जोड़ें; स्टोर ए; > - गंतव्य (संचयक) प्रत्येक भार में निहित है और निर्देश जोड़ें; स्रोत (संचयक) प्रत्येक स्टोर निर्देश में निहित है।
पुराने कंप्यूटरों (1970 के दशक के मध्य तक) में इंप्लाइड एड्रेसिंग काफी सामान्य थी। ऐसे कंप्यूटरों में सामान्यतः केवल एक ही रजिस्टर होता था जिसमें संचयक अंकगणित प्रदर्शन किया जा सकता था। ऐसी संचायक मशीनें लगभग हर निर्देश में उस संचायक को परोक्ष रूप से संदर्भित करती हैं। उदाहरण के लिए, ऑपरेशन <a:= b + c; > अनुक्रम का उपयोग करके किया जा सकता है <लोड बी,ग जोड़ें स्टोर ए> -- गंतव्य (संचयक) प्रत्येक "लोड" और "जोड़ें" निर्देश स्रोत (संचयक) प्रत्येक "स्टोर" निर्देश में निहित है।


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


x86 निर्देशों में, कुछ ऑपरेंड या परिणामों में से एक के लिए निहित रजिस्टरों का उपयोग करते हैं (गुणा, विभाजन, सशर्त कूद की गिनती)।
x86 निर्देशों में, कुछ ऑपरेंड या परिणामों में से एक के लिए निहित रजिस्टरों का उपयोग करते हैं (गुणा, विभाजन, सशर्त कूद की गिनती)।


कई कंप्यूटरों (जैसे x86 और AVR) में एक विशेष-उद्देश्य रजिस्टर होता है जिसे स्टैक पॉइंटर कहा जाता है जो स्टैक से डेटा को पुश या पॉप करते समय निहित रूप से बढ़ा हुआ या घटा हुआ होता है, और स्रोत या गंतव्य प्रभावी पता (निहित रूप से) उसमें संग्रहीत पता होता है। स्टेक सूचक।
कई कंप्यूटरों (जैसे x86 और एवीआर) में विशेष-उद्देश्य रजिस्टर होता है जिसे स्टैक पॉइंटर कहा जाता है जो स्टैक से डेटा को पुश या पॉप करते समय निहित रूप से बढ़ा हुआ या घटा हुआ होता है, और स्रोत या गंतव्य प्रभावी पता (निहित रूप से) उसमें स्टेक सूचक संग्रहीत पता होता है।  


कई 32-बिट कंप्यूटर (जैसे 68000, एआरएम, या पावरपीसी) में एक से अधिक रजिस्टर होते हैं जिनका उपयोग स्टैक पॉइंटर के रूप में किया जा सकता है - और इसलिए रजिस्टर ऑटोइनक्रिकमेंट इनडायरेक्ट एड्रेसिंग मोड का उपयोग यह निर्दिष्ट करने के लिए करें कि इनमें से कौन सा रजिस्टर पुश करते समय या उपयोग किया जाना चाहिए। एक ढेर से डेटा पॉपिंग।
कई 32-बिट कंप्यूटर (जैसे 68000, एआरएम, या पावर पीसी) में एक से अधिक रजिस्टर होते हैं जिनका उपयोग स्टैक सूचक के रूप में किया जा सकता है और इसलिए "अप्रत्यक्ष स्वयं वेतन वृद्धि दर्ज करें" एड्रेसिंग मोड का उपयोग यह निर्दिष्ट करने के लिए करें कि इनमें से कौन सा रजिस्टर स्टैक से डेटा को पुश या पॉप करते समय उपयोग किया जाना चाहिए।  


कुछ मौजूदा कंप्यूटर आर्किटेक्चर (जैसे आईबीएम/390 और इंटेल पेंटियम) में पहले के डिजाइनों के साथ पश्चगामी संगतता बनाए रखने के लिए निहित ऑपरेंड के साथ कुछ निर्देश शामिल हैं।
कुछ मौजूदा कंप्यूटर वास्तुकला (जैसे आईबीएम/390 और इंटेल पेंटियम) में पहले के डिजाइनों के साथ पश्चगामी संगतता बनाए रखने के लिए निहित ऑपरेंड के साथ कुछ निर्देश शामिल हैं।


कई कंप्यूटरों पर, निर्देश जो उपयोगकर्ता/सिस्टम मोड बिट, इंटरप्ट-सक्षम बिट इत्यादि को फ्लिप करते हैं, उन बिट्स को रखने वाले विशेष रजिस्टर को स्पष्ट रूप से निर्दिष्ट करते हैं। यह पोपेक और गोल्डबर्ग वर्चुअलाइजेशन आवश्यकताओं को पूरा करने के लिए उन निर्देशों को फंसाने के लिए आवश्यक हार्डवेयर को सरल बनाता है-ऐसी प्रणाली पर, ट्रैप लॉजिक को किसी भी ऑपरेंड (या अंतिम प्रभावी पते पर) को देखने की आवश्यकता नहीं है, लेकिन केवल ओपकोड पर .
कई कंप्यूटरों पर, निर्देश जो उपयोगकर्ता/प्रणाली मोड बिट, इंटरप्ट-सक्षम बिट इत्यादि को फ्लिप करते हैं, उन बिट्स को रखने वाले विशेष रजिस्टर को स्पष्ट रूप से निर्दिष्ट करते हैं। यह पोपेक और गोल्डबर्ग वर्चुअलाइजेशन आवश्यकताओं को पूरा करने के लिए उन निर्देशों को फंसाने के लिए आवश्यक हार्डवेयर को सरल बनाता है - ऐसी प्रणाली पर, ट्रैप लॉजिक को किसी भी ऑपरेंड (या अंतिम प्रभावी पते पर) को देखने की आवश्यकता नहीं है, लेकिन केवल ओपकोड पर .


कुछ सीपीयू ऐसे डिजाइन किए गए हैं जहां प्रत्येक ऑपरेंड हमेशा प्रत्येक निर्देश में निहित रूप से निर्दिष्ट होता है - निर्देश सेट # ऑपरेंड की संख्या | शून्य-ऑपरेंड सीपीयू।
कुछ सीपीयू ऐसे डिजाइन किए गए हैं जहां प्रत्येक ऑपरेंड हमेशा प्रत्येक निर्देश में निहित रूप से निर्दिष्ट होता है - शून्य-ऑपरेंड सीपीयू।


== कोड या डेटा के लिए अन्य एड्रेसिंग मोड ==
== कोड या डेटा के लिए अन्य एड्रेसिंग मोड ==
Line 218: Line 213:
इसके लिए काफी बड़े पते के लिए निर्देश में जगह की आवश्यकता होती है। यह अक्सर सीआईएससी मशीनों पर उपलब्ध होता है जिसमें चर-लंबाई के निर्देश होते हैं, जैसे कि x86।
इसके लिए काफी बड़े पते के लिए निर्देश में जगह की आवश्यकता होती है। यह अक्सर सीआईएससी मशीनों पर उपलब्ध होता है जिसमें चर-लंबाई के निर्देश होते हैं, जैसे कि x86।


कुछ आरआईएससी मशीनों में एक विशेष लोड अपर लिटरल निर्देश होता है जो एक रजिस्टर के शीर्ष भाग में 16- या 20-बिट स्थिरांक रखता है। इसके बाद बेस-प्लस-ऑफ़सेट एड्रेसिंग मोड में बेस रजिस्टर के रूप में इस्तेमाल किया जा सकता है जो कम-ऑर्डर 16 या 12 बिट्स की आपूर्ति करता है। संयोजन एक पूर्ण 32-बिट पते की अनुमति देता है।
कुछ आरआईएससी मशीनों में एक विशेष ''लोड अपर लिटरल''  निर्देश होता है जो एक रजिस्टर के शीर्ष भाग में 16- या 20-बिट स्थिरांक रखता है। इसके बाद बेस-प्लस-ऑफ़सेट एड्रेसिंग मोड में बेस रजिस्टर के रूप में इस्तेमाल किया जा सकता है जो कम-ऑर्डर 16 या 12 बिट्स की आपूर्ति करता है। संयोजन पूर्ण 32-बिट पते की अनुमति देता है।


=== अनुक्रमित निरपेक्ष ===
=== अनुक्रमित निरपेक्ष ===
Line 227: Line 222:
     (प्रभावी पता = पता + निर्दिष्ट सूचकांक रजिस्टर की सामग्री)
     (प्रभावी पता = पता + निर्दिष्ट सूचकांक रजिस्टर की सामग्री)


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


ध्यान दें कि यह कमोबेश बेस-प्लस-ऑफ़सेट एड्रेसिंग मोड जैसा ही है, सिवाय इसके कि इस मामले में ऑफ़सेट किसी भी मेमोरी लोकेशन को संबोधित करने के लिए पर्याप्त है।
ध्यान दें कि यह कमोबेश बेस-प्लस-ऑफ़सेट एड्रेसिंग मोड जैसा ही है, सिवाय इसके कि इस मामले में ऑफ़सेट किसी भी मेमोरी लोकेशन को संबोधित करने के लिए पर्याप्त है।


उदाहरण 1:
''उदाहरण'' 1 सबरूटीन के भीतर, प्रोग्रामर स्ट्रिंग को स्थानीय स्थिरांक या स्थिर चर के रूप में परिभाषित कर सकता है। स्ट्रिंग का पता निर्देश में शाब्दिक पते में संग्रहीत किया जाता है। ऑफ़सेट-लूप के इस पुनरावृत्ति पर स्ट्रिंग के किस वर्ण का उपयोग करना है-इंडेक्स रजिस्टर में संग्रहीत किया जाता है।
एक सबरूटीन के भीतर, एक प्रोग्रामर एक स्ट्रिंग को स्थानीय स्थिरांक या स्थिर चर के रूप में परिभाषित कर सकता है। स्ट्रिंग का पता निर्देश में शाब्दिक पते में संग्रहीत किया जाता है। ऑफ़सेट - लूप के इस पुनरावृत्ति पर स्ट्रिंग के किस वर्ण का उपयोग करना है - इंडेक्स रजिस्टर में संग्रहीत किया जाता है।


उदाहरण 2:
''उदाहरण'' 2 प्रोग्रामर कई बड़े सरणियों को ग्लोबल्स या फील्ड (कंप्यूटर साइंस) के रूप में परिभाषित कर सकता है। सरणी की शुरुआत को संदर्भित करने वाले निर्देश के शाब्दिक पते (शायद प्रोग्राम-लोड समय पर स्थानांतरित लोडर द्वारा संशोधित) में संग्रहीत किया जाता है। ऑफ़सेट-लूप के इस पुनरावृत्ति पर उपयोग करने के लिए सरणी से कौन सा आइटम-इंडेक्स रजिस्टर में संग्रहीत किया जाता है। अक्सर लूप में निर्देश लूप काउंटर और कई सरणियों के ऑफसेट के लिए ही रजिस्टर का पुन: उपयोग करते हैं।
एक प्रोग्रामर कई बड़े सरणियों को ग्लोबल्स या फील्ड (कंप्यूटर साइंस) के रूप में परिभाषित कर सकता है। सरणी की शुरुआत को संदर्भित करने वाले निर्देश के शाब्दिक पते (शायद प्रोग्राम-लोड समय पर एक स्थानांतरित लोडर द्वारा संशोधित) में संग्रहीत किया जाता है। ऑफ़सेट - लूप के इस पुनरावृत्ति पर उपयोग करने के लिए सरणी से कौन सा आइटम - इंडेक्स रजिस्टर में संग्रहीत किया जाता है। अक्सर लूप में निर्देश लूप काउंटर और कई सरणियों के ऑफसेट के लिए एक ही रजिस्टर का पुन: उपयोग करते हैं।


=== बेस प्लस इंडेक्स ===
=== बेस प्लस इंडेक्स ===
Line 244: Line 237:
     (प्रभावी पता = निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की सामग्री)
     (प्रभावी पता = निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की सामग्री)


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


=== बेस प्लस इंडेक्स प्लस ऑफ़सेट ===
=== बेस प्लस इंडेक्स प्लस ऑफ़सेट ===
Line 253: Line 246:
     (प्रभावी पता = ऑफसेट + निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की सामग्री)
     (प्रभावी पता = ऑफसेट + निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की सामग्री)


आधार रजिस्टर में एक सरणी या रिकॉर्ड के वेक्टर का प्रारंभ पता हो सकता है, सूचकांक आवश्यक विशेष रिकॉर्ड का चयन कर सकता है, और ऑफ़सेट उस रिकॉर्ड के भीतर एक फ़ील्ड का चयन कर सकता है। एक सरणी के स्ट्राइड की अनुमति देने के लिए प्रोसेसर इंडेक्स रजिस्टर को स्केल कर सकता है।
आधार रजिस्टर में सरणी या रिकॉर्ड के वेक्टर का प्रारंभ पता हो सकता है, सूचकांक आवश्यक विशेष रिकॉर्ड का चयन कर सकता है, और ऑफ़सेट उस रिकॉर्ड के भीतर फ़ील्ड का चयन कर सकता है। प्रत्येक सरणी तत्व के आकार की अनुमति देने के लिए प्रोसेसर इंडेक्स रजिस्टर को स्केल कर सकता है।


=== स्केल किया गया ===
=== स्केल किया गया ===
Line 262: Line 255:
     (प्रभावी पता = निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की स्केल की गई सामग्री)
     (प्रभावी पता = निर्दिष्ट आधार रजिस्टर की सामग्री + निर्दिष्ट सूचकांक रजिस्टर की स्केल की गई सामग्री)


आधार रजिस्टर में एक सरणी या वेक्टर डेटा संरचना का प्रारंभ पता हो सकता है, और सूचकांक में आवश्यक एक विशेष सरणी तत्व की ऑफसेट हो सकती है।
आधार रजिस्टर में सरणी या वेक्टर डेटा संरचना का प्रारंभ पता हो सकता है, और सूचकांक में आवश्यक एक विशेष सरणी तत्व की ऑफसेट हो सकती है।


यह एड्रेसिंग मोड प्रत्येक सरणी तत्व के आकार की अनुमति देने के लिए इंडेक्स रजिस्टर में मान को गतिशील रूप से मापता है, उदा। यदि सरणी तत्व डबल परिशुद्धता फ़्लोटिंग-पॉइंट संख्याएं हैं जो प्रत्येक 8 बाइट्स पर कब्जा कर रही हैं तो प्रभावी पता गणना में उपयोग किए जाने से पहले इंडेक्स रजिस्टर में मान 8 से गुणा किया जाता है। स्केल फैक्टर आम तौर पर दो की शक्ति होने तक ही सीमित होता है, ताकि गुणन के बजाय बिट शिफ्ट का उपयोग किया जा सके।
यह एड्रेसिंग मोड प्रत्येक सरणी तत्व के आकार की अनुमति देने के लिए इंडेक्स रजिस्टर में मान को गतिशील रूप से मापता है, उदा। यदि सरणी तत्व डबल परिशुद्धता फ़्लोटिंग-पॉइंट संख्याएं हैं जो प्रत्येक 8 बाइट्स पर कब्जा कर रही हैं तो प्रभावी पता गणना में उपयोग किए जाने से पहले इंडेक्स रजिस्टर में मान 8 से गुणा किया जाता है। स्केल फैक्टर सामान्य रूप से दो की शक्ति होने तक ही सीमित होता है, ताकि गुणन के बजाय स्थानांतरण का उपयोग किया जा सके।


=== अप्रत्यक्ष पंजीकृत करें ===
=== अप्रत्यक्ष पंजीकृत करें ===
Line 273: Line 266:
     (प्रभावी पता = आधार रजिस्टर की सामग्री)
     (प्रभावी पता = आधार रजिस्टर की सामग्री)


कुछ कंप्यूटरों में यह एक विशिष्ट एड्रेसिंग मोड के रूप में होता है। कई कंप्यूटर 0 के ऑफ़सेट मान के साथ बस बेस प्लस ऑफ़सेट का उपयोग करते हैं। उदाहरण के लिए, (A7)
कुछ कंप्यूटरों में यह विशिष्ट एड्रेसिंग मोड के रूप में होता है। कई कंप्यूटर 0 के ऑफ़सेट मान के साथ बस बेस प्लस ऑफ़सेट का उपयोग करते हैं। उदाहरण के लिए, (A7)


=== ऑटोइनक्रिकमेंट अप्रत्यक्ष पंजीकृत करें ===
=== ऑटोइनक्रिकमेंट अप्रत्यक्ष पंजीकृत करें ===
Line 282: Line 275:
     (प्रभावी पता = आधार रजिस्टर की सामग्री)
     (प्रभावी पता = आधार रजिस्टर की सामग्री)


प्रभावी पता निर्धारित करने के बाद, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से बढ़ जाता है जिसे एक्सेस किया जाना है। उदाहरण के लिए, (A7)+ एड्रेस रजिस्टर A7 की सामग्री को एक्सेस करेगा, फिर A7 के एड्रेस पॉइंटर को 1 (आमतौर पर 1 शब्द) से बढ़ा देगा। एक लूप के भीतर, इस एड्रेसिंग मोड का उपयोग किसी सरणी या वेक्टर के सभी तत्वों के माध्यम से कदम उठाने के लिए किया जा सकता है।
प्रभावी पता निर्धारित करने के बाद, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से बढ़ जाता है जिसे एक्सेस किया जाना है। उदाहरण के लिए, (A7)+ एड्रेस रजिस्टर A7 की सामग्री को एक्सेस करेगा, फिर A7 के एड्रेस पॉइंटर को 1 (सामान्यत: 1 शब्द) से बढ़ा देगा। एक लूप के भीतर, इस एड्रेसिंग मोड का उपयोग किसी सरणी या वेक्टर के सभी तत्वों के माध्यम से कदम उठाने के लिए किया जा सकता है।


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


कम से कम दो कंप्यूटर आर्किटेक्चर रहे हैं जिनमें इस एड्रेसिंग मोड का उपयोग करने पर इंटरप्ट से पुनर्प्राप्ति के संबंध में कार्यान्वयन की समस्याएं हैं:
कम से कम दो कंप्यूटर वस्तुकला रहे हैं जिनमें इस एड्रेसिंग मोड का उपयोग करने पर इंटरप्ट से पुनर्प्राप्ति के संबंध में कार्यान्वयन की समस्याएं हैं:
* मोटोरोला 68000 (पता 24 बिट्स में दर्शाया गया है)। एक या दो ऑटोइनक्रिकमेंट रजिस्टर ऑपरेंड हो सकते हैं। 68010+ ने बस त्रुटि या पता त्रुटियों पर प्रोसेसर की आंतरिक स्थिति को सहेजकर समस्या का समाधान किया।
* मोटोरोला 68000 (पता 24 बिट्स में दर्शाया गया है)। एक या दो स्वयं वेतन वृद्धि रजिस्टर ऑपरेंड हो सकते हैं। 68010+ ने बस त्रुटि या पता त्रुटियों पर प्रोसेसर की आंतरिक स्थिति को सहेजकर समस्या का समाधान किया।
*दिसंबर वैक्स। 6 ऑटोइनक्रिकमेंट रजिस्टर ऑपरेंड तक हो सकते हैं। प्रत्येक ऑपरेंड एक्सेस दो पेज फॉल्ट का कारण बन सकता है (यदि ऑपरेंड एक पेज बाउंड्री को स्ट्रैडल करने के लिए होता है)। बेशक निर्देश 50 बाइट से अधिक लंबा हो सकता है और एक पृष्ठ सीमा को भी फैला सकता है!
*डीईसी वीएएक्स 6 स्वयं वेतन वृद्धि रजिस्टर ऑपरेंड तक हो सकते हैं। प्रत्येक ऑपरेंड एक्सेस दो पेज फॉल्ट का कारण बन सकता है (यदि ऑपरेंड एक पेज बाउंड्री को स्ट्रैडल करने के लिए होता है)। बेशक निर्देश 50 बाइट से अधिक लंबा हो सकता है और पृष्ठ सीमा को भी फैला सकता है।


=== ऑटोडेक्रिमेंट अप्रत्यक्ष पंजीकृत करें ===
=== ऑटोडेक्रिमेंट अप्रत्यक्ष पंजीकृत करें ===
Line 299: Line 292:
प्रभावी पता निर्धारित करने से पहले, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से घटाया जाता है जिसे एक्सेस किया जाना है।
प्रभावी पता निर्धारित करने से पहले, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से घटाया जाता है जिसे एक्सेस किया जाना है।


लूप के भीतर, इस एड्रेसिंग मोड का उपयोग किसी सरणी या वेक्टर के सभी तत्वों के माध्यम से पीछे की ओर जाने के लिए किया जा सकता है। पिछले एड्रेसिंग मोड (ऑटोइनक्रिकमेंट) के संयोजन के साथ इस मोड का उपयोग करके एक स्टैक को लागू किया जा सकता है।
लूप के भीतर, इस एड्रेसिंग मोड का उपयोग किसी सरणी या वेक्टर के सभी तत्वों के माध्यम से पीछे की ओर जाने के लिए किया जा सकता है। पिछले एड्रेसिंग मोड (स्वयं वेतन वृद्धि) के संयोजन के साथ इस मोड का उपयोग करके स्टैक को लागू किया जा सकता है।


#Register autoincrement indirect के अंतर्गत दुष्प्रभावों की चर्चा देखें।
#अप्रत्यक्ष रूप से स्वत: वेतन वृद्धि के अंतर्गत दुष्प्रभावों की चर्चा देखें।


=== स्मृति अप्रत्यक्ष ===
=== स्मृति अप्रत्यक्ष ===
इस आलेख में उल्लिखित किसी भी एड्रेसिंग मोड में अप्रत्यक्ष एड्रेसिंग को इंगित करने के लिए एक अतिरिक्त बिट हो सकता है, यानी कुछ मोड का उपयोग करके गणना की गई पता वास्तव में एक स्थान का पता है (आमतौर पर एक पूर्ण शब्द (डेटा प्रकार)) जिसमें वास्तविक प्रभावी पता होता है .
इस आलेख में उल्लिखित किसी भी एड्रेसिंग मोड में अप्रत्यक्ष एड्रेसिंग को इंगित करने के लिए अतिरिक्त बिट हो सकता है, यानी कुछ मोड का उपयोग करके गणना की गई पता वास्तव में एक स्थान का पता है (सामान्यत: पूर्ण शब्द) जिसमें वास्तविक प्रभावी पता होता है .


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


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


===पीसी-रिश्तेदार ===
===पीसी-पूर्ण ===
     +----------+----------+--------------+---------------------+
     +----------+----------+--------------+---------------------+
     | लोड | reg1 | आधार = पीसी | ऑफसेट |
     | लोड | reg1 | आधार = पीसी | ऑफसेट |
Line 318: Line 311:
     (प्रभावी पता = पीसी + ऑफसेट)
     (प्रभावी पता = पीसी + ऑफसेट)


पीसी-रिश्तेदार एड्रेसिंग मोड का उपयोग वर्तमान निर्देश से थोड़ी दूरी पर प्रोग्राम मेमोरी में संग्रहीत मूल्य के साथ एक रजिस्टर लोड करने के लिए किया जा सकता है। इसे बेस प्लस ऑफ़सेट एड्रेसिंग मोड के एक विशेष मामले के रूप में देखा जा सकता है, जो प्रोग्राम काउंटर (पीसी) को बेस रजिस्टर के रूप में चुनता है।
पीसी - पूर्ण एड्रेसिंग मोड का उपयोग वर्तमान निर्देश से थोड़ी दूरी पर प्रोग्राम मेमोरी में संग्रहीत मूल्य के साथ रजिस्टर लोड करने के लिए किया जा सकता है। इसे बेस प्लस ऑफ़सेट एड्रेसिंग मोड के एक विशेष मामले के रूप में देखा जा सकता है, जो प्रोग्राम काउंटर (पीसी) को बेस रजिस्टर के रूप में चुनता है।


कुछ सीपीयू ऐसे हैं जो पीसी-सापेक्ष डेटा संदर्भों का समर्थन करते हैं। ऐसे सीपीयू में शामिल हैं:
कुछ सीपीयू ऐसे हैं जो पीसी- पूर्ण डेटा संदर्भों का समर्थन करते हैं। ऐसे सीपीयू में शामिल हैं


एमओएस 6502 और इसके डेरिवेटिव ने सभी शाखाओं (कंप्यूटर विज्ञान) के लिए सापेक्ष पते का इस्तेमाल किया। केवल इन निर्देशों ने इस मोड का इस्तेमाल किया, जंप ने कई अन्य एड्रेसिंग मोड का इस्तेमाल किया।
एमओएस 6502 और इसके डेरिवेटिव ने सभी शाखाओं के लिए पूर्ण पते का इस्तेमाल किया। केवल इन निर्देशों ने इस मोड का इस्तेमाल किया, जंप ने कई अन्य एड्रेसिंग मोड का इस्तेमाल किया।


x86-64 आर्किटेक्चर और 64-बिट ARMv8-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 में आरआईपी-रिश्तेदार और एआरएमवी 8-में शाब्दिक कहा जाता है। मोटोरोला 6809 एक पीसी-रिश्तेदार एड्रेसिंग मोड का भी समर्थन करता है।
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 पीसी - पूर्ण एड्रेसिंग मोड का भी समर्थन करता है।


PDP-11 आर्किटेक्चर, VAX आर्किटेक्चर और 32-बिट ARM आर्किटेक्चर पीसी को रजिस्टर फाइल में रखते हुए पीसी-रिश्तेदार एड्रेसिंग का समर्थन करते हैं।
पीडीपी -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>
यह सूची किसी भी तरह से पूर्ण नहीं है; समय-समय पर कई अन्य दिलचस्प और अजीबोगरीब एड्रेसिंग मोड का इस्तेमाल किया गया है, उदा। निरपेक्ष-ऋण-तार्किक-या दो या तीन सूचकांक रजिस्टर।<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>


=== बहु-स्तरीय स्मृति अप्रत्यक्ष ===
यदि शब्द का आकार पते से बड़ा है, तो मेमोरी-अप्रत्यक्ष संबोधन के लिए संदर्भित शब्द में अन्य मेमोरी अप्रत्यक्ष चक्र को इंगित करने के लिए अप्रत्यक्ष ध्वज सेट हो सकता है। इस ध्वज को अप्रत्यक्ष बिट के रूप में संदर्भित किया जाता है, और परिणामी सूचक टैग किया हुआ सूचक होता है, अप्रत्यक्ष बिट टैगिंग चाहे वह प्रत्यक्ष सूचक हो या अप्रत्यक्ष सूचक। यह सुनिश्चित करने के लिए देखभाल की आवश्यकता है कि अप्रत्यक्ष पतों की श्रृंखला स्वयं को संदर्भित नहीं करती है, यदि ऐसा होता है, तो किसी पते को हल करने का प्रयास करते समय अनंत लूप प्राप्त कर सकता है।


==={{anchor|multilevel memory indirect}}बहु स्तरीय स्मृति अप्रत्यक्ष ===
आईबीएम 1620, डेटा जनरल नोवा, एचपी 2100 श्रृंखला, और एनएआर2 प्रत्येक में ऐसी बहु-स्तरीय मेमोरी अप्रत्यक्ष होती है, और इस तरह के अनंत पता गणना लूप में प्रवेश कर सकती है। नोवा पर मेमोरी इनडायरेक्ट एड्रेसिंग मोड ने थ्रेडेड कोड के आविष्कार को प्रभावित किया।
यदि शब्द का आकार पते से बड़ा है, तो स्मृति-अप्रत्यक्ष संबोधन के लिए संदर्भित शब्द में एक अन्य स्मृति अप्रत्यक्ष चक्र को इंगित करने के लिए एक अप्रत्यक्ष ध्वज सेट हो सकता है। इस ध्वज को एक अप्रत्यक्ष बिट के रूप में संदर्भित किया जाता है, और परिणामी सूचक एक टैग किया हुआ सूचक होता है, अप्रत्यक्ष बिट टैगिंग चाहे वह प्रत्यक्ष सूचक हो या अप्रत्यक्ष सूचक। यह सुनिश्चित करने के लिए देखभाल की आवश्यकता है कि अप्रत्यक्ष पतों की श्रृंखला स्वयं को संदर्भित नहीं करती है; यदि ऐसा होता है, तो किसी पते को हल करने का प्रयास करते समय एक अनंत लूप प्राप्त कर सकता है।


आईबीएम 1620, डेटा जनरल नोवा, एचपी 2100 श्रृंखला, और एनएआर 2 प्रत्येक में ऐसी बहु-स्तरीय मेमोरी अप्रत्यक्ष है, और इस तरह के एक अनंत पता गणना लूप में प्रवेश कर सकती है।
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> इसलिए, अप्रत्यक्ष एड्रेस लूप डिवाइस सर्विस रूटीन के निष्पादन को नहीं रोकेगा, जिसमें कोई भी प्रीमेशन प्रीमेप्टिव मल्टीटास्किंग शेड्यूलर का टाइम-स्लाइस एक्सपायरी हैंडलर शामिल है। लूपिंग निर्देश को किसी अन्य कंप्यूट-बाउंड जॉब की तरह माना जाएगा।
नोवा पर मेमोरी इनडायरेक्ट एड्रेसिंग मोड ने थ्रेडेड कोड के आविष्कार को प्रभावित किया#थ्रेडेड कोड का विकास।
 
18-बिट कंप्यूटिंग के साथ डीईसी पीडीपी -10 कंप्यूटर | 18-बिट पते और 36-बिट कंप्यूटिंग | 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 380: 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) का उपयोग करने की रही है। इसका मतलब यह था कि निर्देश को पंजीकृत करने के लिए एक अलग ऐड रजिस्टर की कोई आवश्यकता नहीं थी - कोई केवल निर्देश को पंजीकृत करने के लिए ऐड मेमोरी का उपयोग कर सकता था।
  }}, प्रवृत्ति केवल निचले सिरे पर रजिस्टर पते का उपयोग करने और मेमोरी के केवल पहले 8 या 16 शब्दों (जैसे आईसीटी 1900 श्रृंखला, डीईसी पीडीपी -10) का उपयोग करने के लिए कर रही है। इसका मतलब यह था कि निर्देश को पंजीकृत करने के लिए अलग ऐड रजिस्टर की कोई आवश्यकता नहीं थी - कोई भी केवल निर्देश को पंजीकृत करने के लिए ऐड मेमोरी का उपयोग कर सकता था।


पीडीपी -10 के शुरुआती मॉडल के मामले में, जिसमें कोई कैश मेमोरी नहीं थी, मेमोरी के पहले कुछ शब्दों में लोड किया गया एक तंग आंतरिक लूप (जहां स्थापित होने पर तेज़ रजिस्टरों को संबोधित किया जा सकता था) इससे कहीं ज्यादा तेजी से चलता था चुंबकीय कोर मेमोरी
पीडीपी -10 के शुरुआती मॉडल के मामले में, जिसमें कोई कैश मेमोरी नहीं थी, मेमोरी के पहले कुछ शब्दों में लोड किया गया एक तंग आंतरिक लूप (जहां स्थापित होने पर तेज़ रजिस्टरों को संबोधित किया जा सकता था) चुंबकीय कोर मेमोरी इससे कहीं ज्यादा तेजी से चलता था


DEC PDP-11 श्रृंखला के बाद के मॉडल ने इनपुट/आउटपुट क्षेत्र में पतों पर रजिस्टरों को मैप किया, लेकिन यह मुख्य रूप से दूरस्थ निदान की अनुमति देने के लिए था। भ्रामक रूप से, 16-बिट रजिस्टरों को लगातार 8-बिट बाइट पते पर मैप किया गया था।
डीईसी पीडीपी -11 श्रृंखला के बाद के मॉडल ने इनपुट/आउटपुट क्षेत्र में पतों पर रजिस्टरों को मैप किया, लेकिन यह मुख्य रूप से दूरस्थ निदान की अनुमति देने के लिए था। भ्रामक रूप से, 16-बिट रजिस्टरों को लगातार 8-बिट बाइट पते पर मैप किया गया था।


=== मेमोरी इनडायरेक्ट और ऑटोइनक्रिकमेंट ===
=== मेमोरी इनडायरेक्ट और ऑटोइनक्रिकमेंट ===
DEC PDP-8 मिनीकंप्यूटर में आठ विशेष स्थान थे (8 से 15 के पते पर)। जब मेमोरी इनडायरेक्ट एड्रेसिंग के माध्यम से एक्सेस किया जाता है, तो ये स्थान उपयोग से पहले स्वचालित रूप से बढ़ जाएंगे।<ref>{{
डीईसी पीडीपी-8 मिनीकंप्यूटर में आठ विशेष स्थान थे (8 से 15 के पते पर)। जब मेमोरी अप्रत्यक्ष पतों के माध्यम से प्रवेश किया जाता है, तो ये स्थान उपयोग से पहले स्वचालित रूप से बढ़ जाएंगे।<ref>{{
Citation
Citation
  | last1 = Jones | first1 = Douglas
  | last1 = Jones | first1 = Douglas
Line 401: 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> जब मेमोरी इनडायरेक्ट एड्रेसिंग के माध्यम से एक्सेस किया जाता है, तो 16 से 23 स्वचालित रूप से उपयोग से पहले वृद्धि होगी, और 24 से 31 स्वचालित रूप से उपयोग से पहले घट जाएगी।
}}</ref> जब मेमोरी अप्रत्यक्ष पतों के माध्यम से प्रवेश किया जाता है, तो 16 से 23 स्वचालित रूप से उपयोग से पहले वृद्धि होगी, और 24 से 31 स्वचालित रूप से उपयोग से पहले घट जाएगी।


=== शून्य पृष्ठ ===
=== शून्य पृष्ठ ===
डाटा जनरल नोवा, मोटोरोला 6800 परिवार, और एमओएस टेक्नोलॉजी 6502 प्रोसेसर के परिवार में बहुत कम आंतरिक रजिस्टर थे। आंतरिक रजिस्टरों के विपरीत अंकगणित और तार्किक निर्देश ज्यादातर स्मृति में मूल्यों के खिलाफ किए गए थे। नतीजतन, कई निर्देशों को स्मृति के लिए दो-बाइट (16-बिट) स्थान की आवश्यकता होती है। यह देखते हुए कि इन प्रोसेसर पर ऑपकोड केवल एक बाइट (8 बिट) लंबाई के थे, मेमोरी एड्रेस कोड आकार का एक महत्वपूर्ण हिस्सा बना सकते हैं।
डाटा जनरल नोवा, मोटोरोला 6800 परिवार, और एमओएस टेक्नोलॉजी 6502 प्रोसेसर के परिवार में बहुत कम आंतरिक रजिस्टर थे। आंतरिक रजिस्टरों के विपरीत अंकगणित और तार्किक निर्देश ज्यादातर मेमोरी में मूल्यों के खिलाफ किए गए थे। फलस्वरूप, कई निर्देशों को मेमोरी के लिए दो-बाइट (16-बिट) स्थान की आवश्यकता होती है। यह देखते हुए कि इन प्रोसेसर पर ऑपकोड केवल एक बाइट (8 बिट) लंबाई के थे, मेमोरी एड्रेस कोड आकार का एक महत्वपूर्ण हिस्सा बना सकते हैं।


इन प्रोसेसर के डिजाइनरों में एक आंशिक उपाय शामिल था जिसे शून्य पृष्ठ एड्रेसिंग के रूप में जाना जाता है। मेमोरी के शुरुआती 256 बाइट्स ($0000 - $00FF; a.k.a., पेज 0) को एक-बाइट पूर्ण या अनुक्रमित मेमोरी एड्रेस का उपयोग करके एक्सेस किया जा सकता है। इसने निर्देश निष्पादन समय को एक घड़ी चक्र और निर्देश लंबाई को एक बाइट से कम कर दिया। इस क्षेत्र में अक्सर उपयोग किए जाने वाले डेटा को संग्रहीत करके, कार्यक्रमों को छोटा और तेज़ बनाया जा सकता है।
इन प्रोसेसर के डिजाइनरों में आंशिक उपाय शामिल था जिसे "शून्य पृष्ठ" पतों के रूप में जाना जाता है। मेमोरी के शुरुआती 256 बाइट्स ($0000 - $00FF a.k.a., पेज "0") को एक - बाइट पूर्ण या अनुक्रमित मेमोरी एड्रेस का उपयोग करके प्रवेश किया जा सकता है। इसने निर्देश निष्पादन समय को एक घड़ी चक्र और निर्देश लंबाई को एक बाइट से कम कर दिया। इस क्षेत्र में अक्सर उपयोग किए जाने वाले डेटा को संग्रहीत करके, कार्यक्रमों को छोटा और तेज़ बनाया जा सकता है।


नतीजतन, शून्य पृष्ठ का उपयोग रजिस्टर फ़ाइल के समान ही किया गया था। हालांकि, कई प्रणालियों पर, इसके परिणामस्वरूप ऑपरेटिंग सिस्टम और उपयोगकर्ता प्रोग्राम द्वारा शून्य पृष्ठ मेमोरी क्षेत्र का उच्च उपयोग किया गया, जिसने इसके उपयोग को सीमित कर दिया क्योंकि खाली स्थान सीमित था।
फलस्वरूप, शून्य पृष्ठ का उपयोग रजिस्टर फ़ाइल के समान ही किया गया था। हालांकि, कई प्रणालियों पर, इसके परिणामस्वरूप ऑपरेटिंग प्रणाली और उपयोगकर्ता प्रोग्राम द्वारा शून्य पृष्ठ मेमोरी क्षेत्र का उच्च उपयोग किया गया, मुक्त स्थान सीमित होने के कारण उपयोग को सीमित कर दिया था।


=== सीधा पृष्ठ ===
=== सीधा पृष्ठ ===
WDC 65816, CSG 65CE02, और Motorola 6809 सहित कई लेट मॉडल 8-बिट प्रोसेसर में शून्य पेज एड्रेस मोड को बढ़ाया गया था। नया मोड, जिसे डायरेक्ट पेज एड्रेसिंग के रूप में जाना जाता है, ने 256-बाइट शून्य को स्थानांतरित करने की क्षमता को जोड़ा। मेमोरी की शुरुआत से पेज मेमोरी विंडो (ऑफ़सेट पता $0000) मेमोरी के पहले 64 KB के भीतर एक नए स्थान पर।
डब्ल्यूडीसी 65816, सीएसजी 65सीई02, और मोटोरोला 6809 सहित कई लेट मॉडल 8-बिट प्रोसेसर में शून्य पेज एड्रेस मोड को बढ़ाया गया था। नया मोड, जिसे "डायरेक्ट पेज" एड्रेसिंग के रूप में जाना जाता है, ने 256-बाइट शून्य को स्थानांतरित करने की क्षमता को जोड़ा। मेमोरी की शुरुआत से पेज मेमोरी विंडो (ऑफ़सेट पता $0000) मेमोरी के पहले 64 KB के भीतर एक नए स्थान पर।


CSG 65CE02 ने नए बेस पेज (B) रजिस्टर में 8-बिट ऑफ़सेट मान को स्टोर करके मेमोरी के पहले 64 KB के भीतर किसी भी 256-बाइट सीमा में सीधे पृष्ठ को स्थानांतरित करने की अनुमति दी। मोटोरोला 6809 अपने डायरेक्ट पेज (डीपी) रजिस्टर के साथ भी ऐसा ही कर सकता है। WDC 65816 एक कदम और आगे बढ़ गया और नए डायरेक्ट (D) रजिस्टर में 16-बिट ऑफ़सेट मान को स्टोर करके मेमोरी के पहले 64 KB के भीतर डायरेक्ट पेज को किसी भी स्थान पर ले जाने की अनुमति दी।
सीएसजी 65सीई02 ने नए बेस पेज (बी) रजिस्टर में 8-बिट ऑफ़सेट मान को स्टोर करके पहले 64 KB मेमोरी के भीतर किसी भी 256-बाइट सीमा में सीधे पृष्ठ को स्थानांतरित करने की अनुमति दी। मोटोरोला 6809 अपने डायरेक्ट पेज (डीपी) रजिस्टर के साथ भी ऐसा ही कर सकता है। डब्ल्यूडीसी 65816 एक कदम और आगे बढ़ गया और नए डायरेक्ट (डी) रजिस्टर में 16-बिट ऑफ़सेट मान को स्टोर करके मेमोरी के पहले 64 KB के भीतर डायरेक्ट पेज को किसी भी स्थान पर ले जाने की अनुमति दी।


परिणामस्वरूप, अधिक संख्या में प्रोग्राम उन्नत प्रत्यक्ष पृष्ठ एड्रेसिंग मोड बनाम लीगेसी प्रोसेसर का उपयोग करने में सक्षम थे जिसमें केवल शून्य पृष्ठ एड्रेसिंग मोड शामिल था।
परिणामस्वरूप, अधिक संख्या में प्रोग्राम उन्नत प्रत्यक्ष पृष्ठ एड्रेसिंग मोड बनाम लीगेसी प्रोसेसर का उपयोग करने में सक्षम थे जिसमें केवल शून्य पृष्ठ एड्रेसिंग मोड शामिल था।


=== सीमा जांच के साथ स्केल इंडेक्स ===
=== सीमा जांच के साथ स्केल इंडेक्स ===
यह स्केल किए गए इंडेक्स एड्रेसिंग के समान है, सिवाय इसके कि निर्देश में दो अतिरिक्त ऑपरेंड (आमतौर पर स्थिरांक) होते हैं, और हार्डवेयर जांचता है कि इंडेक्स वैल्यू इन सीमाओं के बीच है।
यह स्केल किए गए सूची पतों के समान है, सिवाय इसके कि निर्देश में दो अतिरिक्त ऑपरेंड (सामान्यत: स्थिरांक) होते हैं, और हार्डवेयर जांचता है कि सूची वैल्यू इन सीमाओं के बीच है।


एक अन्य भिन्नता वेक्टर डिस्क्रिप्टर का उपयोग सीमा को बनाए रखने के लिए करती है; इससे गतिशील रूप से आवंटित सरणी को कार्यान्वित करना आसान हो जाता है और अभी भी पूर्ण सीमा जांच होती है।
एक अन्य भिन्नता वेक्टर डिस्क्रिप्टर का उपयोग सीमा को बनाए रखने के लिए करती है इससे गतिशील रूप से आवंटित सरणी को कार्यान्वित करना आसान हो जाता है और अभी भी पूर्ण सीमा जांच होती है।


=== शब्द के भीतर बिट फ़ील्ड के लिए अप्रत्यक्ष ===
=== शब्द के भीतर बिट फ़ील्ड के लिए अप्रत्यक्ष ===
कुछ कंप्यूटरों में शब्दों के भीतर सबफ़ील्ड के लिए विशेष अप्रत्यक्ष एड्रेसिंग मोड थे।
कुछ कंप्यूटरों में शब्दों के भीतर उपक्षेत्रों के लिए विशेष अप्रत्यक्ष एड्रेसिंग मोड थे।


जीई-600 श्रृंखला|जीई/हनीवेल 600 श्रृंखला वर्ण अप्रत्यक्ष शब्द को संबोधित करते हुए इसके 36-बिट कंप्यूटिंग|36-बिट शब्द के भीतर या तो 6-बिट या 9-बिट वर्ण फ़ील्ड निर्दिष्ट करता है।
जीई/हनीवेल-600 श्रृंखला वर्ण अप्रत्यक्ष शब्द को संबोधित करते हुए इसके 36-बिट शब्द के भीतर या तो 6-बिट या 9-बिट वर्ण फ़ील्ड निर्दिष्ट करता है।


डीईसी पीडीपी -10, 36-बिट में भी विशेष निर्देश थे, जो स्मृति को 1 बिट से 36 बिट तक किसी भी आकार के निश्चित आकार के बिट फ़ील्ड या बाइट्स के अनुक्रम के रूप में माना जा सकता था। मेमोरी में एक-शब्द अनुक्रम डिस्क्रिप्टर, जिसे बाइट पॉइंटर कहा जाता है, अनुक्रम के भीतर वर्तमान शब्द पता, एक शब्द के भीतर एक बिट स्थिति और प्रत्येक बाइट का आकार रखता है।
डीईसी पीडीपी -10, 36-बिट में भी विशेष निर्देश थे, जो मेमोरी को 1 बिट से 36 बिट तक किसी भी आकार के निश्चित आकार के बिट फ़ील्ड या बाइट्स के अनुक्रम के रूप में माना जा सकता था। मेमोरी में एक-शब्द अनुक्रम डिस्क्रिप्टर, जिसे "बाइट सूचक" कहा जाता है, अनुक्रम के भीतर वर्तमान शब्द पता, एक शब्द के भीतर बिट स्थिति और प्रत्येक बाइट का आकार रखता है।


इस डिस्क्रिप्टर के माध्यम से बाइट्स को लोड और स्टोर करने के लिए निर्देश मौजूद थे, और डिस्क्रिप्टर को अगले बाइट पर इंगित करने के लिए बढ़ाने के लिए (बाइट्स शब्द सीमाओं में विभाजित नहीं थे)। अधिकांश डीईसी सॉफ़्टवेयर ने प्रति शब्द पांच 7-बिट बाइट्स (सादे ASCII वर्ण) का उपयोग किया, जिसमें एक बिट प्रति शब्द अप्रयुक्त था। सी (प्रोग्रामिंग भाषा) के कार्यान्वयन को प्रति शब्द चार 9-बिट बाइट्स का उपयोग करना पड़ा, क्योंकि सी में 'मॉलोक' फ़ंक्शन मानता है कि एक इंट का आकार चार के आकार का कुछ गुणक है;<ref>[http://www.codingunit.com/c-reference-stdlib-h-function-malloc "C Reference: function malloc()"]</ref> वास्तविक गुणक सिस्टम-निर्भर संकलन-समय ऑपरेटर आकार द्वारा निर्धारित किया जाता है।
इस वर्णनकर्ता के माध्यम से बाइट्स को लोड और स्टोर करने के लिए निर्देश मौजूद थे, और वर्णनकर्ता को अगले बाइट पर इंगित करने के लिए बढ़ाने के लिए (बाइट्स शब्द सीमाओं में विभाजित नहीं थे)। अधिकांश डीईसी सॉफ़्टवेयर ने प्रति शब्द पांच 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>, इस प्रकार अनुक्रमित जम्प का प्रभाव पैदा करता है। ध्यान दें कि निर्देश ऑन-द-फ्लाई संशोधित किया गया है और मेमोरी में अपरिवर्तित रहता है, यानी यह स्वयं-संशोधित कोड नहीं है। यदि अगले निर्देश में जोड़ा जा रहा मूल्य काफी बड़ा था, तो यह उस निर्देश के साथ-साथ पते के ऑपकोड को भी संशोधित कर सकता था।
इस प्रकार, अप्रत्यक्ष कूद, या रजिस्टरों के माध्यम से कूदना, निर्देश सेट में समर्थित नहीं थे। इसके बजाय, वर्तमान मेमोरी शब्द की सामग्री को अगले निर्देश में जोड़ने का निर्देश दिया जा सकता है। निष्पादित किए जाने वाले अगले निर्देश में एक छोटा मान जोड़ना, उदाहरण के लिए, a change को बदल सकता है <code>JUMP 0</code> में <code>JUMP 20</code>, इस प्रकार एक अनुक्रमित छलांग का प्रभाव पैदा करता है। ध्यान दें कि निर्देश ऑन-द-फ्लाई संशोधित किया गया है और स्मृति में अपरिवर्तित रहता है, यानी यह स्वयं-संशोधित कोड नहीं है। यदि अगले निर्देश में जोड़ा जा रहा मूल्य काफी बड़ा था, तो यह उस निर्देश के साथ-साथ पते के ऑपकोड को भी संशोधित कर सकता था।


==शब्दावली==
==शब्दावली==
{{glossary}}
{{glossary}}
{{term|Indirect}}{{defn|Data referred to through a [[pointer (computing)|pointer]] or [[memory address|address]].}}
{{term|अप्रत्यक्ष}}{{defn|एक सूचक या पते के माध्यम से संदर्भित डेटा।
{{term|Immediate}}{{defn|Data embedded directly in an [[Instruction (computing)|instruction]] or command list.}}
}}
{{term|Index}}{{defn|A dynamic offset, typically held in an [[index register]], possibly scaled by an object size.}}
{{term|तत्काल}}{{defn|निर्देश या आदेश सूची में सीधे एम्बेड किया गया डेटा।
{{term|Offset}}{{defn|An immediate value added to an address; e.g., corresponding to structure field access in the [[C programming language]].}}
}}
{{term|Relative}}{{defn|An address formed relative to another address.}}
{{term|अनुक्रमणिका}}{{defn| गतिशील ऑफसेट, जिसे सामान्यत: एक इंडेक्स रजिस्टर में रखा जाता है, संभवतः किसी वस्तु के आकार से बढ़ाया जाता है।}}
{{term|Post increment}}{{defn|The stepping of an address past data used, similar to <code>*p++</code> in the [[C programming language]], used for [[stack pop]] operations.}}
{{term|प्रतिसंतुलन}}{{defn| पते पर तत्काल मूल्य जोड़ा गया उदाहरण के लिए, सी प्रोग्रामिंग भाषा में संरचना क्षेत्र पहुंच के अनुरूप।}}
{{term|Pre decrement}}{{defn|The decrementing of an address prior to use, similar to <code>*--p</code> in the [[C programming language]], used for [[stack push]] operations.}}
{{term|सापेक्ष}}{{defn|एक पता दूसरे पते के सापेक्ष बनता है।}}
{{term|पोस्ट वेतन वृद्धि}}{{defn|उपयोग किए गए पिछले डेटा के पते का चरण, सी प्रोग्रामिंग भाषा में *p++ के समान, स्टैक पॉप संचालन के लिए उपयोग किया जाता है।
}}
{{term|पूर्व वेतन वृद्धि
}}{{defn|उपयोग से पहले एक पते की कमी, सी प्रोग्रामिंग भाषा में *--p के समान, स्टैक पुश ऑपरेशंस के लिए उपयोग की जाती है।
}}
{{glossary end}}
{{glossary end}}


Line 449: Line 443:
==यह भी देखें==
==यह भी देखें==
*निर्देश सेट वास्तुकला
*निर्देश सेट वास्तुकला
*पता बस
*बस पता  


==टिप्पणियाँ==
==टिप्पणियाँ==
Line 466: 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: मशीन कोड]]
[[Category: विधानसभा भाषाएं]]


[[Category: Machine Translated Page]]
[[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 बाइट से अधिक लंबा हो सकता है और पृष्ठ सीमा को भी फैला सकता है।

ऑटोडेक्रिमेंट अप्रत्यक्ष पंजीकृत करें

   +----------+-----+-----+
   | लोड | रेग | आधार|
   +----------+-----+-----+

   (प्रभावी पता = आधार रजिस्टर की नई सामग्री)

प्रभावी पता निर्धारित करने से पहले, आधार रजिस्टर में मूल्य उस डेटा आइटम के आकार से घटाया जाता है जिसे एक्सेस किया जाना है।

लूप के भीतर, इस एड्रेसिंग मोड का उपयोग किसी सरणी या वेक्टर के सभी तत्वों के माध्यम से पीछे की ओर जाने के लिए किया जा सकता है। पिछले एड्रेसिंग मोड (स्वयं वेतन वृद्धि) के संयोजन के साथ इस मोड का उपयोग करके स्टैक को लागू किया जा सकता है।

  1. अप्रत्यक्ष रूप से स्वत: वेतन वृद्धि के अंतर्गत दुष्प्रभावों की चर्चा देखें।

स्मृति अप्रत्यक्ष

इस आलेख में उल्लिखित किसी भी एड्रेसिंग मोड में अप्रत्यक्ष एड्रेसिंग को इंगित करने के लिए अतिरिक्त बिट हो सकता है, यानी कुछ मोड का उपयोग करके गणना की गई पता वास्तव में एक स्थान का पता है (सामान्यत: पूर्ण शब्द) जिसमें वास्तविक प्रभावी पता होता है .

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

कुछ शुरुआती मिनीकंप्यूटर (जैसे डीईसी पीडीपी-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 के समान, स्टैक पुश ऑपरेशंस के लिए उपयोग की जाती है।


यह भी देखें

  • निर्देश सेट वास्तुकला
  • बस पता

टिप्पणियाँ

  1. Condensor storage units for 650:
    8000 Console switches
    8001 Distributor
    8002 Lower accumulator
    8003 Upper accumulator
  2. 2.0 2.1 Only valid from console
  3. 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]


संदर्भ

  1. 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.
  2. 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 ...
  3. Dr. Jon Squire. "Lecture 19, Pipelining Data Forwarding". CS411 Selected Lecture Notes.
  4. "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.
  5. John Paul Shen, Mikko H. Lipasti (2004). Modern Processor Design. McGraw-Hill Professional. ISBN 9780070570641.
  6. 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.
  7. 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
  8. 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.
  9. IBM System/360 Principles of Operation (PDF). IBM. September 1968. p. 135. A22-6821-7. Retrieved 12 July 2019.
  10. z/Architecture Principles of Operation (PDF). IBM. September 2017. pp. 7–266. SA22-7832-11. Retrieved 12 July 2019.
  11. Max Maxfield. "Building a 4-Bit Computer: Assembly Language and Assembler". Section "Addressing modes". 2019.
  12. Kong, Shing; Patterson, David (1995). "Instruction set design". Slide 27.
  13. Koopman, Philip (1989). "Architecture of the RTX 32P". Stack Computers.
  14. "Introduction to ARMv8 64-bit Architecture". UIC Academy. quequero.org. 9 April 2014.
  15. 704 Electronic Data-Processing Machine Manual of Operation (PDF). IBM. 1955. pp. 10–11.
  16. Reference Manual IBM 7090 Data Processing System (PDF). IBM. 1962. pp. 9–10.
  17. 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 ?"
  18. "Storage" (PDF). 650 magnetic drum data-processing machine - manual of operation (PDF). June 1955. p. 9. 22-6060-2. Retrieved March 14, 2022.
  19. "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.
  20. Jones, Douglas, Reference Instructions on the PDP-8, retrieved 1 July 2013
  21. Friend, Carl, Data General NOVA Instruction Set Summary, retrieved 1 July 2013
  22. "C Reference: function malloc()"
  23. 23.0 23.1 Dave Brooks. "Some Old Computers".
  24. Bill Purvis. "Some details of the Elliott 803B hardware"


इस पृष्ठ में अनुपलब्ध आंतरिक कड़ियों की सूची

बाहरी संबंध