एक-निर्देश सेट कंप्यूटर: Difference between revisions
No edit summary |
No edit summary |
||
(6 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
{{Distinguish|1-बिट कंप्यूटिंग}} | {{Distinguish|1-बिट कंप्यूटिंग}} | ||
एक-निर्देश सेट कंप्यूटर (ओआईएससी), जिसे कभी-कभी परम [[RISC|आरआईएससी]] (यूआरआईएससी) कहा जाता है । [[अमूर्त मशीन|सार मशीन]] है जो केवल | एक-निर्देश सेट कंप्यूटर (ओआईएससी), जिसे कभी-कभी परम [[RISC|आरआईएससी]] (यूआरआईएससी) कहा जाता है । [[अमूर्त मशीन|सार मशीन]] है जो केवल निर्देश का उपयोग करती है। [[मशीन भाषा]] [[opcode|ओपकोड]] की आवश्यकता को समाप्त करना होता है।<ref name=urisc /><ref name=caamp /><ref name=agut /> एकल निर्देश के विवेकपूर्ण विकल्प और अनंत संसाधनों के साथ, ओआईएससी पारंपरिक कंप्यूटरों की तरह ही सार्वभौमिक कंप्यूटर होने में सक्षम है । जिसमें कई निर्देश हैं।<ref name=caamp />{{rp|55}} ओआईएससी को कंप्यूटर आर्किटेक्चर सिखाने में सहायता के रूप में अनुशंसित किया गया है । <ref name=urisc />{{rp|327}}<ref name=caamp /> और संरचनात्मक कंप्यूटिंग अनुसंधान में कम्प्यूटेशनल मॉडल के रूप में उपयोग किया गया है। <ref name=agut /> पहला [[कार्बन नैनोट्यूब कंप्यूटर]] [[1-बिट कंप्यूटिंग]] 1-बिट वन-इंस्ट्रक्शन सेट कंप्यूटर है (और इसमें केवल 178 ट्रांजिस्टर हैं)।<ref>{{cite web | url=https://www.bbc.co.uk/news/science-environment-24232896 | title=कार्बन नैनोट्यूब से बने पहले कंप्यूटर का अनावरण किया गया| publisher=BBC | date=26 September 2013 | accessdate=26 September 2013}}</ref> | ||
== मशीन आर्किटेक्चर == | == मशीन आर्किटेक्चर == | ||
[[ट्यूरिंग पूर्णता]] | [[ट्यूरिंग पूर्णता]] मॉडल में, प्रत्येक मेमोरी स्थान इच्छानुसार पूर्णांक संग्रहीत कर सकता है, और मॉडल पर निर्भर करता है । इच्छानुसार कई स्थान हो सकते हैं । ऐसे पूर्णांकों के अनुक्रम के रूप में निर्देश स्वयं मेमोरी में रहते हैं। | ||
सार्वभौम कंप्यूटरों का | सार्वभौम कंप्यूटरों का वर्ग उपस्थित है । जिसमें बिट मैनिपुलेटिंग पर आधारित एकल निर्देश होता है । जैसे [[बिट नकल]] करना या बिट कों उलटना है। चूँकि उनका मेमोरी मॉडल परिमित है । जैसा कि वास्तविक कंप्यूटरों में उपयोग की जाने वाली मेमोरी संरचना है । वे बिट मैनिपुलेशन मशीनें ट्यूरिंग मशीनों के अतिरिक्त वास्तविक कंप्यूटरों के समान हैं।<ref name="mazonka">Oleg Mazonka, [http://www.complex-systems.com/pdf/19-3-5.pdf "Bit Copying: The Ultimate Computational Simplicity"], Complex Systems Journal 2011, Vol 19, N3, pp. 263–285</ref> | ||
वर्तमान में ज्ञात ओआईएससी को सामान्यतः तीन व्यापक श्रेणियों में विभाजित किया जा सकता है । | वर्तमान में ज्ञात ओआईएससी को सामान्यतः तीन व्यापक श्रेणियों में विभाजित किया जा सकता है । | ||
Line 22: | Line 18: | ||
==== फ्लिपजंप ==== | ==== फ्लिपजंप ==== | ||
[https://esolangs.org/wiki/FlipJump फ्लिपजंप] मशीन में 1 निर्देश है ।, a;b - बिट a को फ़्लिप करता है, फिर b पर जाता | [https://esolangs.org/wiki/FlipJump फ्लिपजंप] मशीन में 1 निर्देश है ।, a;b - बिट a को फ़्लिप करता है, फिर b पर जाता है । यह सबसे ओआईएससी है । किन्तु यह अभी भी उपयोगी है। यह अपने मानक पुस्तकालय की सहायता से गणित/तर्क गणना, ब्रांचिंग, पॉइंटर्स और कॉलिंग फ़ंक्शंस सफलतापूर्वक कर सकता है। | ||
==== बिटबिटजंप ==== | ==== बिटबिटजंप ==== | ||
बिट कॉपी मशीन,<ref name="mazonka" /> बिटबिटजंप कहा जाता है, मेमोरी में | बिट कॉपी मशीन,<ref name="mazonka" /> बिटबिटजंप कहा जाता है, मेमोरी में बिट की प्रतिलिपि बनाता है और निष्पादन को निर्देश के किसी ऑपरेंड द्वारा निर्दिष्ट पते पर बिना शर्त पास करता है। यह प्रक्रिया सार्वभौमिक अभिकलन (अर्थात किसी भी एल्गोरिथ्म को निष्पादित करने और किसी अन्य सार्वभौमिक मशीन की व्याख्या करने में सक्षम होने) में सक्षम होने के लिए निकली है । क्योंकि बिट्स की नकल सशर्त रूप से उस कोड को संशोधित कर सकती है । जिसे बाद में निष्पादित किया जाएगा। | ||
==== टोगा कंप्यूटर ==== | ==== टोगा कंप्यूटर ==== | ||
Line 31: | Line 27: | ||
==== मल्टी-बिट कॉपी करने वाली मशीन ==== | ==== मल्टी-बिट कॉपी करने वाली मशीन ==== | ||
बिटबिटजंप के समान, | बिटबिटजंप के समान, मल्टी-बिट कॉपी करने वाली मशीन एक ही समय में कई बिट्स को कॉपी करती है। इस स्थिति में मेमोरी में पूर्वनिर्धारित जंप टेबल रखने से ट्यूरिंग पूर्णता की समस्या हल हो जाती है। | ||
=== [[परिवहन ट्रिगर वास्तुकला]] === | === [[परिवहन ट्रिगर वास्तुकला]] === | ||
परिवहन ट्रिगर आर्किटेक्चर (टीटीए) | परिवहन ट्रिगर आर्किटेक्चर (टीटीए) रचना है । जिसमें गणना डेटा परिवहन का साइड इफेक्ट है। सामान्यतः, कुछ मेमोरी रजिस्टर (ट्रिगरिंग पोर्ट्स) कॉमन एड्रेस स्पेस के अन्दर असाइन किए गए संचालन को करते हैं । जब निर्देश उन्हें संदर्भित करता है। उदाहरण के लिए, ओआईएससी में एक मेमोरी-टू-मेमोरी कॉपी इंस्ट्रक्शन का उपयोग करते हुए, यह उन पोर्ट्स को ट्रिगर करके किया जाता है । जो अंकगणित करते हैं और इंस्ट्रक्शन पॉइंटर जंप करते हैं । जब उन्हें लिखा जाता है। | ||
=== अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें === | === अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें === | ||
अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें | अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें अंकगणितीय संचालन और सशर्त छलांग का उपयोग करती हैं। पिछले दो यूनिवर्सल कंप्यूटरों की तरह, यह वर्ग भी ट्यूरिंग-पूर्ण है। निर्देश पूर्णांकों पर संचालित होता है । जो मेमोरी में पते भी हो सकते हैं। | ||
वर्तमान में विभिन्न अंकगणितीय परिचालनों के आधार पर इस वर्ग के कई ज्ञात ओआईएससी हैं । | वर्तमान में विभिन्न अंकगणितीय परिचालनों के आधार पर इस वर्ग के कई ज्ञात ओआईएससी हैं । | ||
Line 44: | Line 40: | ||
* डिक्रीमेंट (डीजेएन डिक्रीमेंट और ब्रांच (जंप) यदि नॉनजीरो) <ref name="esolang-djn">{{cite web |url=https://esolangs.org/wiki/DJN_OISC|title=डीजेएन ओआईएससी|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref> | * डिक्रीमेंट (डीजेएन डिक्रीमेंट और ब्रांच (जंप) यदि नॉनजीरो) <ref name="esolang-djn">{{cite web |url=https://esolangs.org/wiki/DJN_OISC|title=डीजेएन ओआईएससी|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref> | ||
*वेतन वृद्धि (पी1eq प्लस 1 और शाखा यदि अन्य मान के समान है)<ref name="esolang-p1eq">{{cite web |url=https://esolangs.org/wiki/P1e|title=P1e|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref> | *वेतन वृद्धि (पी1eq प्लस 1 और शाखा यदि अन्य मान के समान है)<ref name="esolang-p1eq">{{cite web |url=https://esolangs.org/wiki/P1e|title=P1e|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref> | ||
* घटाव ( | * घटाव (सुबलेक, <u>सब</u>ट्रैक्ट और ब्रांच यदि <u>l</u> से या <u>eq</u> शून्य से शून्य)<ref name="mazonka-subleq">{{cite web |url=http://mazonka.com/subleq/index.html |title=सुबेलिया|last=Mazonka|first=Oleg|date=October 2009|access-date=2017-09-16|archive-url=https://web.archive.org/web/20170629094925/http://mazonka.com/subleq/index.html|archive-date=2017-06-29}}</ref><ref name="esolang-subleq">{{cite web |url=https://esolangs.org/wiki/सुबेलिया|title=सुबेलिया|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref> | ||
*घटाना (सुब्लेक, घटाना और शाखा यदि शून्य से कम या उसके समान) <ref name="mazonka-subleq" /> <ref name="esolang-subleq" /> | *घटाना (सुब्लेक, घटाना और शाखा यदि शून्य से कम या उसके समान) <ref name="mazonka-subleq" /> <ref name="esolang-subleq" /> | ||
* सकारात्मक घटाव जब संभव हो, अन्यथा शाखा (अंकगणितीय मशीन) <ref name="melzak"> | * सकारात्मक घटाव जब संभव हो, अन्यथा शाखा (अंकगणितीय मशीन) <ref name="melzak"> | ||
{{cite journal |title=An informal arithmetical approach to computability and computation |author=Z. A. Melzak |date=1961 |journal=[[Canadian Mathematical Bulletin]] |volume=4|issue=3 |pages=279–293 |doi=10.4153/CMB-1961-031-9 |doi-access=free }}</ref> | {{cite journal |title=An informal arithmetical approach to computability and computation |author=Z. A. Melzak |date=1961 |journal=[[Canadian Mathematical Bulletin]] |volume=4|issue=3 |pages=279–293 |doi=10.4153/CMB-1961-031-9 |doi-access=free }}</ref> | ||
== निर्देश प्रकार == | == निर्देश प्रकार == | ||
एकल निर्देश के लिए सामान्य विकल्प हैं: | एकल निर्देश के लिए सामान्य विकल्प हैं: | ||
Line 56: | Line 50: | ||
* नकारात्मक हो तो घटाएं और शाखा दें | * नकारात्मक हो तो घटाएं और शाखा दें | ||
*#अंकगणित यंत्र | *#अंकगणित यंत्र | ||
* | * उल्टा घटाएं और छोड़ें । | ||
* ट्रांसपोर्ट ट्रिगर आर्किटेक्चर (ट्रांसपोर्ट ट्रिगर आर्किटेक्चर के भाग के रूप में उपयोग किया जाता है)<ref name="movfuscator">{{cite web |url=https://github.com/xoreaxeaxeax/movfuscator| title=movfuscator| author=xoreaxeaxeax | website = GitHub | access-date=2022-11-12}}</ref> | * ट्रांसपोर्ट ट्रिगर आर्किटेक्चर (ट्रांसपोर्ट ट्रिगर आर्किटेक्चर के भाग के रूप में उपयोग किया जाता है)<ref name="movfuscator">{{cite web |url=https://github.com/xoreaxeaxeax/movfuscator| title=movfuscator| author=xoreaxeaxeax | website = GitHub | access-date=2022-11-12}}</ref> | ||
* घटाना और शाखा यदि गैर शून्य (एसबीएनजेड ए, बी, सी, गंतव्य) | * घटाना और शाखा यदि गैर शून्य (एसबीएनजेड ए, बी, सी, गंतव्य) | ||
* क्रिप्टोलेक (विषम एन्क्रिप्टेड और अनएन्क्रिप्टेड संगणना) | * क्रिप्टोलेक (विषम एन्क्रिप्टेड और अनएन्क्रिप्टेड संगणना) | ||
दिए गए कार्यान्वयन में इनमें से केवल | दिए गए कार्यान्वयन में इनमें से केवल निर्देश का उपयोग किया जाता है। इसलिए, किस निर्देश को निष्पादित करना है, इसकी पहचान करने के लिए ओपकोड की कोई आवश्यकता नहीं है । निर्देश का विकल्प मशीन के रचना में निहित है, और ओआईएससी का नाम सामान्यतः उस निर्देश के नाम पर रखा जाता है । जिसका वह उपयोग करता है (उदाहरण के लिए, एसबीएन ओआईएससी,<ref name=caamp />{{rp|41}} सुबलेक भाषा),<ref name="agut" />{{rp|4}} उपरोक्त प्रत्येक निर्देश का उपयोग ट्यूरिंग-पूर्ण ओआईएससी के निर्माण के लिए किया जा सकता है। | ||
यह आलेख उन लोगों के बीच केवल घटाव-आधारित निर्देश प्रस्तुत करता है । जो परिवहन ट्रिगर नहीं होते हैं। चूंकि, अन्य अंकगणितीय परिचालनों, जैसे, जोड़ के आधार पर | यह आलेख उन लोगों के बीच केवल घटाव-आधारित निर्देश प्रस्तुत करता है । जो परिवहन ट्रिगर नहीं होते हैं। चूंकि, अन्य अंकगणितीय परिचालनों, जैसे, जोड़ के आधार पर निर्देश का उपयोग करके ट्यूरिंग पूर्ण मशीनों का निर्माण करना संभव है। उदाहरण के लिए, डीएलएन (डिक्रीमेंट और जंप इफ जीरो नहीं) के रूप में जाना जाने वाला वेरिएशन में केवल दो ऑपरेंड होते हैं और डिक्रीमेंट को बेस संचालन के रूप में उपयोग करते हैं। अधिक जानकारी के लिए सुब्लेक व्युत्पन्न भाषाएं देखें [http://esolangs.org/wiki/Subleq]। | ||
शून्य के समान नहीं होने पर घटाएं और शाखा करें <code>SBNZ a, b, c, d</code> ई> निर्देश (घटाना और शाखा यदि शून्य के समान नहीं है) पते पर पदार्थ को पते बी पर पदार्थ से घटाता है । परिणाम को पते सी पर संग्रहीत करता है | शून्य के समान नहीं होने पर घटाएं और शाखा करें <code>SBNZ a, b, c, d</code> ई> निर्देश (घटाना और शाखा यदि शून्य के समान नहीं है) पते पर पदार्थ को पते बी पर पदार्थ से घटाता है । परिणाम को पते सी पर संग्रहीत करता है और फिर, यदि परिणाम 0 नहीं है, तो पता डी पर नियंत्रण स्थानांतरित करता है (यदि परिणाम शून्य के समान है, निष्पादन क्रम में अगले निर्देश के लिए आगे बढ़ता है)।<ref name=agut /> | ||
शून्य से कम या समान होने पर घटाएं और शाखा करें {{mono|subleq}eq}} निर्देश (घटाना और शाखा यदि शून्य से कम या उसके समान है) {{mono|a}} पते पर पदार्थ घटाता है । पते पर पदार्थ से {{mono|b}}, परिणाम को पते पर संग्रहीत करता है । {{mono|b}}, और फिर, यदि परिणाम सकारात्मक नहीं है, तो नियंत्रण को पते पर स्थानांतरित कर देता है । {{mono|c}} (यदि परिणाम सकारात्मक है, तो निष्पादन क्रम में अगले निर्देश पर जाता है)।<ref name=agut />{{rp|4–7}} [[स्यूडोकोड]]: | शून्य से कम या समान होने पर घटाएं और शाखा करें {{mono|subleq}eq}} निर्देश (घटाना और शाखा यदि शून्य से कम या उसके समान है) {{mono|a}} पते पर पदार्थ घटाता है । पते पर पदार्थ से {{mono|b}}, परिणाम को पते पर संग्रहीत करता है । {{mono|b}}, और फिर, यदि परिणाम सकारात्मक नहीं है, तो नियंत्रण को पते पर स्थानांतरित कर देता है । {{mono|c}} (यदि परिणाम सकारात्मक है, तो निष्पादन क्रम में अगले निर्देश पर जाता है)।<ref name=agut />{{rp|4–7}} [[स्यूडोकोड]]:<syntaxhighlight> | ||
Instruction subleq a, b, c | |||
Mem[b] = Mem[b] - Mem[a] | |||
if (Mem[b] ≤ 0) | |||
goto c | |||
</syntaxhighlight> | |||
क्रम में अगले निर्देश के पते के समान तीसरा ऑपरेंड सेट करके सशर्त ब्रांचिंग को दबाया जा सकता है। यदि तीसरा ऑपरेंड नहीं लिखा गया है, तो यह दमन निहित है। | क्रम में अगले निर्देश के पते के समान तीसरा ऑपरेंड सेट करके सशर्त ब्रांचिंग को दबाया जा सकता है। यदि तीसरा ऑपरेंड नहीं लिखा गया है, तो यह दमन निहित है। | ||
दो ऑपरेंड और | दो ऑपरेंड और आंतरिक [[संचायक (कंप्यूटिंग)]] के साथ संस्करण भी संभव है, जहां संचायक को पहले ऑपरेंड द्वारा निर्दिष्ट मेमोरी स्थान से घटाया जाता है। परिणाम संचायक और मेमोरी स्थान दोनों में संग्रहीत होता है, और दूसरा ऑपरेंड शाखा पता निर्दिष्ट करता है:<syntaxhighlight> | ||
Instruction subleq2 a, b | |||
Mem[a] = Mem[a] - ACCUM | |||
ACCUM = Mem[a] | |||
if (Mem[a] ≤ 0) | |||
goto b | |||
</syntaxhighlight>यद्यपि यह प्रति निर्देश केवल दो (तीन के अतिरिक्त) ऑपरेंड का उपयोग करता है । तदनुसार विभिन्न तार्किक संचालन को प्रभावित करने के लिए अधिक निर्देशों की आवश्यकता होती है। | |||
यद्यपि यह प्रति निर्देश केवल दो (तीन के अतिरिक्त) ऑपरेंड का उपयोग करता है । तदनुसार विभिन्न तार्किक संचालन को प्रभावित करने के लिए अधिक निर्देशों की आवश्यकता होती है। | |||
==== संश्लेषित निर्देश ==== | ==== संश्लेषित निर्देश ==== | ||
केवल का उपयोग करके कई प्रकार के उच्च-क्रम के | केवल का उपयोग करके कई प्रकार के उच्च-क्रम के {{mono|subleq}} निर्देश को संश्लेषित करना संभव है।<ref name=agut />{{rp|9–10}} | ||
बिना शर्त शाखा: | बिना शर्त शाखा: | ||
Line 95: | Line 87: | ||
subleq Z, Z, c | subleq Z, Z, c | ||
</syntaxhighlight> | </syntaxhighlight> | ||
जोड़ बार-बार घटाव द्वारा किया जा सकता है । बिना किसी सशर्त शाखा के; उदाहरण के लिए, निम्नलिखित निर्देशों का परिणाम स्थान पर पदार्थ में होता है । {{mono|a}} स्थान पर पदार्थ {{mono|b}} में जोड़ा जा रहा है | जोड़ बार-बार घटाव द्वारा किया जा सकता है । बिना किसी सशर्त शाखा के; उदाहरण के लिए, निम्नलिखित निर्देशों का परिणाम स्थान पर पदार्थ में होता है । {{mono|a}} स्थान पर पदार्थ {{mono|b}} में जोड़ा जा रहा है । | ||
;{{mono|ADD a, b}} | ;{{mono|ADD a, b}} | ||
Line 103: | Line 95: | ||
subleq Z, Z | subleq Z, Z | ||
</syntaxhighlight> | </syntaxhighlight> | ||
पहला निर्देश स्थान पर पदार्थ घटाता है । {{mono|a}} स्थान पर पदार्थ से {{mono|Z}} (जो 0 है) और परिणाम को संग्रहीत करता है । (जो कि पदार्थ का ऋणात्मक है {{mono|a}}) स्थान में {{mono|Z}}. दूसरा निर्देश इस परिणाम को घटाता है । {{mono|b}}, में भंडारण {{mono|b}} यह अंतर (जो अब मूल रूप से पदार्थ का योग है {{mono|a}} और {{mono|b}}); तीसरा निर्देश मान 0 को {{mono|Z}} पुनर्स्थापित करता है | पहला निर्देश स्थान पर पदार्थ घटाता है । {{mono|a}} स्थान पर पदार्थ से {{mono|Z}} (जो 0 है) और परिणाम को संग्रहीत करता है । (जो कि पदार्थ का ऋणात्मक है {{mono|a}}) स्थान में {{mono|Z}}. दूसरा निर्देश इस परिणाम को घटाता है । {{mono|b}}, में भंडारण {{mono|b}} यह अंतर (जो अब मूल रूप से पदार्थ का योग है {{mono|a}} और {{mono|b}}); तीसरा निर्देश मान 0 को {{mono|Z}} पुनर्स्थापित करता है । | ||
कॉपी निर्देश इसी तरह प्रयुक्त किया जा सकता है । उदाहरण के लिए, निम्नलिखित निर्देशों का परिणाम स्थान पर पदार्थ में होता है । {{mono|b}} स्थान पर पदार्थ द्वारा प्रतिस्थापित किया जा रहा है । {{mono|a}}, फिर से पदार्थ को स्थान पर मानते हुए {{mono|Z}} को 0 के रूप में बनाए रखा जाता है । | कॉपी निर्देश इसी तरह प्रयुक्त किया जा सकता है । उदाहरण के लिए, निम्नलिखित निर्देशों का परिणाम स्थान पर पदार्थ में होता है । {{mono|b}} स्थान पर पदार्थ द्वारा प्रतिस्थापित किया जा रहा है । {{mono|a}}, फिर से पदार्थ को स्थान पर मानते हुए {{mono|Z}} को 0 के रूप में बनाए रखा जाता है । | ||
Line 141: | Line 133: | ||
subleq2 Z ; set Z back to 0 | subleq2 Z ; set Z back to 0 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== अनुकरण ==== | ==== अनुकरण ==== | ||
Line 164: | Line 155: | ||
यह कार्यक्रम मानता है {{mono|मेमोरी[]}} को गैर-ऋणात्मक पूर्णांकों द्वारा अनुक्रमित किया जाता है। परिणाम स्वरुप, ए के लिए {{mono|सुबलेक}} निर्देश ({{mono|a}}, {{mono|b}}, {{mono|c}}), कार्यक्रम व्याख्या करता है । {{mono|a < 0}}, {{mono|b < 0}}, या निष्पादित शाखा {{mono|c < 0}} रुकने की स्थिति के रूप में इसी तरह के दुभाषियों को ए में लिखा गया है । {{mono|सुबलेक}}-आधारित भाषा (अर्थात, स्व-दुभाषिया, जो [[स्व-संशोधित कोड]] का उपयोग कर सकते हैं जैसा कि प्रकृति द्वारा अनुमत है {{mono|सुब्लेक}} निर्देश) नीचे दिए गए बाहरी लिंक्स में पाया जा सकता है। | यह कार्यक्रम मानता है {{mono|मेमोरी[]}} को गैर-ऋणात्मक पूर्णांकों द्वारा अनुक्रमित किया जाता है। परिणाम स्वरुप, ए के लिए {{mono|सुबलेक}} निर्देश ({{mono|a}}, {{mono|b}}, {{mono|c}}), कार्यक्रम व्याख्या करता है । {{mono|a < 0}}, {{mono|b < 0}}, या निष्पादित शाखा {{mono|c < 0}} रुकने की स्थिति के रूप में इसी तरह के दुभाषियों को ए में लिखा गया है । {{mono|सुबलेक}}-आधारित भाषा (अर्थात, स्व-दुभाषिया, जो [[स्व-संशोधित कोड]] का उपयोग कर सकते हैं जैसा कि प्रकृति द्वारा अनुमत है {{mono|सुब्लेक}} निर्देश) नीचे दिए गए बाहरी लिंक्स में पाया जा सकता है। | ||
डॉन ओएस नामक | डॉन ओएस नामक सामान्य उद्देश्य [[सममित मल्टीप्रोसेसिंग]]-सक्षम 64-बिट [[ऑपरेटिंग सिस्टम]] को अनुकरणीय सुब्लेक मशीन में प्रयुक्त किया गया है। OS में C भाषा जैसा कंपाइलर होता है। वर्चुअल मशीन में कुछ मेमोरी क्षेत्र कीबोर्ड, माउस, हार्ड ड्राइव, नेटवर्क कार्ड इत्यादि जैसे सहायक उपकरणों के लिए उपयोग किए जाते हैं। इसके लिए लिखे गए मूल अनुप्रयोगों में मीडिया प्लेयर, पेंटिंग टूल, दस्तावेज़ रीडर और वैज्ञानिक कैलकुलेटर सम्मिलत हैं।<ref>{{cite web | url=http://users.atw.hu/gerigeri/DawnOS/index.html | title=Dawn for SUBLEQ }}</ref> | ||
ग्राफिक डिस्प्ले के साथ 32-बिट सुब्लेक कंप्यूटर और इझोरा नामक कीबोर्ड का निर्माण बड़े [[सेल्यूलर आटोमेटा]] पैटर्न के रूप में [[Yoel Matveyev|योएल मतवेयेव]] द्वारा किया गया है।<ref>https://www.gazetaeao.ru/zanimatelnaya-nauka-vchera-segodnya-zavtra/ A Russian article on popular science in [[Birobidzhaner Shtern]] with a brief discussion of Yoel Matveyev's Izhora computer</ref><ref>https://habr.com/ru/post/584596/ A description of the virtual computer Izhora on [[Habr]] (in Russian)</ref> | |||
==== संकलन ==== | ==== संकलन ==== | ||
ओलेग मज़ोनका द्वारा लिखित हायर सुब्लेक नामक | ओलेग मज़ोनका द्वारा लिखित हायर सुब्लेक नामक [[ संकलक |संकलक]] है जो एक सरलीकृत सी प्रोग्राम {{mono|subleq}} कोड को संकलित करता है ।<ref>Oleg Mazonka [https://arxiv.org/abs/1106.2593 A Simple Multi-Processor Computer Based on Subleq]</ref> | ||
नकारात्मक होने पर घटाएं और शाखा करें | नकारात्मक होने पर घटाएं और शाखा करें {{mono|सबनेग}उदाहरण}} निर्देश (घटाना और नकारात्मक होने पर शाखा), जिसे {{mono|एसबीएन}} भी कहा जाता है । इसी तरह {{rp|41,51–52}} {{mono|सुबलेक}} परिभाषित किया गया है ।<ref name=caamp /><syntaxhighlight> | ||
Instruction subneg a, b, c | |||
Mem[b] = Mem[b] - Mem[a] | |||
if (Mem[b] < 0) | |||
goto c | |||
</syntaxhighlight>क्रम में अगले निर्देश के पते के समान तीसरा ऑपरेंड सेट करके सशर्त ब्रांचिंग को दबाया जा सकता है। यदि तीसरा ऑपरेंड नहीं लिखा गया है, तो यह दमन निहित है। | |||
क्रम में अगले निर्देश के पते के समान तीसरा ऑपरेंड सेट करके सशर्त ब्रांचिंग को दबाया जा सकता है। यदि तीसरा ऑपरेंड नहीं लिखा गया है, तो यह दमन निहित है। | |||
==== संश्लेषित निर्देश ==== | ==== संश्लेषित निर्देश ==== | ||
केवल का उपयोग करके कई प्रकार के उच्च-क्रम के निर्देशों को संश्लेषित करना संभव है । {{mono|subneg}} निर्देश सादगी के लिए, केवल | केवल का उपयोग करके कई प्रकार के उच्च-क्रम के निर्देशों को संश्लेषित करना संभव है । {{mono|subneg}} निर्देश सादगी के लिए, केवल संश्लेषित निर्देश के बीच के अंतर को दर्शाने के लिए यहां दिखाया गया है । {{mono|subleq}} और {{mono|subneg}}. होते है । | ||
बिना शर्त शाखा:<ref name=caamp />{{rp|88–89}} | बिना शर्त शाखा:<ref name=caamp />{{rp|88–89}} | ||
Line 191: | Line 177: | ||
subneg POS, Z, c | subneg POS, Z, c | ||
</syntaxhighlight> | </syntaxhighlight> | ||
जहाँ {{mono|Z}} और {{mono|POS}} क्रमशः 0 और | जहाँ {{mono|Z}} और {{mono|POS}} क्रमशः 0 और धनात्मक पूर्णांक रखने के लिए पहले से सेट किए गए स्थान हैं । | ||
बिना शर्त ब्रांचिंग का आश्वासन केवल तभी दिया जाता है । {{mono|Z}} में प्रारंभ में 0 (या संग्रहीत पूर्णांक से कम मान होता है {{mono|POS}}). स्पष्ट करने के लिए | बिना शर्त ब्रांचिंग का आश्वासन केवल तभी दिया जाता है । {{mono|Z}} में प्रारंभ में 0 (या संग्रहीत पूर्णांक से कम मान होता है {{mono|POS}}). स्पष्ट करने के लिए अनुवर्ती निर्देश की आवश्यकता है {{mono|Z}} ब्रांचिंग के बाद, यह मानते हुए कि की पदार्थ {{mono|Z}} को 0 के रूप में बनाए रखा जाना चाहिए। | ||
==== सबनेग 4 ==== | ==== सबनेग 4 ==== | ||
चार ऑपरेंड सबनेग 4 के साथ | चार ऑपरेंड सबनेग 4 के साथ संस्करण भी संभव है। माइनुएंड और सबट्रेंड का उत्क्रमण हार्डवेयर में कार्यान्वयन को आसान बनाता है। गैर-विनाशकारी परिणाम सिंथेटिक निर्देशों को सरल करता है।<syntaxhighlight> | ||
Instruction subneg s, m, r, j | |||
(* subtrahend, minuend, result and jump addresses *) | |||
(* | Mem[r] = Mem[m] - Mem[s] | ||
if (Mem[r] < 0) | |||
goto j | |||
</syntaxhighlight> | |||
=== अंकगणितीय मशीन === | === अंकगणितीय मशीन === | ||
ट्यूरिंग मशीन को और अधिक सहज बनाने के प्रयास में, जेड ए मेल्ज़ाक सकारात्मक संख्याओं के साथ कंप्यूटिंग के कार्य पर विचार करता है। मशीन में | ट्यूरिंग मशीन को और अधिक सहज बनाने के प्रयास में, जेड ए मेल्ज़ाक सकारात्मक संख्याओं के साथ कंप्यूटिंग के कार्य पर विचार करता है। मशीन में अनंत अबैकस होता है । प्रारंभ में विशेष स्थान S पर अनंत संख्या में काउंटर (कंकड़, टैली स्टिक) होते हैं। मशीन संचालन करने में सक्षम है: | ||
स्थान X से उतने ही काउंटर लें जितने स्थान Y में हैं और उन्हें स्थान Z पर स्थानांतरित करें और निर्देश y पर आगे बढ़ें। | स्थान X से उतने ही काउंटर लें जितने स्थान Y में हैं और उन्हें स्थान Z पर स्थानांतरित करें और निर्देश y पर आगे बढ़ें। | ||
यदि यह संक्रिया संभव नहीं है क्योंकि Y में पर्याप्त काउंटर नहीं हैं, तो अबेकस को वैसे ही छोड़ दें और निर्देश n पर आगे बढ़ें। <ref>{{cite journal |title=कम्प्यूटेबिलिटी और कम्प्यूटेशन के लिए एक अनौपचारिक अंकगणितीय दृष्टिकोण|author=Z. A. Melzak |date=2018-11-20 |orig-date=1961-09 |journal=[[Canadian Mathematical Bulletin]] |volume=4 |issue=3 |pages=279–293 |doi=10.4153/CMB-1961-032-6 |doi-access=free}}</ref | यदि यह संक्रिया संभव नहीं है क्योंकि Y में पर्याप्त काउंटर नहीं हैं, तो अबेकस को वैसे ही छोड़ दें और निर्देश n पर आगे बढ़ें। <ref>{{cite journal |title=कम्प्यूटेबिलिटी और कम्प्यूटेशन के लिए एक अनौपचारिक अंकगणितीय दृष्टिकोण|author=Z. A. Melzak |date=2018-11-20 |orig-date=1961-09 |journal=[[Canadian Mathematical Bulletin]] |volume=4 |issue=3 |pages=279–293 |doi=10.4153/CMB-1961-032-6 |doi-access=free}}</ref> | ||
सभी नंबरों को सकारात्मक रखने के लिए और वास्तविक संसार एबैकस पर कंप्यूटिंग करने वाले मानव ऑपरेटर की नकल करने के लिए, किसी भी घटाव से पहले परीक्षण किया जाता है। | सभी नंबरों को सकारात्मक रखने के लिए और वास्तविक संसार एबैकस पर कंप्यूटिंग करने वाले मानव ऑपरेटर की नकल करने के लिए, किसी भी घटाव से पहले परीक्षण किया जाता है। <syntaxhighlight> | ||
Instruction melzak X, Y, Z, n, y | |||
if (Mem[Y] < Mem[X]) | |||
goto n | |||
Mem[X] -= Mem[Y] | |||
Mem[Z] += Mem[Y] | |||
goto y | |||
</syntaxhighlight>कुछ कार्यक्रम देने के बाद: गुणन, gcd, ''n''-th अभाज्य संख्या की गणना, इच्छानुसार संख्या के आधार ''b'' में प्रतिनिधित्व, परिमाण के क्रम में छँटाई, मेल्ज़ाक स्पष्ट रूप से दिखाता है कि इच्छानुसार ट्यूरिंग का मशीन अंकगणितीय मशीन पर अनुकरण कैसे किया जाता है । | |||
कुछ कार्यक्रम देने के बाद: गुणन, gcd, ''n''-th अभाज्य संख्या की गणना, | |||
;{{mono|MUL p, q}} | ;{{mono|MUL p, q}} | ||
Line 229: | Line 212: | ||
stop: | stop: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
जहां मेमोरी स्थान पी पी है । क्यू क्यू है, वन 1 है । एएनएस प्रारंभ में 0 है और अंत में पीक्यू है, और एस | जहां मेमोरी स्थान पी पी है । क्यू क्यू है, वन 1 है । एएनएस प्रारंभ में 0 है और अंत में पीक्यू है, और एस बड़ी संख्या है। | ||
उन्होंने उल्लेख किया है कि पुनरावर्ती कार्यों के तत्वों का उपयोग करके यह आसानी से दिखाया जा सकता है कि अंकगणितीय मशीन पर गणना योग्य प्रत्येक संख्या गणना योग्य है। जिसका प्रमाण लैम्बेक ने दिया था <ref name="lambek">{{cite journal |title=कैसे एक अनंत अबेकस प्रोग्राम करने के लिए|author=J. Lambek |date=2018-11-20 |orig-date=1961-09 |journal=[[Canadian Mathematical Bulletin]] |volume=4 |issue=3 |pages=295–302 |doi=10.4153/CMB-1961-032-6 |doi-access=free}}</ref> समतुल्य दो अनुदेश मशीन पर: X+ (वृद्धि X) और X− अन्य T (यदि यह खाली नहीं है तो X को घटाएं, अन्यथा T पर जाएं)। | उन्होंने उल्लेख किया है कि पुनरावर्ती कार्यों के तत्वों का उपयोग करके यह आसानी से दिखाया जा सकता है कि अंकगणितीय मशीन पर गणना योग्य प्रत्येक संख्या गणना योग्य है। जिसका प्रमाण लैम्बेक ने दिया था <ref name="lambek">{{cite journal |title=कैसे एक अनंत अबेकस प्रोग्राम करने के लिए|author=J. Lambek |date=2018-11-20 |orig-date=1961-09 |journal=[[Canadian Mathematical Bulletin]] |volume=4 |issue=3 |pages=295–302 |doi=10.4153/CMB-1961-032-6 |doi-access=free}}</ref> समतुल्य दो अनुदेश मशीन पर: X+ (वृद्धि X) और X− अन्य T (यदि यह खाली नहीं है तो X को घटाएं, अन्यथा T पर जाएं)। | ||
=== उल्टा घटाना और उधार लेना छोड़ दें === | === उल्टा घटाना और उधार लेना छोड़ दें === | ||
रिवर्स सब्ट्रैक्ट एंड स्किप इफ बॉरो (आरएसएसबी) निर्देश में, एक्युमुलेटर (कंप्यूटिंग) को मेमोरी लोकेशन से घटाया जाता है और यदि कोई बॉरो होता है तो अगला इंस्ट्रक्शन स्किप कर दिया जाता है । (मेमोरी लोकेशन एक्युमुलेटर से छोटा था)। परिणाम संचायक और मेमोरी स्थान दोनों में संग्रहीत होता है। [[ कार्यक्रम गणक ]] को मेमोरी लोकेशन 0 पर मैप किया जाता है। संचायक को मेमोरी लोकेशन 1 पर मैप किया जाता है।<ref name=caamp /> | रिवर्स सब्ट्रैक्ट एंड स्किप इफ बॉरो (आरएसएसबी) निर्देश में, एक्युमुलेटर (कंप्यूटिंग) को मेमोरी लोकेशन से घटाया जाता है और यदि कोई बॉरो होता है तो अगला इंस्ट्रक्शन स्किप कर दिया जाता है । (मेमोरी लोकेशन एक्युमुलेटर से छोटा था)। परिणाम संचायक और मेमोरी स्थान दोनों में संग्रहीत होता है। [[ कार्यक्रम गणक |कार्यक्रम गणक]] को मेमोरी लोकेशन 0 पर मैप किया जाता है। संचायक को मेमोरी लोकेशन 1 पर मैप किया जाता है।<ref name=caamp /> | ||
<syntaxhighlight> | |||
Instruction rssb x | |||
ACCUM = Mem[x] - ACCUM | |||
Mem[x] = ACCUM | |||
if (ACCUM < 0) | |||
goto PC + 2 | |||
</syntaxhighlight> | |||
==== उदाहरण ==== | ==== उदाहरण ==== | ||
Line 263: | Line 248: | ||
RSSB x # x = y - z [See Note 2] | RSSB x # x = y - z [See Note 2] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* [नोट 1] यदि अस्थायी रूप से संग्रहीत मान प्रारंभ में | * [नोट 1] यदि अस्थायी रूप से संग्रहीत मान प्रारंभ में नकारात्मक मान है और इस रूटीन में उधार लिए गए पहले आरएसएसबी अस्थायी से ठीक पहले निष्पादित किया गया निर्देश है, तो कार्य करने के लिए दिनचर्या के लिए चार आरएसएसबी अस्थायी निर्देशों की आवश्यकता होगी। | ||
* [नोट 2] यदि z पर संग्रहीत मान प्रारंभ में | * [नोट 2] यदि z पर संग्रहीत मान प्रारंभ में ऋणात्मक मान है तो अंतिम आरएसएसबी x को छोड़ दिया जाएगा और इस प्रकार दिनचर्या काम नहीं करेगी। | ||
=== ट्रांसपोर्ट ट्रिगर आर्किटेक्चर === | === ट्रांसपोर्ट ट्रिगर आर्किटेक्चर === | ||
{{Main|ट्रांसपोर्ट ट्रिगर आर्किटेक्चर}} | {{Main|ट्रांसपोर्ट ट्रिगर आर्किटेक्चर}} | ||
ट्रांसपोर्ट ट्रिगर आर्किटेक्चर केवल मूव इंस्ट्रक्शन का उपयोग करता है, इसलिए इसे मूल रूप से मूव मशीन कहा जाता था। यह निर्देश नए स्थान की वर्तमान पदार्थ के साथ संयोजन करके | ट्रांसपोर्ट ट्रिगर आर्किटेक्चर केवल मूव इंस्ट्रक्शन का उपयोग करता है, इसलिए इसे मूल रूप से मूव मशीन कहा जाता था। यह निर्देश नए स्थान की वर्तमान पदार्थ के साथ संयोजन करके मेमोरी स्थान की पदार्थ को दूसरे मेमोरी स्थान पर ले जाता है ।<ref name=caamp />{{rp|42}}<ref name=dwj /><syntaxhighlight> | ||
Instruction movx a, b (also written a -> b) | |||
OP = GetOperation(Mem[b]) | |||
Mem[b] := OP(Mem[a], Mem[b]) | |||
</syntaxhighlight>प्रदर्शन किया गया संचालन गंतव्य मेमोरी सेल द्वारा परिभाषित किया गया है। कुछ कोशिकाएं इसके अतिरिक्त, कुछ अन्य गुणन आदि में विशिष्ट हैं। इसलिए मेमोरी सेल साधारण स्टोर नहीं हैं । किन्तु सेल के वर्तमान मूल्य के साथ केवल प्रकार का संचालन करने के लिए [[अंकगणितीय तर्क इकाई]] (एएलयू) सेटअप के साथ युग्मित हैं। कुछ सेल [[ बहाव को काबू करें |बहाव को काबू करें]] इंस्ट्रक्शन हैं जो प्रोग्राम एक्जीक्यूशन को जंप, एड्रेसिंग मोडकंडीशनल एक्जीक्यूशन, [[सबरूटीन्स]], [[अगर तब या|यदि तब या]], [[पाश के लिए]], आदि के साथ बदलने के लिए हैं । | |||
प्रदर्शन किया गया संचालन गंतव्य मेमोरी सेल द्वारा परिभाषित किया गया है। कुछ कोशिकाएं इसके अतिरिक्त, कुछ अन्य गुणन आदि में विशिष्ट हैं। इसलिए मेमोरी सेल साधारण स्टोर नहीं हैं । किन्तु सेल के वर्तमान मूल्य के साथ केवल | |||
मैक्सक्यू नामक वाणिज्यिक परिवहन ट्रिगर आर्किटेक्चर माइक्रोकंट्रोलर का उत्पादन किया गया है । जो स्थानांतरण निर्देशों के लिए सभी संभावित गंतव्यों का प्रतिनिधित्व करने वाले स्थानांतरण मानचित्र का उपयोग करके ओआईएससी की स्पष्ट असुविधा को छुपाता है।<ref name=deh /> | |||
=== क्रिप्टोलिक === | === क्रिप्टोलिक === | ||
[[File:Cryptoleq Processor.jpeg|thumb|NYU अबू धाबी में बनाया गया क्रिप्टोलेक प्रोसेसर]]क्रिप्टोलेक <ref name=crq /> नामांकित निर्देश वाली भाषा है । एन्क्रिप्टेड प्रोग्राम पर सामान्य-उद्देश्य गणना करने में सक्षम है और सुब्लेक के करीबी समूह है। क्रिप्टोलिक डायरेक्ट और इनडायरेक्ट एड्रेसिंग का उपयोग करते हुए मेमोरी की निरंतर कोशिकाओं पर काम करता है, और दो संचालन करता है । {{math|''O''<sub>1</sub>}} और {{math|''O''<sub>2</sub>}} तीन मानों ए, बी और सी पर होता है । | [[File:Cryptoleq Processor.jpeg|thumb|NYU अबू धाबी में बनाया गया क्रिप्टोलेक प्रोसेसर]]क्रिप्टोलेक <ref name=crq /> नामांकित निर्देश वाली भाषा है । एन्क्रिप्टेड प्रोग्राम पर सामान्य-उद्देश्य गणना करने में सक्षम है और सुब्लेक के करीबी समूह है। क्रिप्टोलिक डायरेक्ट और इनडायरेक्ट एड्रेसिंग का उपयोग करते हुए मेमोरी की निरंतर कोशिकाओं पर काम करता है, और दो संचालन करता है । {{math|''O''<sub>1</sub>}} और {{math|''O''<sub>2</sub>}} तीन मानों ए, बी और सी पर होता है ।<syntaxhighlight> | ||
Instruction cryptoleq a, b, c | |||
Mem[b] = O1(Mem[a], Mem[b]) | |||
if O2(Mem[b]) ≤ 0 | |||
IP = c | |||
else | |||
IP = IP + 3 | |||
</syntaxhighlight>जहां ए, बी और सी को निर्देश सूचक, आईपी द्वारा संबोधित किया जाता है । आईपी एड्रेसिंग ए, आईपी + 1 पॉइंट टू बी और आईपी + 2 टू सी के मूल्य के साथ क्रिप्टोलैक ऑपरेशंस में {{math|''O''<sub>1</sub>}} और {{math|''O''<sub>2</sub>}} को इस प्रकार परिभाषित किया गया है । | |||
जहां ए, बी और सी को निर्देश सूचक, आईपी द्वारा संबोधित किया जाता है | |||
:<math>\begin{array}{lcl} O_1(x,y) & = & x^{-1}_{N^2}y \,\bmod\, N^2 \end{array}</math> | :<math>\begin{array}{lcl} O_1(x,y) & = & x^{-1}_{N^2}y \,\bmod\, N^2 \end{array}</math> | ||
Line 297: | Line 276: | ||
:<math>G(x,y) = \begin{cases} \tilde{0}, & \text{if }O_2(\bar{x})\text{ }\leq 0 \\ \tilde{y}, & \text{otherwise} \end{cases}</math> | :<math>G(x,y) = \begin{cases} \tilde{0}, & \text{if }O_2(\bar{x})\text{ }\leq 0 \\ \tilde{y}, & \text{otherwise} \end{cases}</math> | ||
जहां <math>\tilde{y}</math> {{mvar|y}} का पुनः एन्क्रिप्टेड मान है और <math>\tilde{0}</math> शून्य एन्क्रिप्ट किया गया है। {{mvar|x}} एक चर का एन्क्रिप्टेड मान है, इसे {{mvar|m}} होने दें, और <math>\bar{x}</math> | जहां <math>\tilde{y}</math> {{mvar|y}} का पुनः एन्क्रिप्टेड मान है और <math>\tilde{0}</math> शून्य एन्क्रिप्ट किया गया है। {{mvar|x}} एक चर का एन्क्रिप्टेड मान है, इसे {{mvar|m}} होने दें, और <math>\bar{x}</math> समान {{tmath|Nm + 1}} है । | ||
गुणन एल्गोरिथ्म जोड़ और घटाव पर आधारित है । फ़ंक्शन G का उपयोग करता है और इसमें न तो सशर्त छलांग होती है और न ही शाखाएँ क्रिप्टोलेक एन्क्रिप्शन [[पैलियर क्रिप्टोसिस्टम]] पर आधारित है। | गुणन एल्गोरिथ्म जोड़ और घटाव पर आधारित है । फ़ंक्शन G का उपयोग करता है और इसमें न तो सशर्त छलांग होती है और न ही शाखाएँ क्रिप्टोलेक एन्क्रिप्शन [[पैलियर क्रिप्टोसिस्टम]] पर आधारित है। | ||
Line 410: | Line 389: | ||
* [http://esolangs.org/wiki/Subleq सुब्लेक on the esoteric programming languages wiki] – interpreters, compilers, examples and derivative languages | * [http://esolangs.org/wiki/Subleq सुब्लेक on the esoteric programming languages wiki] – interpreters, compilers, examples and derivative languages | ||
* {{youTube|NmWwRmvjAE8|Reductio ad absurdum}} by Christopher Domas | * {{youTube|NmWwRmvjAE8|Reductio ad absurdum}} by Christopher Domas | ||
* [https://web.archive.org/web/20151121172708/http://www.sccs.swarthmore.edu/users/06/adem/engin/e25/finale/ Laboratory | * [https://web.archive.org/web/20151121172708/http://www.sccs.swarthmore.edu/users/06/adem/engin/e25/finale/ Laboratory सुबलेक computer] – [[FPGA]] implementation using [[VHDL]] | ||
* [http://catb.org/~esr/retro/#emulators The Retrocomputing Museum] – एसबीएन emulator and sample programs | * [http://catb.org/~esr/retro/#emulators The Retrocomputing Museum] – एसबीएन emulator and sample programs | ||
* [http://bitstuff.blogspot.com/2007/02/subtract-and-branch-if-negative.html Laboratory एसबीएन computer] – implemented with [[7400 series]] integrated circuits | * [http://bitstuff.blogspot.com/2007/02/subtract-and-branch-if-negative.html Laboratory एसबीएन computer] – implemented with [[7400 series]] integrated circuits | ||
Line 428: | Line 407: | ||
{{CPU technologies}} | {{CPU technologies}} | ||
[[Category: | [[Category:Articles with hatnote templates targeting a nonexistent page]] | ||
[[Category:Collapse templates]] | |||
[[Category: | |||
[[Category:Created On 02/05/2023]] | [[Category:Created On 02/05/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists]] | |||
[[Category:Pages with broken file links]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Pages with syntax highlighting errors]] | |||
[[Category:Sidebars with styles needing conversion]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates generating microformats]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that are not mobile friendly]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Wikipedia metatemplates]] | |||
[[Category:गणना के मॉडल]] | |||
[[Category:गूढ़ प्रोग्रामिंग भाषाएँ]] |
Latest revision as of 09:05, 13 June 2023
एक-निर्देश सेट कंप्यूटर (ओआईएससी), जिसे कभी-कभी परम आरआईएससी (यूआरआईएससी) कहा जाता है । सार मशीन है जो केवल निर्देश का उपयोग करती है। मशीन भाषा ओपकोड की आवश्यकता को समाप्त करना होता है।[1][2][3] एकल निर्देश के विवेकपूर्ण विकल्प और अनंत संसाधनों के साथ, ओआईएससी पारंपरिक कंप्यूटरों की तरह ही सार्वभौमिक कंप्यूटर होने में सक्षम है । जिसमें कई निर्देश हैं।[2]: 55 ओआईएससी को कंप्यूटर आर्किटेक्चर सिखाने में सहायता के रूप में अनुशंसित किया गया है । [1]: 327 [2] और संरचनात्मक कंप्यूटिंग अनुसंधान में कम्प्यूटेशनल मॉडल के रूप में उपयोग किया गया है। [3] पहला कार्बन नैनोट्यूब कंप्यूटर 1-बिट कंप्यूटिंग 1-बिट वन-इंस्ट्रक्शन सेट कंप्यूटर है (और इसमें केवल 178 ट्रांजिस्टर हैं)।[4]
मशीन आर्किटेक्चर
ट्यूरिंग पूर्णता मॉडल में, प्रत्येक मेमोरी स्थान इच्छानुसार पूर्णांक संग्रहीत कर सकता है, और मॉडल पर निर्भर करता है । इच्छानुसार कई स्थान हो सकते हैं । ऐसे पूर्णांकों के अनुक्रम के रूप में निर्देश स्वयं मेमोरी में रहते हैं।
सार्वभौम कंप्यूटरों का वर्ग उपस्थित है । जिसमें बिट मैनिपुलेटिंग पर आधारित एकल निर्देश होता है । जैसे बिट नकल करना या बिट कों उलटना है। चूँकि उनका मेमोरी मॉडल परिमित है । जैसा कि वास्तविक कंप्यूटरों में उपयोग की जाने वाली मेमोरी संरचना है । वे बिट मैनिपुलेशन मशीनें ट्यूरिंग मशीनों के अतिरिक्त वास्तविक कंप्यूटरों के समान हैं।[5]
वर्तमान में ज्ञात ओआईएससी को सामान्यतः तीन व्यापक श्रेणियों में विभाजित किया जा सकता है ।
- बिट-मैनिपुलेटिंग मशीन
- ट्रांसपोर्ट ट्रिगर आर्किटेक्चर मशीनें
- अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें
बिट-मैनिपुलेटिंग मशीन
बिट मैनिपुलेटिंग मशीनें सबसे सरल वर्ग हैं।
फ्लिपजंप
फ्लिपजंप मशीन में 1 निर्देश है ।, a;b - बिट a को फ़्लिप करता है, फिर b पर जाता है । यह सबसे ओआईएससी है । किन्तु यह अभी भी उपयोगी है। यह अपने मानक पुस्तकालय की सहायता से गणित/तर्क गणना, ब्रांचिंग, पॉइंटर्स और कॉलिंग फ़ंक्शंस सफलतापूर्वक कर सकता है।
बिटबिटजंप
बिट कॉपी मशीन,[5] बिटबिटजंप कहा जाता है, मेमोरी में बिट की प्रतिलिपि बनाता है और निष्पादन को निर्देश के किसी ऑपरेंड द्वारा निर्दिष्ट पते पर बिना शर्त पास करता है। यह प्रक्रिया सार्वभौमिक अभिकलन (अर्थात किसी भी एल्गोरिथ्म को निष्पादित करने और किसी अन्य सार्वभौमिक मशीन की व्याख्या करने में सक्षम होने) में सक्षम होने के लिए निकली है । क्योंकि बिट्स की नकल सशर्त रूप से उस कोड को संशोधित कर सकती है । जिसे बाद में निष्पादित किया जाएगा।
टोगा कंप्यूटर
एक अन्य मशीन, जिसे टोगा कंप्यूटर कहा जाता है, थोड़ा इन्वर्ट करती है और व्युत्क्रम के परिणाम के आधार पर निष्पादन को सशर्त रूप से पास करती है। अद्वितीय निर्देश टोगा (a,b) है । जो टॉगल संचालन के परिणाम के सही होने पर टॉगल a और शाखा से b के लिए है।
मल्टी-बिट कॉपी करने वाली मशीन
बिटबिटजंप के समान, मल्टी-बिट कॉपी करने वाली मशीन एक ही समय में कई बिट्स को कॉपी करती है। इस स्थिति में मेमोरी में पूर्वनिर्धारित जंप टेबल रखने से ट्यूरिंग पूर्णता की समस्या हल हो जाती है।
परिवहन ट्रिगर वास्तुकला
परिवहन ट्रिगर आर्किटेक्चर (टीटीए) रचना है । जिसमें गणना डेटा परिवहन का साइड इफेक्ट है। सामान्यतः, कुछ मेमोरी रजिस्टर (ट्रिगरिंग पोर्ट्स) कॉमन एड्रेस स्पेस के अन्दर असाइन किए गए संचालन को करते हैं । जब निर्देश उन्हें संदर्भित करता है। उदाहरण के लिए, ओआईएससी में एक मेमोरी-टू-मेमोरी कॉपी इंस्ट्रक्शन का उपयोग करते हुए, यह उन पोर्ट्स को ट्रिगर करके किया जाता है । जो अंकगणित करते हैं और इंस्ट्रक्शन पॉइंटर जंप करते हैं । जब उन्हें लिखा जाता है।
अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें
अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें अंकगणितीय संचालन और सशर्त छलांग का उपयोग करती हैं। पिछले दो यूनिवर्सल कंप्यूटरों की तरह, यह वर्ग भी ट्यूरिंग-पूर्ण है। निर्देश पूर्णांकों पर संचालित होता है । जो मेमोरी में पते भी हो सकते हैं।
वर्तमान में विभिन्न अंकगणितीय परिचालनों के आधार पर इस वर्ग के कई ज्ञात ओआईएससी हैं ।
- जोड़ (अडलेक जोड़ और शाखा यदि शून्य से कम या उसके समान है) [6]
- डिक्रीमेंट (डीजेएन डिक्रीमेंट और ब्रांच (जंप) यदि नॉनजीरो) [7]
- वेतन वृद्धि (पी1eq प्लस 1 और शाखा यदि अन्य मान के समान है)[8]
- घटाव (सुबलेक, सबट्रैक्ट और ब्रांच यदि l से या eq शून्य से शून्य)[9][10]
- घटाना (सुब्लेक, घटाना और शाखा यदि शून्य से कम या उसके समान) [9] [10]
- सकारात्मक घटाव जब संभव हो, अन्यथा शाखा (अंकगणितीय मशीन) [11]
निर्देश प्रकार
एकल निर्देश के लिए सामान्य विकल्प हैं:
- घटाना और शाखा यदि शून्य से कम या उसके समान है ।
- नकारात्मक हो तो घटाएं और शाखा दें
- अंकगणित यंत्र
- उल्टा घटाएं और छोड़ें ।
- ट्रांसपोर्ट ट्रिगर आर्किटेक्चर (ट्रांसपोर्ट ट्रिगर आर्किटेक्चर के भाग के रूप में उपयोग किया जाता है)[12]
- घटाना और शाखा यदि गैर शून्य (एसबीएनजेड ए, बी, सी, गंतव्य)
- क्रिप्टोलेक (विषम एन्क्रिप्टेड और अनएन्क्रिप्टेड संगणना)
दिए गए कार्यान्वयन में इनमें से केवल निर्देश का उपयोग किया जाता है। इसलिए, किस निर्देश को निष्पादित करना है, इसकी पहचान करने के लिए ओपकोड की कोई आवश्यकता नहीं है । निर्देश का विकल्प मशीन के रचना में निहित है, और ओआईएससी का नाम सामान्यतः उस निर्देश के नाम पर रखा जाता है । जिसका वह उपयोग करता है (उदाहरण के लिए, एसबीएन ओआईएससी,[2]: 41 सुबलेक भाषा),[3]: 4 उपरोक्त प्रत्येक निर्देश का उपयोग ट्यूरिंग-पूर्ण ओआईएससी के निर्माण के लिए किया जा सकता है।
यह आलेख उन लोगों के बीच केवल घटाव-आधारित निर्देश प्रस्तुत करता है । जो परिवहन ट्रिगर नहीं होते हैं। चूंकि, अन्य अंकगणितीय परिचालनों, जैसे, जोड़ के आधार पर निर्देश का उपयोग करके ट्यूरिंग पूर्ण मशीनों का निर्माण करना संभव है। उदाहरण के लिए, डीएलएन (डिक्रीमेंट और जंप इफ जीरो नहीं) के रूप में जाना जाने वाला वेरिएशन में केवल दो ऑपरेंड होते हैं और डिक्रीमेंट को बेस संचालन के रूप में उपयोग करते हैं। अधिक जानकारी के लिए सुब्लेक व्युत्पन्न भाषाएं देखें [1]।
शून्य के समान नहीं होने पर घटाएं और शाखा करें SBNZ a, b, c, d
ई> निर्देश (घटाना और शाखा यदि शून्य के समान नहीं है) पते पर पदार्थ को पते बी पर पदार्थ से घटाता है । परिणाम को पते सी पर संग्रहीत करता है और फिर, यदि परिणाम 0 नहीं है, तो पता डी पर नियंत्रण स्थानांतरित करता है (यदि परिणाम शून्य के समान है, निष्पादन क्रम में अगले निर्देश के लिए आगे बढ़ता है)।[3]
शून्य से कम या समान होने पर घटाएं और शाखा करें subleq}eq निर्देश (घटाना और शाखा यदि शून्य से कम या उसके समान है) a पते पर पदार्थ घटाता है । पते पर पदार्थ से b, परिणाम को पते पर संग्रहीत करता है । b, और फिर, यदि परिणाम सकारात्मक नहीं है, तो नियंत्रण को पते पर स्थानांतरित कर देता है । c (यदि परिणाम सकारात्मक है, तो निष्पादन क्रम में अगले निर्देश पर जाता है)।[3]: 4–7 स्यूडोकोड:
Instruction subleq a, b, c
Mem[b] = Mem[b] - Mem[a]
if (Mem[b] ≤ 0)
goto c
क्रम में अगले निर्देश के पते के समान तीसरा ऑपरेंड सेट करके सशर्त ब्रांचिंग को दबाया जा सकता है। यदि तीसरा ऑपरेंड नहीं लिखा गया है, तो यह दमन निहित है।
दो ऑपरेंड और आंतरिक संचायक (कंप्यूटिंग) के साथ संस्करण भी संभव है, जहां संचायक को पहले ऑपरेंड द्वारा निर्दिष्ट मेमोरी स्थान से घटाया जाता है। परिणाम संचायक और मेमोरी स्थान दोनों में संग्रहीत होता है, और दूसरा ऑपरेंड शाखा पता निर्दिष्ट करता है:
Instruction subleq2 a, b
Mem[a] = Mem[a] - ACCUM
ACCUM = Mem[a]
if (Mem[a] ≤ 0)
goto b
यद्यपि यह प्रति निर्देश केवल दो (तीन के अतिरिक्त) ऑपरेंड का उपयोग करता है । तदनुसार विभिन्न तार्किक संचालन को प्रभावित करने के लिए अधिक निर्देशों की आवश्यकता होती है।
संश्लेषित निर्देश
केवल का उपयोग करके कई प्रकार के उच्च-क्रम के subleq निर्देश को संश्लेषित करना संभव है।[3]: 9–10
बिना शर्त शाखा:
- JMP c
subleq Z, Z, c
जोड़ बार-बार घटाव द्वारा किया जा सकता है । बिना किसी सशर्त शाखा के; उदाहरण के लिए, निम्नलिखित निर्देशों का परिणाम स्थान पर पदार्थ में होता है । a स्थान पर पदार्थ b में जोड़ा जा रहा है ।
- ADD a, b
subleq a, Z subleq Z, b subleq Z, Z
पहला निर्देश स्थान पर पदार्थ घटाता है । a स्थान पर पदार्थ से Z (जो 0 है) और परिणाम को संग्रहीत करता है । (जो कि पदार्थ का ऋणात्मक है a) स्थान में Z. दूसरा निर्देश इस परिणाम को घटाता है । b, में भंडारण b यह अंतर (जो अब मूल रूप से पदार्थ का योग है a और b); तीसरा निर्देश मान 0 को Z पुनर्स्थापित करता है ।
कॉपी निर्देश इसी तरह प्रयुक्त किया जा सकता है । उदाहरण के लिए, निम्नलिखित निर्देशों का परिणाम स्थान पर पदार्थ में होता है । b स्थान पर पदार्थ द्वारा प्रतिस्थापित किया जा रहा है । a, फिर से पदार्थ को स्थान पर मानते हुए Z को 0 के रूप में बनाए रखा जाता है ।
- MOV a, b
subleq b, b subleq a, Z subleq Z, b subleq Z, Z
कोई वांछित अंकगणितीय परीक्षण बनाया जा सकता है। उदाहरण के लिए, निम्नलिखित निर्देशों से एक शाखा-यदि-शून्य स्थिति को इकट्ठा किया जा सकता है ।
- BEQ b, c
subleq b, Z, L1 subleq Z, Z, OUT L1: subleq Z, Z subleq Z, b, c OUT: ...
सुबलेक 2 का उपयोग उच्च-क्रम के निर्देशों को संश्लेषित करने के लिए भी किया जा सकता है । चूँकि इसे सामान्यतः किसी दिए गए कार्य के लिए अधिक संचालन की आवश्यकता होती है। उदाहरण के लिए, किसी दिए गए बाइट में सभी बिट्स को फ़्लिप करने के लिए कम से कम 10 सुबलेक 2 निर्देशों की आवश्यकता होती है ।
- NOT a
subleq2 tmp ; tmp = 0 (tmp = temporary register) subleq2 tmp subleq2 one ; acc = -1 subleq2 a ; a' = a + 1 subleq2 Z ; Z = - a - 1 subleq2 tmp ; tmp = a + 1 subleq2 a ; a' = 0 subleq2 tmp ; load tmp into acc subleq2 a ; a' = - a - 1 ( = ~a ) subleq2 Z ; set Z back to 0
अनुकरण
निम्नलिखित प्रोग्राम (स्यूडोकोड में लिखा गया) एक के निष्पादन सुबलेक-आधारित ओआईएससी का अनुकरण करता है ।
int memory[], program_counter, a, b, c
program_counter = 0
while (program_counter >= 0):
a = memory[program_counter]
b = memory[program_counter+1]
c = memory[program_counter+2]
if (a < 0 or b < 0):
program_counter = -1
else:
memory[b] = memory[b] - memory[a]
if (memory[b] > 0):
program_counter += 3
else:
program_counter = c
यह कार्यक्रम मानता है मेमोरी[] को गैर-ऋणात्मक पूर्णांकों द्वारा अनुक्रमित किया जाता है। परिणाम स्वरुप, ए के लिए सुबलेक निर्देश (a, b, c), कार्यक्रम व्याख्या करता है । a < 0, b < 0, या निष्पादित शाखा c < 0 रुकने की स्थिति के रूप में इसी तरह के दुभाषियों को ए में लिखा गया है । सुबलेक-आधारित भाषा (अर्थात, स्व-दुभाषिया, जो स्व-संशोधित कोड का उपयोग कर सकते हैं जैसा कि प्रकृति द्वारा अनुमत है सुब्लेक निर्देश) नीचे दिए गए बाहरी लिंक्स में पाया जा सकता है।
डॉन ओएस नामक सामान्य उद्देश्य सममित मल्टीप्रोसेसिंग-सक्षम 64-बिट ऑपरेटिंग सिस्टम को अनुकरणीय सुब्लेक मशीन में प्रयुक्त किया गया है। OS में C भाषा जैसा कंपाइलर होता है। वर्चुअल मशीन में कुछ मेमोरी क्षेत्र कीबोर्ड, माउस, हार्ड ड्राइव, नेटवर्क कार्ड इत्यादि जैसे सहायक उपकरणों के लिए उपयोग किए जाते हैं। इसके लिए लिखे गए मूल अनुप्रयोगों में मीडिया प्लेयर, पेंटिंग टूल, दस्तावेज़ रीडर और वैज्ञानिक कैलकुलेटर सम्मिलत हैं।[13]
ग्राफिक डिस्प्ले के साथ 32-बिट सुब्लेक कंप्यूटर और इझोरा नामक कीबोर्ड का निर्माण बड़े सेल्यूलर आटोमेटा पैटर्न के रूप में योएल मतवेयेव द्वारा किया गया है।[14][15]
संकलन
ओलेग मज़ोनका द्वारा लिखित हायर सुब्लेक नामक संकलक है जो एक सरलीकृत सी प्रोग्राम subleq कोड को संकलित करता है ।[16]
नकारात्मक होने पर घटाएं और शाखा करें सबनेग}उदाहरण निर्देश (घटाना और नकारात्मक होने पर शाखा), जिसे एसबीएन भी कहा जाता है । इसी तरह : 41, 51–52 सुबलेक परिभाषित किया गया है ।[2]
Instruction subneg a, b, c
Mem[b] = Mem[b] - Mem[a]
if (Mem[b] < 0)
goto c
क्रम में अगले निर्देश के पते के समान तीसरा ऑपरेंड सेट करके सशर्त ब्रांचिंग को दबाया जा सकता है। यदि तीसरा ऑपरेंड नहीं लिखा गया है, तो यह दमन निहित है।
संश्लेषित निर्देश
केवल का उपयोग करके कई प्रकार के उच्च-क्रम के निर्देशों को संश्लेषित करना संभव है । subneg निर्देश सादगी के लिए, केवल संश्लेषित निर्देश के बीच के अंतर को दर्शाने के लिए यहां दिखाया गया है । subleq और subneg. होते है ।
बिना शर्त शाखा:[2]: 88–89
- JMP c
subneg POS, Z, c
जहाँ Z और POS क्रमशः 0 और धनात्मक पूर्णांक रखने के लिए पहले से सेट किए गए स्थान हैं ।
बिना शर्त ब्रांचिंग का आश्वासन केवल तभी दिया जाता है । Z में प्रारंभ में 0 (या संग्रहीत पूर्णांक से कम मान होता है POS). स्पष्ट करने के लिए अनुवर्ती निर्देश की आवश्यकता है Z ब्रांचिंग के बाद, यह मानते हुए कि की पदार्थ Z को 0 के रूप में बनाए रखा जाना चाहिए।
सबनेग 4
चार ऑपरेंड सबनेग 4 के साथ संस्करण भी संभव है। माइनुएंड और सबट्रेंड का उत्क्रमण हार्डवेयर में कार्यान्वयन को आसान बनाता है। गैर-विनाशकारी परिणाम सिंथेटिक निर्देशों को सरल करता है।
Instruction subneg s, m, r, j
(* subtrahend, minuend, result and jump addresses *)
Mem[r] = Mem[m] - Mem[s]
if (Mem[r] < 0)
goto j
अंकगणितीय मशीन
ट्यूरिंग मशीन को और अधिक सहज बनाने के प्रयास में, जेड ए मेल्ज़ाक सकारात्मक संख्याओं के साथ कंप्यूटिंग के कार्य पर विचार करता है। मशीन में अनंत अबैकस होता है । प्रारंभ में विशेष स्थान S पर अनंत संख्या में काउंटर (कंकड़, टैली स्टिक) होते हैं। मशीन संचालन करने में सक्षम है:
स्थान X से उतने ही काउंटर लें जितने स्थान Y में हैं और उन्हें स्थान Z पर स्थानांतरित करें और निर्देश y पर आगे बढ़ें।
यदि यह संक्रिया संभव नहीं है क्योंकि Y में पर्याप्त काउंटर नहीं हैं, तो अबेकस को वैसे ही छोड़ दें और निर्देश n पर आगे बढ़ें। [17]
सभी नंबरों को सकारात्मक रखने के लिए और वास्तविक संसार एबैकस पर कंप्यूटिंग करने वाले मानव ऑपरेटर की नकल करने के लिए, किसी भी घटाव से पहले परीक्षण किया जाता है।
Instruction melzak X, Y, Z, n, y
if (Mem[Y] < Mem[X])
goto n
Mem[X] -= Mem[Y]
Mem[Z] += Mem[Y]
goto y
कुछ कार्यक्रम देने के बाद: गुणन, gcd, n-th अभाज्य संख्या की गणना, इच्छानुसार संख्या के आधार b में प्रतिनिधित्व, परिमाण के क्रम में छँटाई, मेल्ज़ाक स्पष्ट रूप से दिखाता है कि इच्छानुसार ट्यूरिंग का मशीन अंकगणितीय मशीन पर अनुकरण कैसे किया जाता है ।
- MUL p, q
multiply: melzak P, ONE, S, stop ; Move 1 counter from P to S. If not possible, move to stop. melzak S, Q, ANS, multiply, multiply ; Move q counters from S to ANS. Move to the first instruction. stop:
जहां मेमोरी स्थान पी पी है । क्यू क्यू है, वन 1 है । एएनएस प्रारंभ में 0 है और अंत में पीक्यू है, और एस बड़ी संख्या है।
उन्होंने उल्लेख किया है कि पुनरावर्ती कार्यों के तत्वों का उपयोग करके यह आसानी से दिखाया जा सकता है कि अंकगणितीय मशीन पर गणना योग्य प्रत्येक संख्या गणना योग्य है। जिसका प्रमाण लैम्बेक ने दिया था [18] समतुल्य दो अनुदेश मशीन पर: X+ (वृद्धि X) और X− अन्य T (यदि यह खाली नहीं है तो X को घटाएं, अन्यथा T पर जाएं)।
उल्टा घटाना और उधार लेना छोड़ दें
रिवर्स सब्ट्रैक्ट एंड स्किप इफ बॉरो (आरएसएसबी) निर्देश में, एक्युमुलेटर (कंप्यूटिंग) को मेमोरी लोकेशन से घटाया जाता है और यदि कोई बॉरो होता है तो अगला इंस्ट्रक्शन स्किप कर दिया जाता है । (मेमोरी लोकेशन एक्युमुलेटर से छोटा था)। परिणाम संचायक और मेमोरी स्थान दोनों में संग्रहीत होता है। कार्यक्रम गणक को मेमोरी लोकेशन 0 पर मैप किया जाता है। संचायक को मेमोरी लोकेशन 1 पर मैप किया जाता है।[2]
Instruction rssb x
ACCUM = Mem[x] - ACCUM
Mem[x] = ACCUM
if (ACCUM < 0)
goto PC + 2
उदाहरण
x को y माइनस z के मान पर सेट करने के लिए:
# First, move z to the destination location x.
RSSB temp # Three instructions required to clear acc, temp [See Note 1]
RSSB temp
RSSB temp
RSSB x # Two instructions clear acc, x, since acc is already clear
RSSB x
RSSB y # Load y into acc: no borrow
RSSB temp # Store -y into acc, temp: always borrow and skip
RSSB temp # Skipped
RSSB x # Store y into x, acc
# Second, perform the operation.
RSSB temp # Three instructions required to clear acc, temp
RSSB temp
RSSB temp
RSSB z # Load z
RSSB x # x = y - z [See Note 2]
- [नोट 1] यदि अस्थायी रूप से संग्रहीत मान प्रारंभ में नकारात्मक मान है और इस रूटीन में उधार लिए गए पहले आरएसएसबी अस्थायी से ठीक पहले निष्पादित किया गया निर्देश है, तो कार्य करने के लिए दिनचर्या के लिए चार आरएसएसबी अस्थायी निर्देशों की आवश्यकता होगी।
- [नोट 2] यदि z पर संग्रहीत मान प्रारंभ में ऋणात्मक मान है तो अंतिम आरएसएसबी x को छोड़ दिया जाएगा और इस प्रकार दिनचर्या काम नहीं करेगी।
ट्रांसपोर्ट ट्रिगर आर्किटेक्चर
ट्रांसपोर्ट ट्रिगर आर्किटेक्चर केवल मूव इंस्ट्रक्शन का उपयोग करता है, इसलिए इसे मूल रूप से मूव मशीन कहा जाता था। यह निर्देश नए स्थान की वर्तमान पदार्थ के साथ संयोजन करके मेमोरी स्थान की पदार्थ को दूसरे मेमोरी स्थान पर ले जाता है ।[2]: 42 [19]
Instruction movx a, b (also written a -> b)
OP = GetOperation(Mem[b])
Mem[b] := OP(Mem[a], Mem[b])
प्रदर्शन किया गया संचालन गंतव्य मेमोरी सेल द्वारा परिभाषित किया गया है। कुछ कोशिकाएं इसके अतिरिक्त, कुछ अन्य गुणन आदि में विशिष्ट हैं। इसलिए मेमोरी सेल साधारण स्टोर नहीं हैं । किन्तु सेल के वर्तमान मूल्य के साथ केवल प्रकार का संचालन करने के लिए अंकगणितीय तर्क इकाई (एएलयू) सेटअप के साथ युग्मित हैं। कुछ सेल बहाव को काबू करें इंस्ट्रक्शन हैं जो प्रोग्राम एक्जीक्यूशन को जंप, एड्रेसिंग मोडकंडीशनल एक्जीक्यूशन, सबरूटीन्स, यदि तब या, पाश के लिए, आदि के साथ बदलने के लिए हैं ।
मैक्सक्यू नामक वाणिज्यिक परिवहन ट्रिगर आर्किटेक्चर माइक्रोकंट्रोलर का उत्पादन किया गया है । जो स्थानांतरण निर्देशों के लिए सभी संभावित गंतव्यों का प्रतिनिधित्व करने वाले स्थानांतरण मानचित्र का उपयोग करके ओआईएससी की स्पष्ट असुविधा को छुपाता है।[20]
क्रिप्टोलिक
क्रिप्टोलेक [21] नामांकित निर्देश वाली भाषा है । एन्क्रिप्टेड प्रोग्राम पर सामान्य-उद्देश्य गणना करने में सक्षम है और सुब्लेक के करीबी समूह है। क्रिप्टोलिक डायरेक्ट और इनडायरेक्ट एड्रेसिंग का उपयोग करते हुए मेमोरी की निरंतर कोशिकाओं पर काम करता है, और दो संचालन करता है । O1 और O2 तीन मानों ए, बी और सी पर होता है ।
Instruction cryptoleq a, b, c
Mem[b] = O1(Mem[a], Mem[b])
if O2(Mem[b]) ≤ 0
IP = c
else
IP = IP + 3
जहां ए, बी और सी को निर्देश सूचक, आईपी द्वारा संबोधित किया जाता है । आईपी एड्रेसिंग ए, आईपी + 1 पॉइंट टू बी और आईपी + 2 टू सी के मूल्य के साथ क्रिप्टोलैक ऑपरेशंस में O1 और O2 को इस प्रकार परिभाषित किया गया है ।
सुब्लेक के साथ मुख्य अंतर यह है कि सुब्लेक में, O1(x,y) केवल y को x से घटाता है और O2(x) x के समान होता है। क्रिप्टोलिक सुबलेक के लिए भी होमोमोर्फिक है । मॉड्यूलर उलटा और गुणन घटाव के लिए होमोमोर्फिक है और यदि मान अनएन्क्रिप्टेड थे तो O2 का संचालन सुब्लेक परीक्षण से मेल खाता है। सुब्लेक में लिखा गया एक प्रोग्राम क्रिप्टोलेक मशीन पर चल सकता है । जिसका अर्थ है पश्चगामी संगतता क्रिप्टोलिक चूँकि, पूरी तरह से होमोमोर्फिक गणनाओं को प्रयुक्त करता है और चूंकि मॉडल गुणन करने में सक्षम है। एक एन्क्रिप्टेड डोमेन पर गुणन को एक अद्वितीय फ़ंक्शन G द्वारा सहायता प्रदान की जाती है । जिसे रिवर्स इंजीनियर के लिए मुश्किल माना जाता है और O2 संचालन के आधार पर मान के पुन: एन्क्रिप्शन की अनुमति देता है ।
जहां y का पुनः एन्क्रिप्टेड मान है और शून्य एन्क्रिप्ट किया गया है। x एक चर का एन्क्रिप्टेड मान है, इसे m होने दें, और समान है ।
गुणन एल्गोरिथ्म जोड़ और घटाव पर आधारित है । फ़ंक्शन G का उपयोग करता है और इसमें न तो सशर्त छलांग होती है और न ही शाखाएँ क्रिप्टोलेक एन्क्रिप्शन पैलियर क्रिप्टोसिस्टम पर आधारित है।
यह भी देखें
- फ्रैक्ट्रान
- बूलियन बीजगणित के लिए न्यूनतम सिद्धांत
- रजिस्टर मशीन
- ट्यूरिंग टैरपिट
- अल्प निर्देश सेट कंप्यूटर
- जटिल निर्देश सेट कंप्यूटर
- जीरो इंस्ट्रक्शन सेट कंप्यूटर
संदर्भ
- ↑ 1.0 1.1 Mavaddat, F.; Parhami, B. (October 1988). "URISC: The Ultimate Reduced Instruction Set Computer" (PDF). International Journal of Electrical Engineering Education. Manchester University Press. 25 (4): 327–334. doi:10.1177/002072098802500408. S2CID 61797084. Retrieved 2010-10-04. This paper considers "a machine with a single 3-address instruction as the ultimate in RISC design (URISC)". Without giving a name to the instruction, it describes a SBN OISC and its associated assembly language, emphasising that this is a universal (i.e., Turing-complete) machine whose simplicity makes it ideal for classroom use.
- ↑ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Gilreath, William F.; Laplante, Phillip A. (2003). Computer Architecture: A Minimalist Perspective. Springer Science+Business Media. ISBN 978-1-4020-7416-5. Archived from the original on 2009-06-13. Intended for researchers, computer system engineers, computational theorists and students, this book provides an in-depth examination of various OISCs, including SBN and MOVE. It attributes SBN to W. L. van der Poel (1956).
- ↑ 3.0 3.1 3.2 3.3 3.4 3.5 Nürnberg, Peter J.; Wiil, Uffe K.; Hicks, David L. (September 2003), "A Grand Unified Theory for Structural Computing", Metainformatics: International Symposium, MIS 2003, Graz, Austria: Springer Science+Business Media, pp. 1–16, ISBN 978-3-540-22010-7 This research paper focusses entirely on a SUBLEQ OISC and its associated assembly language, using the name SUBLEQ for "both the instruction and any language based upon it".
- ↑ "कार्बन नैनोट्यूब से बने पहले कंप्यूटर का अनावरण किया गया". BBC. 26 September 2013. Retrieved 26 September 2013.
- ↑ 5.0 5.1 Oleg Mazonka, "Bit Copying: The Ultimate Computational Simplicity", Complex Systems Journal 2011, Vol 19, N3, pp. 263–285
- ↑ "Addleq". Esolang Wiki. Retrieved 2017-09-16.
- ↑ "डीजेएन ओआईएससी". Esolang Wiki. Retrieved 2017-09-16.
- ↑ "P1e". Esolang Wiki. Retrieved 2017-09-16.
- ↑ 9.0 9.1 Mazonka, Oleg (October 2009). "सुबेलिया". Archived from the original on 2017-06-29. Retrieved 2017-09-16.
- ↑ 10.0 10.1 "सुबेलिया". Esolang Wiki. Retrieved 2017-09-16.
- ↑ Z. A. Melzak (1961). "An informal arithmetical approach to computability and computation". Canadian Mathematical Bulletin. 4 (3): 279–293. doi:10.4153/CMB-1961-031-9.
- ↑ xoreaxeaxeax. "movfuscator". GitHub. Retrieved 2022-11-12.
- ↑ "Dawn for SUBLEQ".
- ↑ https://www.gazetaeao.ru/zanimatelnaya-nauka-vchera-segodnya-zavtra/ A Russian article on popular science in Birobidzhaner Shtern with a brief discussion of Yoel Matveyev's Izhora computer
- ↑ https://habr.com/ru/post/584596/ A description of the virtual computer Izhora on Habr (in Russian)
- ↑ Oleg Mazonka A Simple Multi-Processor Computer Based on Subleq
- ↑ Z. A. Melzak (2018-11-20) [1961-09]. "कम्प्यूटेबिलिटी और कम्प्यूटेशन के लिए एक अनौपचारिक अंकगणितीय दृष्टिकोण". Canadian Mathematical Bulletin. 4 (3): 279–293. doi:10.4153/CMB-1961-032-6.
- ↑ J. Lambek (2018-11-20) [1961-09]. "कैसे एक अनंत अबेकस प्रोग्राम करने के लिए". Canadian Mathematical Bulletin. 4 (3): 295–302. doi:10.4153/CMB-1961-032-6.
- ↑ Jones, Douglas W. (June 1988). "The Ultimate RISC". ACM SIGARCH Computer Architecture News. New York: ACM. 16 (3): 48–55. doi:10.1145/48675.48683. S2CID 9481528. Retrieved 2010-10-04. "Reduced instruction set computer architectures have attracted considerable interest since 1980. The ultimate RISC architecture presented here is an extreme yet simple illustration of such an architecture. It has only one instruction, move memory to memory, yet it is useful."
- ↑ Catsoulis, John (2005), Designing embedded hardware (2 ed.), O'Reilly Media, pp. 327–333, ISBN 978-0-596-00755-3
- ↑ Mazonka, Oleg; Tsoutsos, Nektarios Georgios; Maniatakos, Michail (2016), "Cryptoleq: A Heterogeneous Abstract Machine for Encrypted and Unencrypted Computation", IEEE Transactions on Information Forensics and Security, 11 (9): 2123–2138, doi:10.1109/TIFS.2016.2569062, S2CID 261387
बाहरी संबंध
- सुब्लेक on the esoteric programming languages wiki – interpreters, compilers, examples and derivative languages
- Reductio ad absurdum on YouTube by Christopher Domas
- Laboratory सुबलेक computer – FPGA implementation using VHDL
- The Retrocomputing Museum – एसबीएन emulator and sample programs
- Laboratory एसबीएन computer – implemented with 7400 series integrated circuits
- आरएसएसबी on the esoteric programming languages wiki – interpreters and examples
- Dr. Dobb's 32-bit ओआईएससी implementation – transport triggered architecture (TTA) on an FPGA using Verilog
- Introduction to the मैक्सक्यू Architecture – includes transfer map diagram
- ओआईएससी-Emulator – graphical version
- TrapCC (recent Intel x86 MMUs are actually Turing-complete ओआईएससी.)
- इझोरा – Yoel Matveyev's सुब्लेक computer built as a cellular automation
- एसबीएन simulator – simulator and design inspired by CARDboard Illustrative Aid to Computation
- One-bit Computing at 60 Hertz – intermediate between a computer and a state machine
- The NOR Machine – info on building a CPU with only one Instruction
- सुबलेक eFORTH A complete Forth interpreter running on the सुबलेक ओआईएससी.
- क्रिप्टोलेक – क्रिप्टोलेक resources repository
- CAAMP – Computer Architecture A Minimalist Perspective
- SICO – Single Instruction COmputer: a variant of सुबलेक using unsigned integers