2012-06-12 113 views
15

86 कोडांतरक भाषा x86 प्रोसेसर आर्किटेक्चर के रूप में परिवर्तित करने के लिए किया गया है 8bit से बदल गया है 32 बिट और अब 64 बिट के लिए 16bit करने के लिए।आरएक्स, आरबीएक्स, आरसीएक्स, आरडीएक्स, आरएसआई, आरडीआई, आरबीपी, आरएसपी में आर स्टैंड क्या है?

मुझे पता है कि 32 बिट असेंबलर रजिस्टर नाम (ईएक्स, ईबीएक्स, आदि) में, प्रत्येक नाम के लिए ई उपसर्ग विस्तारित है जिसका मतलब 16 बिट फॉर्म (एएक्स, बीएक्स, आदि) के बजाय रजिस्टर के 32 बिट रूप का है। ।)।

क्या इन रजिस्टर नाम के लिए आर उपसर्ग 64 बिट में लिए खड़े करता है?

+10

"आर" ईली बड़ा? :-) –

+4

और निश्चित रूप से 'एक्स' भी विस्तारित है। ए, बी, सी, और डी 8-बिट रजिस्टरों के रूप में शुरू हुआ। :-) –

+1

मजेदार तथ्य: एक एएमडी आर्किटेक्ट ने कहा कि पंजीकरण नाम पंजीकरण विस्तार करने के सबसे कठिन भागों में से एक था: वे [मूल 8 रजिस्ट्रार आर 0-आर 7 का नाम बदलने या 'ऊपरी "रजिस्ट्रार नाम' UAX' 'नाम देने पर विचार करते हैं] (http://www.x86-64.org/pipermail/discuss/2000-September/000283.html)। –

उत्तर

15

मुझे लगता है कि यह "रजिस्टर" के लिए सिर्फ आर है, क्योंकि x86-64 पर अतिरिक्त रजिस्ट्रार आर 8 - आर 15 हैं, और आर कई सीपीयू आर्किटेक्चर पर एक आम उपसर्ग है जहां रजिस्टरों की संख्या है।

+0

क्या वे रजिस्टर्स आपने उल्लेख किया है (आर 8 - आर 15) 32-बिट? –

+0

मैंने कभी नहीं पढ़ा कि वे सभी 64 बिट हैं इसलिए मुझे लगता है कि 32 बिट इम्यूलेशन उसी रजिस्टरों का उपयोग करेगा, जो –

+2

से बाहर हो गए हैं, जो मैंने पढ़ा है, "आर" श्रृंखला रजिस्ट्रार के 32-बिट तक पहुंच ऊपरी हिस्से में होती है 32-बिट स्वचालित रूप से शून्य हो जाते हैं। –

4

मूल इंटेल x86 प्रोसेसर, 8080 प्रोसेसर, 8 बिट प्रोसेसर थे, विशेष उद्देश्य, छोटे कंप्यूटर (उदाहरण के लिए नकद रजिस्टर) या सामान्य प्रयोजन कंप्यूटरों के बजाए उपकरण नियंत्रकों जैसे अनुप्रयोगों के लिए एक आंख के साथ डिजाइन किए गए थे (प्रतियोगियों में शामिल थे मोटोरोला 6800)। निम्नलिखित 8086 प्रोसेसर परिवार (8086 और लागत 8088 कम) 16 बिट माइक्रोप्रोसेसर थे जो इंटेल 8080 आर्किटेक्चर जारी रखते थे जबकि प्रोसेसर के अधिक सामान्य प्रयोजनों के उपयोग के लिए 16 बिट जोड़ों के साथ इसे विस्तारित करते थे।

इंटेल 8080 और इंटेल 8086 प्रोसेसर की सीमित संख्या में रजिस्ट्रार थे, जिनमें से अधिकतर विशेष उद्देश्य थे इसलिए उनके पास ए असेंबली भाषा में ए, बी या एक्स, बीएक्स जैसे विशिष्ट नाम थे (मोटोरोला 6800 जैसे प्रतियोगियों समान सम्मेलन थे)। आईबीएम 360/370 परिवार या DEC VAX के रूप में सामान्य प्रयोजन कंप्यूटर रजिस्टरों की तरह घटकों (जैसे R0, आर 1, आदि) के बाद से रजिस्टरों सामान्य प्रयोजन थे (मोटोरोला 68000 32 बिट प्रोसेसर कई उच्च अंत वर्कस्टेशन में इस्तेमाल के लिए अधिक सामान्य नाम का इस्तेमाल 1 9 80 के दशक में डी 0 डी 7 के नाम से आठ डेटा रजिस्टरों के समान था)।

चूंकि इंटेल ने 1 9 70 के दशक से वर्षों में x86 प्रोसेसर विकसित करना जारी रखा है, इसलिए उसने x86 के लक्षित अनुप्रयोगों को विशिष्ट, माइक्रो-नियंत्रक अनुप्रयोगों से सामान्य उद्देश्य कंप्यूटरों तक विस्तारित करने के बावजूद पिछड़ा संगतता बनाए रखने की भी कोशिश की है। इस विकास के दौरान, रजिस्टरों की संख्या का विस्तार किया है और मूल रूप से विशेष प्रयोजन रजिस्टरों की कई सामान्य प्रयोजन के उपयोग की दिशा में विकसित किया है के रूप में इंटेल ने भी 80286 के साथ प्रोसेसर चिप ऑपरेटिंग मोड पश्च संगतता के साथ मदद करने के लिए का विचार प्रस्तुत किया।

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

हालांकि इंटेल भी पुराने रजिस्टरों के लिए पश्चगामी संगतता बनाए रखने के लिए होने के साथ सामना करना पड़ा। तो पत्र आर को 16 बिट रजिस्टर नाम के उपसर्ग के रूप में इस्तेमाल किया गया था, जैसे 32 बिट प्रोसेसर के लिए अक्षर ई को 16 बिट रजिस्टर नाम के उपसर्ग के रूप में उपयोग किया गया था। उसी समय 64 बिट रजिस्टर ऑपरेशंस का डिजाइन पिछले पीढ़ियों के लिए 32 बिट रजिस्टर ऑपरेशंस के लिए किए गए कार्यों की तुलना में थोड़ा अलग किया गया था।

8 बिट प्रोसेसर से 16 बिट प्रोसेसर में परिवर्तन के साथ, रजिस्टरों को 8 बिट्स से 16 बिट्स तक बढ़ा दिया गया था, इसलिए नाम एक्सएक्स, बीएक्स इत्यादि जैसे रजिस्टर नाम के बाद अक्षर एक्स है। इन रजिस्टरों का इलाज किया जा सकता है दो 8 बिट रजिस्ट्रार के रूप में (16 बिट एएक्स रजिस्टर 8 बिट एएच और 8 बिट एएल से बना था जहां एच एएक्स रजिस्टर के उच्च या सबसे महत्वपूर्ण बिट्स का प्रतिनिधित्व करता है और एल एएक्स रजिस्टर के कम या कम से कम महत्वपूर्ण बिट्स का प्रतिनिधित्व करता है)।

16 बिट से 32 बिट प्रोसेसर में परिवर्तन के साथ, रजिस्ट्रार 16 बिट्स से 32 बिट्स तक बढ़ाए गए थे, इसलिए नामों में ईएक्स, ईबीएक्स इत्यादि जैसे उपसर्ग के रूप में पत्र ई है।इन रजिस्टरों को दो अलग 16 बिट घटकों के रूप में माना जा सकता है (कम से कम 16 बिट्स का उपयोग 16 बिट नाम जैसे ईएक्स -> एक्स, ईबीएक्स -> बीएक्स, आदि) या चार 8 बिट रजिस्टरों (कम से कम महत्वपूर्ण 16 बिट्स के रूप में उपयोग किया जाता है) ईएक्स -> एएच और एएल, ईबीएक्स -> बीएच और बीएल इत्यादि जैसे दो 8 बिट रजिस्ट्रार) जब रजिस्टर स्थानांतरण और बिटवाई ऑपरेशंस का उपयोग ऊपरी 16 बिट्स और 32 बिट के निचले 16 बिट के बीच 16 बिट मानों को स्थानांतरित करने के लिए किया जाता था ईएक्स, ईबीएक्स इत्यादि जैसे पंजीकरण करें। यह कुछ हद तक बनाए रखा गया है, 8 बिट से 16 बिट में बदलाव के साथ क्या किया गया था, हालांकि 32 बिट रजिस्टरों के ऊपरी 16 बिट्स तक सीधी पहुंच उपलब्ध नहीं थी 8086/8080 में 16 बिट रजिस्टरों के ऊपरी 8 बिट्स को प्रदान किया गया था।

वॉल्यूम 1 की धारा 3.7.2.1: इंटेल 64 और आईए -32 आर्किटेक्चर सॉफ्टवेयर डेवलपर मैनुअल का मूल आर्किटेक्चर जिसमें 64 बिट मोड के बारे में कहना है।

Register operands in 64-bit mode can be any of the following: 
• 64-bit general-purpose registers (RAX, RBX, RCX, RDX, RSI, RDI, RSP, RBP, or R8-R15) 
• 32-bit general-purpose registers (EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP, or R8D-R15D) 
• 16-bit general-purpose registers (AX, BX, CX, DX, SI, DI, SP, BP, or R8W-R15W) 
• 8-bit general-purpose registers: AL, BL, CL, DL, SIL, DIL, SPL, BPL, and R8L-R15L are available using REX 
prefixes; AL, BL, CL, DL, AH, BH, CH, DH are available without using REX prefixes. 
• Segment registers (CS, DS, SS, ES, FS, and GS) 
• RFLAGS register 
• x87 FPU registers (ST0 through ST7, status word, control word, tag word, data operand pointer, and instruction 
pointer) 
• MMX registers (MM0 through MM7) 
• XMM registers (XMM0 through XMM15) and the MXCSR register 
• Control registers (CR0, CR2, CR3, CR4, and CR8) and system table pointer registers (GDTR, LDTR, IDTR, and 
task register) 
• Debug registers (DR0, DR1, DR2, DR3, DR6, and DR7) 
• MSR registers 
• RDX:RAX register pair representing a 128-bit operand 

प्रश्न देखें और x86_64 registers rax/eax/ax/al overwriting full register contents के साथ-साथ Why do most x64 instructions zero the upper part of a 32 bit register जिसके बारे में कैसे 64 बिट रजिस्टर आपरेशन 32 बिट रजिस्टर आपरेशन से अलग कुछ विवरण प्रदान के लिए जवाब।

+2

एएमडी ने AMD64 डिज़ाइन किया जबकि इंटेल आईए -64 (इटेनियम) के लिए प्रतिबद्ध था। यह तब तक नहीं था जब तक x86-64 पर कब्जा नहीं हुआ (एएमडी के पहले एएमडी 64 माइक्रोआर्किटेक्चर, के 8 के उच्च प्रदर्शन के लिए धन्यवाद) कि इंटेल ने इसे पी 4 और उसके बाद पी 6 (कोर 2 में) जोड़ा, इसे "आईए -32e" कहा। –

+0

@ पीटरकॉर्डस, उस स्पष्टीकरण के लिए धन्यवाद। इंटेल सॉफ्टवेयर डेवलपर के मैनुअल में संक्षिप्त इतिहास पढ़ते हुए 64 बिट का उल्लेख पहले इंटेल के साथ उनके प्रोसेसर के उच्च अंत संस्करण में दिखाई देने के साथ हुआ था, जिसमें यह अगले पुनरावृत्ति में उपलब्ध हो रहा था। मुझे यकीन नहीं है कि आईए -64 इटेनियम और पी 4 और पी 6 के बीच क्या अंतर है। ऐसा लगता है कि Itanium मुख्य रूप से प्रोसेसर का एक उद्यम सर्वर वर्ग था। –

+2

आईए -64 एक पूरी तरह से अलग वास्तुकला है, बिल्कुल x86 नहीं। पी 4 पेंटियम 4 है, ["नेटबर्स्ट" माइक्रोआर्किटेक्चर] (https://en.wikipedia.org/wiki/NetBurst_ (माइक्रोआर्किटेक्चर)) जिसे उच्च प्रदर्शन की बजाय उच्च घड़ी की गति के लिए अनुकूलित किया गया था, क्योंकि उस समय CPUs अभी भी विपणन किए गए थे घड़ी की गति से। [पी 6 माइक्रोआर्किटेक्चर परिवार पेंटियम प्रो/पेंटियम II के साथ शुरू हुआ है] (https://en.wikipedia.org/wiki/P6_ (माइक्रोआर्किटेक्चर)), और नेहलेम में समापन। ([सैंड्रिब्रिज एक नया माइक्रोआर्किटेक्चर परिवार है] (http://www.realworldtech.com/sandy-bridge/)।) –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^