एक-निर्देश सेट कंप्यूटर: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Abstract machine that uses only one instruction}}
{{Short description|Abstract machine that uses only one instruction}}
{{Distinguish|1-bit computing}}
{{Distinguish|1-बिट कंप्यूटिंग}}
एक-निर्देश सेट कंप्यूटर (OISC), जिसे कभी-कभी परम [[RISC]] (URISC) कहा जाता है,  [[अमूर्त मशीन]] है जो केवल  निर्देश का उपयोग करती है।{{snd}}[[मशीन भाषा]] [[opcode]] की आवश्यकता को समाप्त करना।<ref name=urisc /><ref name=caamp /><ref name=agut />एकल निर्देश के विवेकपूर्ण विकल्प और अनंत संसाधनों के साथ,  OISC पारंपरिक कंप्यूटरों की तरह ही  सार्वभौमिक कंप्यूटर होने में सक्षम है, जिसमें कई निर्देश हैं।<ref name=caamp />{{rp|55}} OISCs को कंप्यूटर आर्किटेक्चर सिखाने में सहायता के रूप में अनुशंसित किया गया है<ref name=urisc />{{rp|327}}<ref name=caamp />{{rp|2}} और संरचनात्मक कंप्यूटिंग अनुसंधान में कम्प्यूटेशनल मॉडल के रूप में उपयोग किया गया है।<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" />'''
एक-निर्देश सेट कंप्यूटर (ओआईएससी), जिसे कभी-कभी परम [[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>
<br />
== मशीन आर्किटेक्चर ==
== मशीन आर्किटेक्चर ==
[[ट्यूरिंग पूर्णता]] | ट्यूरिंग-पूर्ण मॉडल में, प्रत्येक मेमोरी स्थान मनमाना पूर्णांक संग्रहीत कर सकता है, और{{snd}} मॉडल पर निर्भर करता है । मनमाने ढंग से कई स्थान हो सकते हैं. ऐसे पूर्णांकों के अनुक्रम के रूप में निर्देश स्वयं स्मृति में रहते हैं।
[[ट्यूरिंग पूर्णता]] मॉडल में, प्रत्येक मेमोरी स्थान इच्छानुसार पूर्णांक संग्रहीत कर सकता है, और मॉडल पर निर्भर करता है । इच्छानुसार कई स्थान हो सकते हैं ऐसे पूर्णांकों के अनुक्रम के रूप में निर्देश स्वयं मेमोरी में रहते हैं।


सार्वभौम कंप्यूटरों का वर्ग मौजूद है, जिसमें बिट हेरफेर पर आधारित एकल निर्देश होता है, जैसे [[बिट नकल]] करना या बिट उलटना। चूँकि उनका मेमोरी मॉडल परिमित है, जैसा कि वास्तविक कंप्यूटरों में उपयोग की जाने वाली मेमोरी संरचना है, वे बिट मैनिपुलेशन मशीनें ट्यूरिंग मशीनों के बजाय वास्तविक कंप्यूटरों के बराबर हैं।<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>
सार्वभौम कंप्यूटरों का वर्ग उपस्थित है जिसमें बिट मैनिपुलेटिंग पर आधारित एकल निर्देश होता है जैसे [[बिट नकल]] करना या बिट कों उलटना है। चूँकि उनका मेमोरी मॉडल परिमित है जैसा कि वास्तविक कंप्यूटरों में उपयोग की जाने वाली मेमोरी संरचना है वे बिट मैनिपुलेशन मशीनें ट्यूरिंग मशीनों के अतिरिक्त वास्तविक कंप्यूटरों के समान हैं।<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>
वर्तमान में ज्ञात OISCs को मोटे तौर पर तीन व्यापक श्रेणियों में विभाजित किया जा सकता है:
 
वर्तमान में ज्ञात ओआईएससी को सामान्यतः तीन व्यापक श्रेणियों में विभाजित किया जा सकता है


* बिट-मैनिपुलेटिंग मशीन
* बिट-मैनिपुलेटिंग मशीन
Line 16: Line 15:


=== बिट-मैनिपुलेटिंग मशीन ===
=== बिट-मैनिपुलेटिंग मशीन ===
[[ बिट हेरफेर ]] | बिट-मैनिपुलेटिंग मशीनें सबसे सरल वर्ग हैं।
[[ बिट हेरफेर | बिट मैनिपुलेटिंग]] मशीनें सबसे सरल वर्ग हैं।


==== फ्लिपजंप ====
==== फ्लिपजंप ====
[https://esolangs.org/wiki/FlipJump FlipJump] मशीन में 1 निर्देश है, a;b - बिट a को फ़्लिप करता है, फिर b पर जाता है। यह सबसे आदिम OISC है, लेकिन यह अभी भी उपयोगी है। यह अपने मानक पुस्तकालय की सहायता से गणित/तर्क गणना, ब्रांचिंग, पॉइंटर्स और कॉलिंग फ़ंक्शंस सफलतापूर्वक कर सकता है।
[https://esolangs.org/wiki/FlipJump फ्लिपजंप] मशीन में 1 निर्देश है , a;b - बिट a को फ़्लिप करता है, फिर b पर जाता है । यह सबसे ओआईएससी है । किन्तु यह अभी भी उपयोगी है। यह अपने मानक पुस्तकालय की सहायता से गणित/तर्क गणना, ब्रांचिंग, पॉइंटर्स और कॉलिंग फ़ंक्शंस सफलतापूर्वक कर सकता है।


==== बिटबिटजंप ====
==== बिटबिटजंप ====
बिट कॉपी मशीन,<ref name="mazonka" />BitBitJump कहा जाता है, स्मृति में बिट की प्रतिलिपि बनाता है और निष्पादन को निर्देश के किसी ऑपरेंड द्वारा निर्दिष्ट पते पर बिना शर्त पास करता है। यह प्रक्रिया सार्वभौमिक अभिकलन (अर्थात किसी भी एल्गोरिथ्म को निष्पादित करने और किसी अन्य सार्वभौमिक मशीन की व्याख्या करने में सक्षम होने) में सक्षम होने के लिए निकली है क्योंकि बिट्स की नकल सशर्त रूप से उस कोड को संशोधित कर सकती है जिसे बाद में निष्पादित किया जाएगा।
बिट कॉपी मशीन,<ref name="mazonka" /> बिटबिटजंप कहा जाता है, मेमोरी में बिट की प्रतिलिपि बनाता है और निष्पादन को निर्देश के किसी ऑपरेंड द्वारा निर्दिष्ट पते पर बिना शर्त पास करता है। यह प्रक्रिया सार्वभौमिक अभिकलन (अर्थात किसी भी एल्गोरिथ्म को निष्पादित करने और किसी अन्य सार्वभौमिक मशीन की व्याख्या करने में सक्षम होने) में सक्षम होने के लिए निकली है क्योंकि बिट्स की नकल सशर्त रूप से उस कोड को संशोधित कर सकती है जिसे बाद में निष्पादित किया जाएगा।


==== टोगा कंप्यूटर ====
==== टोगा कंप्यूटर ====
एक अन्य मशीन, जिसे [https://esolangs.org/wiki/TOGA_computer Toga Computer] कहा जाता है, थोड़ा इन्वर्ट करती है और व्युत्क्रम के परिणाम के आधार पर निष्पादन को सशर्त रूप से पास करती है। अद्वितीय निर्देश TOGA(a,b) है जो टॉगल ऑपरेशन के परिणाम के सही होने पर TOGgle ''a'' और शाखा से ''b'' के लिए है।
एक अन्य मशीन, जिसे [https://esolangs.org/wiki/TOGA_computer टोगा कंप्यूटर] कहा जाता है, थोड़ा इन्वर्ट करती है और व्युत्क्रम के परिणाम के आधार पर निष्पादन को सशर्त रूप से पास करती है। अद्वितीय निर्देश टोगा (a,b) है जो टॉगल संचालन के परिणाम के सही होने पर टॉगल ''a'' और शाखा से ''b'' के लिए है।


==== मल्टी-बिट कॉपी करने वाली मशीन ====
==== मल्टी-बिट कॉपी करने वाली मशीन ====
BitBitJump के समान, मल्टी-बिट कॉपी करने वाली मशीन एक ही समय में कई बिट्स को कॉपी करती है। इस मामले में मेमोरी में पूर्वनिर्धारित जंप टेबल रखने से ट्यूरिंग पूर्णता की समस्या हल हो जाती है।
बिटबिटजंप के समान, मल्टी-बिट कॉपी करने वाली मशीन एक ही समय में कई बिट्स को कॉपी करती है। इस स्थिति में मेमोरी में पूर्वनिर्धारित जंप टेबल रखने से ट्यूरिंग पूर्णता की समस्या हल हो जाती है।


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


=== अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें ===
=== अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें ===
अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें अंकगणितीय ऑपरेशन और सशर्त छलांग का उपयोग करती हैं। पिछले दो यूनिवर्सल कंप्यूटरों की तरह, यह वर्ग भी ट्यूरिंग-पूर्ण है। निर्देश पूर्णांकों पर संचालित होता है जो स्मृति में पते भी हो सकते हैं।
अंकगणित-आधारित ट्यूरिंग-पूर्ण मशीनें अंकगणितीय संचालन और सशर्त छलांग का उपयोग करती हैं। पिछले दो यूनिवर्सल कंप्यूटरों की तरह, यह वर्ग भी ट्यूरिंग-पूर्ण है। निर्देश पूर्णांकों पर संचालित होता है जो मेमोरी में पते भी हो सकते हैं।


वर्तमान में विभिन्न अंकगणितीय परिचालनों के आधार पर इस वर्ग के कई ज्ञात ओआईएससी हैं:
वर्तमान में विभिन्न अंकगणितीय परिचालनों के आधार पर इस वर्ग के कई ज्ञात ओआईएससी हैं


* जोड़ (Addleq, <u>जोड़ें</u> और शाखा अगर <u>l</u>से या <u>eq</u>शून्य से)<ref name="esolang-addleq">{{cite web |url=https://esolangs.org/wiki/Addleq|title=Addleq|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref>
*जोड़ (अडलेक जोड़ और शाखा यदि शून्य से कम या उसके समान है) <ref name="esolang-addleq">{{cite web |url=https://esolangs.org/wiki/Addleq|title=Addleq|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref>
* कमी (DJN, <u>D</u>वृद्धि और शाखा (<u>J</u>ump) अगर <u>N</u>onzero)<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>
* वेतन वृद्धि (P1eq, <u>P</u>lus <u>1</u> और शाखा यदि <u>eq</u>ual से अन्य मान)<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>
* घटाव (subleq, <u>sub</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>
* घटाव (सुबलेक, <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="melzak">
*घटाना (सुब्लेक, घटाना और शाखा यदि शून्य से कम या उसके समान) <ref name="mazonka-subleq" /> <ref name="esolang-subleq" />
* सकारात्मक घटाव जब संभव हो, अन्यथा शाखा (अंकगणितीय मशीन) <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>
== निर्देश प्रकार ==
== निर्देश प्रकार ==
एकल निर्देश के लिए सामान्य विकल्प हैं:
एकल निर्देश के लिए सामान्य विकल्प हैं:


* #घटाना और शाखा यदि शून्य से कम या उसके बराबर है
* घटाना और शाखा यदि शून्य से कम या उसके समान है
* #नकारात्मक हो तो घटाएं और शाखा दें
* नकारात्मक हो तो घटाएं और शाखा दें
*#अंकगणित यंत्र
*#अंकगणित यंत्र
* #उधार लें तो उल्टा घटाएं और छोड़ें
* उल्टा घटाएं और छोड़ें
* #Transport ट्रिगर आर्किटेक्चर (ट्रांसपोर्ट ट्रिगर आर्किटेक्चर के हिस्से के रूप में उपयोग किया जाता है)<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>
* #घटाना और शाखा अगर गैर शून्य (एसबीएनजेड ए, बी, सी, गंतव्य)
* घटाना और शाखा यदि गैर शून्य (एसबीएनजेड ए, बी, सी, गंतव्य)
* #Cryptoleq (विषम एन्क्रिप्टेड और अनएन्क्रिप्टेड संगणना)
* क्रिप्टोलेक (विषम एन्क्रिप्टेड और अनएन्क्रिप्टेड संगणना)


दिए गए कार्यान्वयन में इनमें से केवल निर्देश का उपयोग किया जाता है। इसलिए, किस निर्देश को निष्पादित करना है, इसकी पहचान करने के लिए ओपकोड की कोई आवश्यकता नहीं है; निर्देश का विकल्प मशीन के डिजाइन में निहित है, और OISC का नाम आमतौर पर उस निर्देश के नाम पर रखा जाता है जिसका वह उपयोग करता है (उदाहरण के लिए, SBN OISC,<ref name=caamp />{{rp|41}} SUBLEQ भाषा,<ref name="agut" />{{rp|4}} वगैरह।)। उपरोक्त प्रत्येक निर्देश का उपयोग ट्यूरिंग-पूर्ण OISC के निर्माण के लिए किया जा सकता है।
दिए गए कार्यान्वयन में इनमें से केवल निर्देश का उपयोग किया जाता है। इसलिए, किस निर्देश को निष्पादित करना है, इसकी पहचान करने के लिए ओपकोड की कोई आवश्यकता नहीं है निर्देश का विकल्प मशीन के रचना में निहित है, और ओआईएससी का नाम सामान्यतः उस निर्देश के नाम पर रखा जाता है जिसका वह उपयोग करता है (उदाहरण के लिए, एसबीएन ओआईएससी,<ref name=caamp />{{rp|41}} सुबलेक भाषा),<ref name="agut" />{{rp|4}} उपरोक्त प्रत्येक निर्देश का उपयोग ट्यूरिंग-पूर्ण ओआईएससी के निर्माण के लिए किया जा सकता है।


यह आलेख उन लोगों के बीच केवल घटाव-आधारित निर्देश प्रस्तुत करता है जो परिवहन ट्रिगर नहीं होते हैं। हालांकि, अन्य अंकगणितीय परिचालनों, जैसे, जोड़ के आधार पर निर्देश का उपयोग करके ट्यूरिंग पूर्ण मशीनों का निर्माण करना संभव है। उदाहरण के लिए, डीएलएन (डिक्रीमेंट और जंप इफ जीरो नहीं) के रूप में जाना जाने वाला वेरिएशन में केवल दो ऑपरेंड होते हैं और डिक्रीमेंट को बेस ऑपरेशन के रूप में उपयोग करते हैं। अधिक जानकारी के लिए Subleq व्युत्पन्न भाषाएं देखें [http://esolangs.org/wiki/Subleq]।
यह आलेख उन लोगों के बीच केवल घटाव-आधारित निर्देश प्रस्तुत करता है जो परिवहन ट्रिगर नहीं होते हैं। चूंकि, अन्य अंकगणितीय परिचालनों, जैसे, जोड़ के आधार पर निर्देश का उपयोग करके ट्यूरिंग पूर्ण मशीनों का निर्माण करना संभव है। उदाहरण के लिए, डीएलएन (डिक्रीमेंट और जंप इफ जीरो नहीं) के रूप में जाना जाने वाला वेरिएशन में केवल दो ऑपरेंड होते हैं और डिक्रीमेंट को बेस संचालन के रूप में उपयोग करते हैं। अधिक जानकारी के लिए सुब्लेक व्युत्पन्न भाषाएं देखें [http://esolangs.org/wiki/Subleq]।


=== शून्य === के बराबर नहीं होने पर घटाएं और शाखा करें <code>SBNZ a, b, c, d</code> ई> निर्देश (घटाना और शाखा यदि शून्य के बराबर नहीं है) पते पर सामग्री को पते बी पर सामग्री से घटाता है, परिणाम को पते सी पर संग्रहीत करता है, और फिर, यदि परिणाम 0 नहीं है, तो पता डी पर नियंत्रण स्थानांतरित करता है (यदि परिणाम शून्य के बराबर है, निष्पादन क्रम में अगले निर्देश के लिए आगे बढ़ता है)।<ref name=agut />
शून्य के समान नहीं होने पर घटाएं और शाखा करें <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}} [[स्यूडोकोड]]:<syntaxhighlight>
Instruction subleq a, b, c
    Mem[b] = Mem[b] - Mem[a]
    if (Mem[b] ≤ 0)
        goto c
</syntaxhighlight>


=== शून्य से कम या बराबर होने पर घटाएं और शाखा करें === {{mono|subleq}eq}} निर्देश (घटाना और शाखा यदि शून्य से कम या उसके बराबर है) पते पर सामग्री घटाता है {{mono|a}} पते पर सामग्री से {{mono|b}}, परिणाम को पते पर संग्रहीत करता है {{mono|b}}, और फिर, यदि परिणाम सकारात्मक नहीं है, तो नियंत्रण को पते पर स्थानांतरित कर देता है {{mono|c}} (यदि परिणाम सकारात्मक है, तो निष्पादन क्रम में अगले निर्देश पर जाता है)।<ref name=agut />{{rp|4–7}} [[स्यूडोकोड]]:
क्रम में अगले निर्देश के पते के समान तीसरा ऑपरेंड सेट करके सशर्त ब्रांचिंग को दबाया जा सकता है। यदि तीसरा ऑपरेंड नहीं लिखा गया है, तो यह दमन निहित है।
 
अनुदेश <syntaxhighlight lang="nasm" inline>subleq a, b, c</syntaxhighlight>
मेम [बी] = मेम [बी] - मेम [ए]
    अगर (मेम [बी] ≤ 0)
        गोटो सी
 
क्रम में अगले निर्देश के पते के बराबर तीसरा ऑपरेंड सेट करके सशर्त ब्रांचिंग को दबाया जा सकता है। यदि तीसरा ऑपरेंड नहीं लिखा गया है, तो यह दमन निहित है।
 
दो ऑपरेंड और  आंतरिक [[संचायक (कंप्यूटिंग)]] के साथ  संस्करण भी संभव है, जहां संचायक को पहले ऑपरेंड द्वारा निर्दिष्ट मेमोरी स्थान से घटाया जाता है। परिणाम संचायक और स्मृति स्थान दोनों में संग्रहीत होता है, और दूसरा ऑपरेंड शाखा पता निर्दिष्ट करता है:


अनुदेश <syntaxhighlight lang="nasm" inline>subleq2 a, b</syntaxhighlight>
दो ऑपरेंड और आंतरिक [[संचायक (कंप्यूटिंग)]] के साथ संस्करण भी संभव है, जहां संचायक को पहले ऑपरेंड द्वारा निर्दिष्ट मेमोरी स्थान से घटाया जाता है। परिणाम संचायक और मेमोरी स्थान दोनों में संग्रहीत होता है, और दूसरा ऑपरेंड शाखा पता निर्दिष्ट करता है:<syntaxhighlight>
मेम [] = मेम [] - एसीसीयूएम
Instruction subleq2 a, b
    एसीसीयूएम = मेम []
    Mem[a] = Mem[a] - ACCUM
    अगर (मेम [] ≤ 0)
    ACCUM = Mem[a]
        गोटो बी
    if (Mem[a] ≤ 0)
 
        goto b
यद्यपि यह प्रति निर्देश केवल दो (तीन के बजाय) ऑपरेंड का उपयोग करता है, तदनुसार विभिन्न तार्किक संचालन को प्रभावित करने के लिए अधिक निर्देशों की आवश्यकता होती है।
</syntaxhighlight>यद्यपि यह प्रति निर्देश केवल दो (तीन के अतिरिक्त) ऑपरेंड का उपयोग करता है तदनुसार विभिन्न तार्किक संचालन को प्रभावित करने के लिए अधिक निर्देशों की आवश्यकता होती है।


==== संश्लेषित निर्देश ====
==== संश्लेषित निर्देश ====
केवल का उपयोग करके कई प्रकार के उच्च-क्रम के निर्देशों को संश्लेषित करना संभव है {{mono|subleq}} निर्देश।<ref name=agut />{{rp|9–10}}
केवल का उपयोग करके कई प्रकार के उच्च-क्रम के {{mono|subleq}} निर्देश को संश्लेषित करना संभव है।<ref name=agut />{{rp|9–10}}


बिना शर्त शाखा:
बिना शर्त शाखा:
Line 92: 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 100: 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 के रूप में बनाए रखा जाता है


;{{mono|MOV a, b}}
;{{mono|MOV a, b}}
Line 111: Line 106:
   subleq Z, Z
   subleq Z, Z
</syntaxhighlight>
</syntaxhighlight>
कोई वांछित अंकगणितीय परीक्षण बनाया जा सकता है। उदाहरण के लिए, निम्नलिखित निर्देशों से एक शाखा-यदि-शून्य स्थिति को इकट्ठा किया जा सकता है:
कोई वांछित अंकगणितीय परीक्षण बनाया जा सकता है। उदाहरण के लिए, निम्नलिखित निर्देशों से एक शाखा-यदि-शून्य स्थिति को इकट्ठा किया जा सकता है


;{{mono|BEQ b, c}}
;{{mono|BEQ b, c}}
Line 123: Line 118:
   ...
   ...
</syntaxhighlight>
</syntaxhighlight>
Subleq2 का उपयोग उच्च-क्रम के निर्देशों को संश्लेषित करने के लिए भी किया जा सकता है, हालाँकि इसे आमतौर पर किसी दिए गए कार्य के लिए अधिक संचालन की आवश्यकता होती है। उदाहरण के लिए, किसी दिए गए बाइट में सभी बिट्स को फ़्लिप करने के लिए कम से कम 10 subleq2 निर्देशों की आवश्यकता होती है:
सुबलेक 2 का उपयोग उच्च-क्रम के निर्देशों को संश्लेषित करने के लिए भी किया जा सकता है । चूँकि इसे सामान्यतः किसी दिए गए कार्य के लिए अधिक संचालन की आवश्यकता होती है। उदाहरण के लिए, किसी दिए गए बाइट में सभी बिट्स को फ़्लिप करने के लिए कम से कम 10 सुबलेक 2 निर्देशों की आवश्यकता होती है


;{{mono|NOT a}}
;{{mono|NOT a}}
Line 138: Line 133:
   subleq2 Z            ; set Z back to 0
   subleq2 Z            ; set Z back to 0
</syntaxhighlight>
</syntaxhighlight>


==== अनुकरण ====
==== अनुकरण ====
निम्नलिखित प्रोग्राम (स्यूडोकोड में लिखा गया) एक के निष्पादन का अनुकरण करता है {{mono|subleq}}-आधारित OISC:
निम्नलिखित प्रोग्राम (स्यूडोकोड में लिखा गया) एक के निष्पादन {{mono|सुबलेक}}-आधारित ओआईएससी का अनुकरण करता है ।


<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
Line 159: Line 153:
             program_counter = c
             program_counter = c
</syntaxhighlight>
</syntaxhighlight>
यह कार्यक्रम मानता है {{mono|memory[]}} को गैर-ऋणात्मक पूर्णांकों द्वारा अनुक्रमित किया जाता है। नतीजतन, ए के लिए {{mono|subleq}} निर्देश ({{mono|a}}, {{mono|b}}, {{mono|c}}), कार्यक्रम व्याख्या करता है {{mono|a < 0}}, {{mono|b < 0}}, या निष्पादित शाखा {{mono|c < 0}} रुकने की स्थिति के रूप में। इसी तरह के दुभाषियों को ए में लिखा गया है {{mono|subleq}}-आधारित भाषा (यानी, स्व-दुभाषिया, जो [[स्व-संशोधित कोड]] का उपयोग कर सकते हैं जैसा कि प्रकृति द्वारा अनुमत है {{mono|subleq}} निर्देश) नीचे दिए गए बाहरी लिंक्स में पाया जा सकता है।
यह कार्यक्रम मानता है {{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-बिट Subleq कंप्यूटर और Izhora नामक  कीबोर्ड का निर्माण  बड़े [[सेल्यूलर आटोमेटा]] पैटर्न के रूप में [[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>


डॉन ओएस नामक सामान्य उद्देश्य [[सममित मल्टीप्रोसेसिंग]]-सक्षम 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|subleq}} कोड को संकलित करता है ।<ref>Oleg Mazonka [https://arxiv.org/abs/1106.2593 A Simple Multi-Processor Computer Based on Subleq]</ref>
 


=== नकारात्मक होने पर घटाएं और शाखा करें === {{mono|subneg}उदाहरण}} निर्देश (घटाना और नकारात्मक होने पर शाखा), जिसे भी कहा जाता है {{mono|SBN}}, इसी तरह परिभाषित किया गया है {{mono|subleq}}:<ref name=caamp />{{rp|41,51–52}}
नकारात्मक होने पर घटाएं और शाखा करें {{mono|सबनेग}उदाहरण}} निर्देश (घटाना और नकारात्मक होने पर शाखा), जिसे {{mono|एसबीएन}} भी कहा जाता है । इसी तरह {{rp|41,51–52}} {{mono|सुबलेक}} परिभाषित किया गया है ।<ref name=caamp /><syntaxhighlight>
 
Instruction subneg a, b, c
अनुदेश <syntaxhighlight lang="nasm" inline>subneg a, b, c</syntaxhighlight>
    Mem[b] = Mem[b] - Mem[a]
मेम [बी] = मेम [बी] - मेम []
    if (Mem[b] < 0)
    अगर (मेम [बी] <0)
        goto c
        गोटो सी
</syntaxhighlight>क्रम में अगले निर्देश के पते के समान तीसरा ऑपरेंड सेट करके सशर्त ब्रांचिंग को दबाया जा सकता है। यदि तीसरा ऑपरेंड नहीं लिखा गया है, तो यह दमन निहित है।
 
क्रम में अगले निर्देश के पते के बराबर तीसरा ऑपरेंड सेट करके सशर्त ब्रांचिंग को दबाया जा सकता है। यदि तीसरा ऑपरेंड नहीं लिखा गया है, तो यह दमन निहित है।


==== संश्लेषित निर्देश ====
==== संश्लेषित निर्देश ====
केवल का उपयोग करके कई प्रकार के उच्च-क्रम के निर्देशों को संश्लेषित करना संभव है {{mono|subneg}} निर्देश। सादगी के लिए, केवल संश्लेषित निर्देश के बीच के अंतर को दर्शाने के लिए यहां दिखाया गया है {{mono|subleq}} और {{mono|subneg}}.
केवल का उपयोग करके कई प्रकार के उच्च-क्रम के निर्देशों को संश्लेषित करना संभव है {{mono|subneg}} निर्देश सादगी के लिए, केवल संश्लेषित निर्देश के बीच के अंतर को दर्शाने के लिए यहां दिखाया गया है {{mono|subleq}} और {{mono|subneg}}. होते है ।


बिना शर्त शाखा:<ref name=caamp />{{rp|88–89}}
बिना शर्त शाखा:<ref name=caamp />{{rp|88–89}}
Line 187: 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}} ब्रांचिंग के बाद, यह मानते हुए कि की सामग्री {{mono|Z}} को 0 के रूप में बनाए रखा जाना चाहिए।
बिना शर्त ब्रांचिंग का आश्वासन केवल तभी दिया जाता है {{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>


अनुदेश <syntaxhighlight lang="nasm" inline>subneg s, m, r, j</syntaxhighlight>
=== अंकगणितीय मशीन ===
(* घटाना, घटाना, परिणाम और कूद पते *)
ट्यूरिंग मशीन को और अधिक सहज बनाने के प्रयास में, जेड ए मेल्ज़ाक सकारात्मक संख्याओं के साथ कंप्यूटिंग के कार्य पर विचार करता है। मशीन में अनंत अबैकस होता है । प्रारंभ में विशेष स्थान S पर अनंत संख्या में काउंटर (कंकड़, टैली स्टिक) होते हैं। मशीन संचालन करने में सक्षम है:
    मेम [आर] = मेम [एम] - मेम [एस]
    'अगर' (मेम [आर] <0)
        'गोटो' जे


=== अंकगणितीय मशीन ===
ट्यूरिंग मशीन को और अधिक सहज बनाने के प्रयास में, Z. A. Melzak सकारात्मक संख्याओं के साथ कंप्यूटिंग के कार्य पर विचार करता है। मशीन में  अनंत अबैकस होता है, शुरू में  विशेष स्थान 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
अनुदेश <syntaxhighlight lang="nasm" inline>melzak X, Y, Z, n, y</syntaxhighlight>
    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 अभाज्य संख्या की गणना, मनमाना संख्या के आधार ''b'' में प्रतिनिधित्व, परिमाण के क्रम में छँटाई, Melzak स्पष्ट रूप से दिखाता है कि मनमाने ढंग से ट्यूरिंग का अनुकरण कैसे किया जाता है मशीन उसकी अंकगणितीय मशीन पर।


;{{mono|MUL p, q}}
;{{mono|MUL p, q}}
Line 224: 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 पर जाएं)।


=== उल्टा घटाना और उधार लेना छोड़ दें ===
=== उल्टा घटाना और उधार लेना छोड़ दें ===
रिवर्स सब्ट्रैक्ट एंड स्किप इफ बॉरो (RSSB) निर्देश में, एक्युमुलेटर (कंप्यूटिंग) को मेमोरी लोकेशन से घटाया जाता है और अगर कोई बॉरो होता है तो अगला इंस्ट्रक्शन स्किप कर दिया जाता है (मेमोरी लोकेशन एक्युमुलेटर से छोटा था)। परिणाम संचायक और स्मृति स्थान दोनों में संग्रहीत होता है। [[ कार्यक्रम गणक ]] को मेमोरी लोकेशन 0 पर मैप किया जाता है। संचायक को मेमोरी लोकेशन 1 पर मैप किया जाता है।<ref name=caamp />
रिवर्स सब्ट्रैक्ट एंड स्किप इफ बॉरो (आरएसएसबी) निर्देश में, एक्युमुलेटर (कंप्यूटिंग) को मेमोरी लोकेशन से घटाया जाता है और यदि कोई बॉरो होता है तो अगला इंस्ट्रक्शन स्किप कर दिया जाता है (मेमोरी लोकेशन एक्युमुलेटर से छोटा था)। परिणाम संचायक और मेमोरी स्थान दोनों में संग्रहीत होता है। [[ कार्यक्रम गणक |कार्यक्रम गणक]] को मेमोरी लोकेशन 0 पर मैप किया जाता है। संचायक को मेमोरी लोकेशन 1 पर मैप किया जाता है।<ref name=caamp />


अनुदेश <syntaxhighlight lang="nasm" inline>rssb x</syntaxhighlight>
<syntaxhighlight>
एसीसीयूएम = मेम [एक्स] - एसीसीयूएम
Instruction rssb x
    मेम [एक्स] = एसीसीयूएम
    ACCUM = Mem[x] - ACCUM
    अगर (वर्तमान <0)
    Mem[x] = ACCUM
        गोटो पीसी + 2
    if (ACCUM < 0)
        goto PC + 2
</syntaxhighlight>


==== उदाहरण ====
==== उदाहरण ====
Line 258: Line 248:
   RSSB x    # x = y - z [See Note 2]
   RSSB x    # x = y - z [See Note 2]
</syntaxhighlight>
</syntaxhighlight>
* [नोट 1] यदि अस्थायी रूप से संग्रहीत मान प्रारंभ में नकारात्मक मान है और इस रूटीन में उधार लिए गए पहले RSSB अस्थायी से ठीक पहले निष्पादित किया गया निर्देश है, तो कार्य करने के लिए दिनचर्या के लिए चार RSSB अस्थायी निर्देशों की आवश्यकता होगी।
* [नोट 1] यदि अस्थायी रूप से संग्रहीत मान प्रारंभ में नकारात्मक मान है और इस रूटीन में उधार लिए गए पहले आरएसएसबी अस्थायी से ठीक पहले निष्पादित किया गया निर्देश है, तो कार्य करने के लिए दिनचर्या के लिए चार आरएसएसबी अस्थायी निर्देशों की आवश्यकता होगी।
* [नोट 2] यदि z पर संग्रहीत मान प्रारंभ में ऋणात्मक मान है तो अंतिम RSSB x को छोड़ दिया जाएगा और इस प्रकार दिनचर्या काम नहीं करेगी।
* [नोट 2] यदि z पर संग्रहीत मान प्रारंभ में ऋणात्मक मान है तो अंतिम आरएसएसबी x को छोड़ दिया जाएगा और इस प्रकार दिनचर्या काम नहीं करेगी।


=== ट्रांसपोर्ट ट्रिगर आर्किटेक्चर ===
=== ट्रांसपोर्ट ट्रिगर आर्किटेक्चर ===
{{Main|Transport triggered architecture}}
{{Main|ट्रांसपोर्ट ट्रिगर आर्किटेक्चर}}
ट्रांसपोर्ट ट्रिगर आर्किटेक्चर केवल मूव इंस्ट्रक्शन का उपयोग करता है, इसलिए इसे मूल रूप से मूव मशीन कहा जाता था। यह निर्देश नए स्थान की वर्तमान सामग्री के साथ संयोजन करके  स्मृति स्थान की सामग्री को दूसरे स्मृति स्थान पर ले जाता है:<ref name=caamp />{{rp|42}}<ref name=dwj />
 
अनुदेश <syntaxhighlight lang="nasm" inline>movx a, b</syntaxhighlight> (यह भी लिखा है a -> b)
    ओपी = गेटऑपरेशन (मेम [बी])
    मेम [बी]: = ओपी (मेम [ए], मेम [बी])
 
प्रदर्शन किया गया ऑपरेशन गंतव्य मेमोरी सेल द्वारा परिभाषित किया गया है। कुछ कोशिकाएं इसके अलावा, कुछ अन्य गुणन आदि में विशिष्ट हैं। इसलिए मेमोरी सेल साधारण स्टोर नहीं हैं, बल्कि सेल के वर्तमान मूल्य के साथ केवल  प्रकार का ऑपरेशन करने के लिए  [[अंकगणितीय तर्क इकाई]] (ALU) सेटअप के साथ युग्मित हैं। कुछ सेल [[ बहाव को काबू करें ]] इंस्ट्रक्शन हैं जो प्रोग्राम एक्जीक्यूशन को जंप, एड्रेसिंग मोड#कंडीशनल एक्जीक्यूशन, [[सबरूटीन्स]], [[अगर तब या]], [[पाश के लिए]], आदि के साथ बदलने के लिए हैं...
 
MAXQ नामक  वाणिज्यिक परिवहन ट्रिगर आर्किटेक्चर माइक्रोकंट्रोलर का उत्पादन किया गया है, जो स्थानांतरण निर्देशों के लिए सभी संभावित गंतव्यों का प्रतिनिधित्व करने वाले स्थानांतरण मानचित्र का उपयोग करके OISC की स्पष्ट असुविधा को छुपाता है।<ref name=deh />


ट्रांसपोर्ट ट्रिगर आर्किटेक्चर केवल मूव इंस्ट्रक्शन का उपयोग करता है, इसलिए इसे मूल रूप से मूव मशीन कहा जाता था। यह निर्देश नए स्थान की वर्तमान पदार्थ के साथ संयोजन करके मेमोरी स्थान की पदार्थ को दूसरे मेमोरी स्थान पर ले जाता है ।<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 /> नामांकित निर्देश वाली भाषा है, एन्क्रिप्टेड प्रोग्राम पर सामान्य-उद्देश्य गणना करने में सक्षम है और Subleq के करीबी रिश्तेदार है। क्रिप्टोलिक डायरेक्ट और इनडायरेक्ट एड्रेसिंग का उपयोग करते हुए मेमोरी की निरंतर कोशिकाओं पर काम करता है, और दो ऑपरेशन करता है {{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
अनुदेश <syntaxhighlight lang="nasm" inline>cryptoleq a, b, c</syntaxhighlight>
    Mem[b] = O1(Mem[a], Mem[b])
मेम [बी] = ओ<sub>1</sub>(मेम [], मेम [बी])
    if O2(Mem[b]) ≤ 0
    मैं एफओ<sub>2</sub>(मेम [बी]) ≤ 0
        IP = c
        आईपी ​​​​= सी
    else
    अन्य
        IP = IP + 3
        आईपी ​​\u003d आईपी + 3
</syntaxhighlight>जहां ए, बी और सी को निर्देश सूचक, आईपी द्वारा संबोधित किया जाता है आईपी एड्रेसिंग ए, आईपी + 1 पॉइंट टू बी और आईपी + 2 टू सी के मूल्य के साथ क्रिप्टोलैक ऑपरेशंस में {{math|''O''<sub>1</sub>}} और {{math|''O''<sub>2</sub>}} को इस प्रकार परिभाषित किया गया है
 
जहां ए, बी और सी को निर्देश सूचक, आईपी द्वारा संबोधित किया जाता है, आईपी एड्रेसिंग ए, आईपी + 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>
:<math>\begin{array}{lcl} O_2(x) & = & \left \lfloor \frac{x-1}{N} \right \rfloor  \end{array}</math>
:<math>\begin{array}{lcl} O_2(x) & = & \left \lfloor \frac{x-1}{N} \right \rfloor  \end{array}</math>
Subleq के साथ मुख्य अंतर यह है कि Subleq में, {{math|''O''<sub>1</sub>(''x,y'')}} बस घटा देता है {{mvar|y}} से {{mvar|x}} और {{math|''O''<sub>2</sub>(''x'')}} बराबर है {{mvar|x}}. क्रिप्टोलिक सुब्लेक के लिए भी होमोमोर्फिक है, मॉड्यूलर उलटा और गुणन घटाव और संचालन के लिए होमोमोर्फिक है {{math|''O''<sub>2</sub>}} Subleq परीक्षण से मेल खाता है यदि मान अनएन्क्रिप्टेड थे। Subleq में लिखा गया प्रोग्राम Cryptoleq मशीन पर चल सकता है, जिसका अर्थ है पश्चगामी संगतता। क्रिप्टोलिक हालांकि, पूरी तरह से होमोमोर्फिक गणनाओं को लागू करता है और चूंकि मॉडल गुणन करने में सक्षम है। एन्क्रिप्टेड डोमेन पर गुणन को एक अद्वितीय फ़ंक्शन जी द्वारा सहायता प्रदान की जाती है जिसे रिवर्स इंजीनियर के लिए मुश्किल माना जाता है और इसके आधार पर मूल्य के पुन: एन्क्रिप्शन की अनुमति देता है। {{math|''O''<sub>2</sub>}} कार्यवाही:
सुब्लेक के साथ मुख्य अंतर यह है कि सुब्लेक में, O1(x,y) केवल y को x से घटाता है और O2(x) x के समान होता है। क्रिप्टोलिक सुबलेक के लिए भी होमोमोर्फिक है मॉड्यूलर उलटा और गुणन घटाव के लिए होमोमोर्फिक है और यदि मान अनएन्क्रिप्टेड थे तो O2 का संचालन सुब्लेक परीक्षण से मेल खाता है। सुब्लेक में लिखा गया एक प्रोग्राम क्रिप्टोलेक मशीन पर चल सकता है जिसका अर्थ है पश्चगामी संगतता क्रिप्टोलिक चूँकि, पूरी तरह से होमोमोर्फिक गणनाओं को प्रयुक्त करता है और चूंकि मॉडल गुणन करने में सक्षम है। एक एन्क्रिप्टेड डोमेन पर गुणन को एक अद्वितीय फ़ंक्शन G द्वारा सहायता प्रदान की जाती है जिसे रिवर्स इंजीनियर के लिए मुश्किल माना जाता है और O2 संचालन के आधार पर मान के पुन: एन्क्रिप्शन की अनुमति देता है ।


:<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> के बराबर होती है {{tmath|Nm + 1}}.
जहां <math>\tilde{y}</math> {{mvar|y}} का पुनः एन्क्रिप्टेड मान है और <math>\tilde{0}</math> शून्य एन्क्रिप्ट किया गया है। {{mvar|x}} एक चर का एन्क्रिप्टेड मान है, इसे {{mvar|m}} होने दें, और <math>\bar{x}</math> समान {{tmath|Nm + 1}} है ।


गुणन एल्गोरिथ्म जोड़ और घटाव पर आधारित है, फ़ंक्शन G का उपयोग करता है और इसमें न तो सशर्त छलांग होती है और न ही शाखाएँ। क्रिप्टोलेक एन्क्रिप्शन [[पैलियर क्रिप्टोसिस्टम]] पर आधारित है।
गुणन एल्गोरिथ्म जोड़ और घटाव पर आधारित है फ़ंक्शन G का उपयोग करता है और इसमें न तो सशर्त छलांग होती है और न ही शाखाएँ क्रिप्टोलेक एन्क्रिप्शन [[पैलियर क्रिप्टोसिस्टम]] पर आधारित है।


== यह भी देखें ==
== यह भी देखें ==
Line 403: Line 386:


== बाहरी संबंध ==
== बाहरी संबंध ==
<!-- Do not add any external links that are available on the sites already linked! -->
 
* [http://esolangs.org/wiki/Subleq 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 subleq computer] – [[FPGA]] implementation using [[VHDL]]
* [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] – SBN 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 SBN 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
* [http://esolangs.org/wiki/RSSB RSSB on the esoteric programming languages wiki] – interpreters and examples
* [http://esolangs.org/wiki/RSSB आरएसएसबी on the esoteric programming languages wiki] – interpreters and examples
* [http://www.ddj.com/embedded/221800122?pgno=1 Dr. Dobb's 32-bit OISC implementation] – transport triggered architecture (TTA) on an [[FPGA]] using [[Verilog]]
* [http://www.ddj.com/embedded/221800122?pgno=1 Dr. Dobb's 32-bit ओआईएससी implementation] – transport triggered architecture (TTA) on an [[FPGA]] using [[Verilog]]
* [http://www.maxim-ic.com/appnotes.cfm/appnote_number/3222 Introduction to the MAXQ Architecture] – includes transfer map diagram
* [http://www.maxim-ic.com/appnotes.cfm/appnote_number/3222 Introduction to the मैक्सक्यू Architecture] – includes transfer map diagram
* [http://sourceforge.net/projects/oiscemulator OISC-Emulator] – graphical version
* [http://sourceforge.net/projects/oiscemulator ओआईएससी-Emulator] – graphical version
* [https://github.com/jbangert/trapcc TrapCC] (recent Intel x86 MMUs are actually Turing-complete OISCs.)
* [https://github.com/jbangert/trapcc TrapCC] (recent Intel x86 MMUs are actually Turing-complete ओआईएससी.)
* [https://github.com/yoelmatveyev/Izhora Izhora] – Yoel Matveyev's Subleq computer built as a cellular automation
* [https://github.com/yoelmatveyev/Izhora इझोरा] – Yoel Matveyev's सुब्लेक computer built as a cellular automation
* [http://cs.drexel.edu/~bls96/oisc/ SBN simulator] – simulator and design inspired by [[CARDboard Illustrative Aid to Computation]]
* [http://cs.drexel.edu/~bls96/oisc/ एसबीएन simulator] – simulator and design inspired by [[CARDboard Illustrative Aid to Computation]]
* [http://laughtonelectronics.com/Arcana/One-bit%20computer/One-bit%20computer.html One-bit Computing at 60 Hertz] – intermediate between a computer and a [[state machine]]
* [http://laughtonelectronics.com/Arcana/One-bit%20computer/One-bit%20computer.html One-bit Computing at 60 Hertz] – intermediate between a computer and a [[state machine]]
* [https://demin.ws/blog/english/2010/04/06/modelling-a-cpu-with-only-one-operation/ The NOR Machine]{{snd}}info on building a CPU with only one Instruction
* [https://demin.ws/blog/english/2010/04/06/modelling-a-cpu-with-only-one-operation/ The NOR Machine]{{snd}}info on building a CPU with only one Instruction
* [https://github.com/howerj/subleq/ SUBLEQ eFORTH] A complete Forth interpreter running on the SUBLEQ OISC.
* [https://github.com/howerj/subleq/ सुबलेक eFORTH] A complete Forth interpreter running on the सुबलेक ओआईएससी.
* [https://github.com/momalab/cryptoleq Cryptoleq]{{snd}}Cryptoleq resources repository
* [https://github.com/momalab/cryptoleq क्रिप्टोलेक]{{snd}}क्रिप्टोलेक resources repository
* [https://sites.google.com/site/comparchampsite/ CAAMP]{{snd}}Computer Architecture A Minimalist Perspective
* [https://sites.google.com/site/comparchampsite/ CAAMP]{{snd}}Computer Architecture A Minimalist Perspective
* [https://alecdee.github.io/sico SICO] – Single Instruction COmputer: a variant of SUBLEQ using unsigned integers
* [https://alecdee.github.io/sico SICO] – Single Instruction COmputer: a variant of सुबलेक using unsigned integers
 
{{Clear}}
{{CPU technologies}}
{{CPU technologies}}
{{Authority control}}
[[Category: गणना के मॉडल]] [[Category: गूढ़ प्रोग्रामिंग भाषाएँ]]


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page]]
[[Category:Collapse templates]]
[[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]

निर्देश प्रकार

एकल निर्देश के लिए सामान्य विकल्प हैं:

  • घटाना और शाखा यदि शून्य से कम या उसके समान है ।
  • नकारात्मक हो तो घटाएं और शाखा दें
    1. अंकगणित यंत्र
  • उल्टा घटाएं और छोड़ें ।
  • ट्रांसपोर्ट ट्रिगर आर्किटेक्चर (ट्रांसपोर्ट ट्रिगर आर्किटेक्चर के भाग के रूप में उपयोग किया जाता है)[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]

क्रिप्टोलिक

NYU अबू धाबी में बनाया गया क्रिप्टोलेक प्रोसेसर

क्रिप्टोलेक [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. 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. 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. 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".
  4. "कार्बन नैनोट्यूब से बने पहले कंप्यूटर का अनावरण किया गया". BBC. 26 September 2013. Retrieved 26 September 2013.
  5. 5.0 5.1 Oleg Mazonka, "Bit Copying: The Ultimate Computational Simplicity", Complex Systems Journal 2011, Vol 19, N3, pp. 263–285
  6. "Addleq". Esolang Wiki. Retrieved 2017-09-16.
  7. "डीजेएन ओआईएससी". Esolang Wiki. Retrieved 2017-09-16.
  8. "P1e". Esolang Wiki. Retrieved 2017-09-16.
  9. 9.0 9.1 Mazonka, Oleg (October 2009). "सुबेलिया". Archived from the original on 2017-06-29. Retrieved 2017-09-16.
  10. 10.0 10.1 "सुबेलिया". Esolang Wiki. Retrieved 2017-09-16.
  11. 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.
  12. xoreaxeaxeax. "movfuscator". GitHub. Retrieved 2022-11-12.
  13. "Dawn for SUBLEQ".
  14. 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
  15. https://habr.com/ru/post/584596/ A description of the virtual computer Izhora on Habr (in Russian)
  16. Oleg Mazonka A Simple Multi-Processor Computer Based on Subleq
  17. Z. A. Melzak (2018-11-20) [1961-09]. "कम्प्यूटेबिलिटी और कम्प्यूटेशन के लिए एक अनौपचारिक अंकगणितीय दृष्टिकोण". Canadian Mathematical Bulletin. 4 (3): 279–293. doi:10.4153/CMB-1961-032-6.
  18. J. Lambek (2018-11-20) [1961-09]. "कैसे एक अनंत अबेकस प्रोग्राम करने के लिए". Canadian Mathematical Bulletin. 4 (3): 295–302. doi:10.4153/CMB-1961-032-6.
  19. 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."
  20. Catsoulis, John (2005), Designing embedded hardware (2 ed.), O'Reilly Media, pp. 327–333, ISBN 978-0-596-00755-3
  21. 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


बाहरी संबंध