सभी CPUs के लिए "opcode space" जैसा कुछ है। उदाहरण के लिए, यदि एक सीपीयू 8-बिट ऑपोड्स का उपयोग करता है तो अधिकतम होगा। 256 निर्देशों में से यह हो सकता है। बड़े ऑपकोड आपके पास जितने अधिक ऑपकोड हो सकते हैं, लेकिन उन्हें तेज़ी से लाने और उन्हें डीकोड करना कठिन होता है।
80x86 अपेक्षाकृत पुराना वास्तुकला है। यह एक मामूली ऑपोड स्पेस के साथ शुरू हुआ जिसमें ज्यादातर 1-बाइट और 2-बाइट ऑपकोड शामिल थे। प्रत्येक बार जब CPU निर्माता एक नई सुविधा जोड़ते हैं तो यह ऑपोड स्पेस से अधिक ऑपकोड लेता है। वे opcodes से बाहर भाग गया। वे जल्दी से भाग गया।
इसके आसपास काम करने के लिए उन्होंने कृत्रिम रूप से ऑपोड स्पेस को विस्तारित करने के लिए एस्केप कोड और उपसर्ग जोड़ने जैसी चीजें करना शुरू कर दिया। उदाहरण के लिए, हाल के एवीएक्स निर्देशों के लिए आप एक पुराने/पुनर्नवीनीकरण से बचने वाले कोड (जैसे 0xF0) के बाद एक VEX उपसर्ग देख रहे हैं, उसके बाद पुराने/पुनर्नवीनीकरण पते/ऑपरेंड आकार उपसर्ग (उदाहरण के लिए 0x66), उसके बाद 4 बाइट्स । यह सुंदर नहीं है।
उसी समय पुराने निर्देश हैं जिनका उपयोग शायद ही कभी किया जाता है (एएडी, एएएम, आदि) और एकाधिक/अनावश्यक ऑपोड (आईएनसी/डीईसी) के साथ निर्देश जो मूल्यवान "1-बाइट" ऑपकोड का उपभोग कर रहे थे। पिछड़े संगतता के कारण ये पूरी तरह से हटाया नहीं जा सका।
हालांकि; जब 64-बिट डिज़ाइन किया गया था, तो पिछड़ा संगतता कोई फर्क नहीं पड़ता कि कोई भी 64-बिट कोड संगत नहीं था। "बहुत महत्वपूर्ण" निर्देशों द्वारा खपत 1-बाइट ऑपकोड्स का पुनर्नवीनीकरण किया जा सकता है; उन निर्देशों को 64-बिट कोड में अमान्य बनाते हैं (लेकिन कुछ मूल्यवान 1-बाइट ऑपकोड को मुक्त करना)।
उनमें से अधिकतर 1-बाइट ऑपकोड (पूरे 1-बाइट इंक/डीईसी समूह अगर मुझे सही याद है) को 64-बिट ऑपरेंड का समर्थन करने के लिए आवश्यक आरईएक्स उपसर्ग के लिए तुरंत पुनर्नवीनीकरण किया गया। कुछ नहीं थे और "भविष्य के विस्तार के लिए स्वतंत्र" बन गए थे (प्रतिबंध के साथ कि एक्सटेंशन केवल 64-बिट कोड में काम कर सकता है क्योंकि ये निर्देश अभी भी 16-बिट और 32-बिट कोड में मान्य हैं)।
पुश/पॉपिंग सेगमेंट रजिस्टरों को x64 मोड में कोई समझ नहीं आता है। –