अवैध ऑपकोड
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
(Learn how and when to remove this template message)
|
Machine code |
---|
General concepts |
Instructions |
एक अवैध ऑपकोड, जिसे अकार्यान्वित ऑपरेशन भी कहा जाता है,[1]अनपेक्षित ऑपकोड[2]या अनिर्दिष्ट अनुदेश, CPU के लिए एक opcode है जिसका उल्लेख सीपीयू के डिजाइनर या निर्माता द्वारा जारी किसी भी आधिकारिक दस्तावेज में नहीं किया गया है, जिसका फिर भी प्रभाव पड़ता है। 1970 के दशक के दौरान डिजाइन किए गए पुराने सीपीयू पर अवैध ऑपकोड आम थे, जैसे एमओएस प्रौद्योगिकी एमओएस टेक्नोलॉजी 6502, इंटेल इंटेल 8086 और ज़ाइलॉग ज़िलॉग ज़ेड80। इन पुराने प्रोसेसरों पर, कई सीपीयू में ट्रांजिस्टर की वायरिंग के साइड इफेक्ट (कंप्यूटर विज्ञान) के रूप में मौजूद होते हैं, और आमतौर पर सीपीयू के उन कार्यों को जोड़ते हैं जिन्हें संयोजित करने का इरादा नहीं था। पुराने और आधुनिक प्रोसेसर पर, निर्माता द्वारा प्रोसेसर में जानबूझकर शामिल किए गए निर्देश भी होते हैं, लेकिन वे किसी भी आधिकारिक विनिर्देश में प्रलेखित नहीं होते हैं।
कई प्रोसेसरों पर कई अवैध ऑपकोड का प्रभाव, एक त्रुटि हैंडलर के लिए सिर्फ एक जाल (कंप्यूटिंग) है। हालाँकि, कुछ प्रोसेसर जो अधिकांश अवैध ऑपकोड को पकड़ते हैं, वे कुछ अवैध ऑपकोड के लिए ऐसा नहीं करते हैं, और कुछ अन्य प्रोसेसर अवैध ऑपकोड की जाँच नहीं करते हैं, और इसके बजाय, एक अनिर्दिष्ट ऑपरेशन करते हैं।
अवलोकन
जबकि अधिकांश आकस्मिक अवैध निर्देशों के बेकार या अत्यधिक अवांछनीय प्रभाव होते हैं (जैसे कि कंप्यूटर को क्रैश करना), कुछ स्थितियों में कुछ उपयोगी कार्य कर सकते हैं। 1970 और 1980 के दशक के कंप्यूटर खेल में कुछ समय-महत्वपूर्ण अनुभागों को गति देने के लिए ऐसे निर्देशों का कभी-कभी उपयोग किया जाता था। प्रतिलिपि सुरक्षा कार्यान्वयन और सॉफ्टवेयर क्रैकिंग के बीच चल रही लड़ाई में एक और आम उपयोग था। यहां, वे अस्पष्टता के माध्यम से सुरक्षा का एक रूप थे, और उनकी गोपनीयता आमतौर पर बहुत लंबे समय तक नहीं रहती थी।
अवैध निर्देशों के उपयोग से जुड़ा एक खतरा यह था कि, इस तथ्य को देखते हुए कि निर्माता उनके अस्तित्व और कार्य की गारंटी नहीं देता है, वे सीपीयू आंतरिक या सीपीयू के किसी भी नए संशोधन में किसी भी बदलाव के साथ गायब हो सकते हैं या अलग व्यवहार कर सकते हैं, जिससे उनका उपयोग करने वाले प्रोग्राम नए संशोधनों के साथ असंगत हो जाएंगे। उदाहरण के लिए, कई पुराने Apple II गेम नए Apple IIc पर सही ढंग से काम नहीं करते थे, क्योंकि बाद वाले ने नए CPU संशोधन का उपयोग किया था – डब्ल्यूडीसी 65सी02 – जिसने अवैध ऑपकोड को ख़त्म कर दिया।
हाल के सीपीयू, जैसे इंटेल 80186, इंटेल 80286, मोटोरोला 68000 और इसके वंशजों में अवैध ऑपकोड नहीं हैं जो व्यापक रूप से ज्ञात/उपयोग किए जाते हैं। आदर्श रूप से, सीपीयू एक अच्छी तरह से परिभाषित तरीके से व्यवहार करेगा जब उसे निर्देश स्ट्रीम में एक अज्ञात ऑपकोड मिलेगा, जैसे कि एक निश्चित अपवाद (कंप्यूटिंग) या गलती (कंप्यूटिंग) स्थिति को ट्रिगर करना। ऑपरेटिंग सिस्टम का अपवाद या गलती हैंडलर आमतौर पर उस एप्लिकेशन को समाप्त कर देगा जो गलती का कारण बनता है, जब तक कि प्रोग्राम ने पहले अपना स्वयं का अपवाद/फॉल्ट हैंडलर स्थापित नहीं किया हो, उस स्थिति में उस हैंडलर को नियंत्रण प्राप्त होगा। अवैध निर्देशों को संभालने का एक और, कम आम तरीका उन्हें समय और स्थान लेने के अलावा कुछ भी नहीं करने के लिए परिभाषित करना है (सीपीयू के आधिकारिक एनओपी (कोड) निर्देश के बराबर); इस पद्धति का उपयोग टेक्सास इंस्ट्रूमेंट्स TMS9900 और WDC 65C02 प्रोसेसर सहित अन्य द्वारा किया जाता है। वैकल्पिक रूप से, अज्ञात निर्देशों को सॉफ़्टवेयर में अनुकरण किया जा सकता है (जैसे LOADALL), या यहां तक कि नए छद्म निर्देश भी लागू किए जा सकते हैं। कुछ BIOS, मेमोरी मैनेजर और ऑपरेटिंग सिस्टम इसका लाभ उठाते हैं, उदाहरण के लिए, V86 कार्यों को Windows NTVDM द्वारा उपयोग किए जाने वाले अंतर्निहित सिस्टम, यानी BOP (BIOS ऑपरेशन से) के साथ संचार करने देते हैं।[3]
ऐसे निर्देशों के खिलाफ इंटेल की गारंटी के बावजूद, फ़ज़िंग जैसी तकनीकों का उपयोग करके अनुसंधान ने 2018 के अंत तक x86 प्रोसेसर में बड़ी संख्या में अप्रलेखित निर्देशों को उजागर किया।[4]इनमें से कुछ निर्देश प्रोसेसर निर्माताओं के बीच साझा किए गए हैं, जो दर्शाता है कि इंटेल और एएमडी दोनों निर्देश और इसके उद्देश्य से अवगत हैं, बावजूद इसके कि यह किसी भी आधिकारिक विनिर्देश में दिखाई नहीं देता है। अन्य निर्देश निर्माताओं या विशिष्ट उत्पाद श्रृंखलाओं के लिए विशिष्ट हैं। अधिकांश x86 अप्रलेखित निर्देशों का उद्देश्य अज्ञात है।
आज, इन निर्देशों का विवरण मुख्य रूप से पुराने सिस्टम के सटीक एमुलेटर के लिए रुचिकर है।
यह भी देखें
- पिछले दरवाजे (कंप्यूटिंग)
- परवाह न करें शब्द
- ईस्टर अंडा (मीडिया)
- गैजेट (मशीन निर्देश अनुक्रम)
- रोकें और आग पकड़ें (कंप्यूटिंग)
- माइक्रोकोड
- पेंटियम F00F बग
- ट्रैप (कंप्यूटिंग)
- अप्रलेखित सुविधा
संदर्भ
- ↑ "1.2. Instruction Format". PDP-10 Reference Handbook: Programming with the PDP-10 Instruction Set (PDF). Vol. 1. Digital Equipment Corporation (DEC). 1969. p. 1-7. Retrieved 2022-05-13.
- ↑ Åkesson, Linus (2013-03-31). "GCR decoding on the fly". Archived from the original on 2017-03-21. Retrieved 2017-03-21.
- ↑ Schulman, Andrew; Brown, Ralf D.; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [November 1993]. Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 (2 ed.). Reading, Massachusetts: Addison Wesley. ISBN 0-201-63287-X. (xviii+856+vi pages, 3.5-inch floppy) Errata: [1][2]
- ↑ Domas, Christopher. "Breaking the x86 Instruction Set". YouTube. Archived from the original on 2021-12-19. Retrieved 2018-01-03.
अग्रिम पठन
- Vardy, Adam (1996-09-27) [1995-08-22]. "Extra Instructions Of The 65XX Series CPU". Archived from the original on 2021-08-28. Retrieved 2021-11-18. (NB. Illegal opcodes on the 6502.)
- Steil, Michael (2008-07-29). "How MOS 6502 Illegal Opcodes really work". pagetable.com - Some Assembly Required. Archived from the original on 2021-11-19. Retrieved 2021-11-18.
- Young, Sean (2005-09-18) [1997]. "Z80 Documentation: The Undocumented Z80 Documented". 0.91. Archived from the original on 2021-10-09. Retrieved 2021-11-18. (NB. Illegal opcodes on the Z80.)
- Brown, Ralf D., ed. (2002-12-29) [2000-07-17, 1985]. "The x86 Interrupt List" (61 ed.). Archived from the original on 2017-08-22. Retrieved 2011-10-14. [3][4][5][6][7][8][9] (NB. Ralf Brown's Interrupt List's also contains some information about undocumented processor opcodes and processor bugs: OPCODES.LST by Alex V. Potemkin and 86BUGS.LST by Harald Feldmann.)