2011-10-15 13 views
5

अधिकांश कंप्यूटर्स 32 बिट वातावरण में 64 बिट ऑपरेंड (जैसे लंबे int) पर संचालन को कैसे कार्यान्वित करते हैं? दूसरे शब्दों में, क्या इन परिचालनों को एक ही चरण में लागू करने का कोई तरीका है या हमें इन परिचालनों को लागू करने के लिए कई मेमोरी स्थानों तक पहुंचने की आवश्यकता है?32 बिट आर्किटेक्चर में 64 बिट्स पर ऑपरेशंस संचालित होते हैं?

+0

या एकाधिक रजिस्ट्रार बल्कि –

उत्तर

5

वे 64-बिट मान रखने के लिए दो रजिस्टरों का उपयोग करते हैं। निचले 32-बिट्स के लिए एक और ऊपरी 32-बिट्स के लिए एक।

86 के लिए, 64-बिट जोड़/घटाव का उपयोग किया जाता एड-साथ-कैरी और घटाना-साथ-उधार निर्देश:

add %eax, (lower 32-bits of operand) 
adc %edx, (upper 32-bits of operand) 

64-बिट गुणा अधिक जटिल है, लेकिन यह भी एक का उपयोग किया 32-बिट गुणाओं और 32-बिट एड-इन-कैरी निर्देशों का संयोजन। (2 अंकों के साथ लंबे-गुणा के समान)

लोड और स्टोर के लिए, हाँ, दो 32-बिट मानों को दो रजिस्टरों में लोड/संग्रहित करने की आवश्यकता है।

इसी प्रकार, 64-बिट हार्डवेयर पर 128-बिट पूर्णांक लागू किए जा सकते हैं। जीसीसी इसे एक विस्तार के रूप में समर्थन करता है।

+0

32-बिट (x86) हार्डवेयर पर 128-बिट पूर्णांक के बारे में क्या? –

+1

यह बदसूरत हो जाता है। इस बिंदु पर यह बहु-परिशुद्धता अंकगणित से बहुत अलग नहीं है। इसके अतिरिक्त, आप 3 'adc' निर्देशों को चेन करेंगे। (यह न भूलें कि आपके पास कैरी-फ्लैग पर निर्भरता है जो आपकी पाइपलाइन को मार सकती है ...) गुणा के लिए, आपको 16 x 32-बिट गुणा और 'एड' और 'एडीसी' का गुच्छा करना होगा। .. मुझे किसी भी संकलक के बारे में पता नहीं है जो इसका समर्थन करता है। – Mysticial

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