मेरे यहाँ कुछ अतिरिक्त पहलू हैं:
ऑपरेशन "ए = बी / सी" पर विचार करें x86 इसे लागू करेगा
mov eax,b
xor edx,edx
div dword ptr c
mov a,eax
Div निर्देश edx के अतिरिक्त बोनस के रूप में शेष रहेगा।
आरआईएससी प्रोसेसर को पहले बी और सी के पते लोड करने, मेमोरी से रजिस्टरों में बी और सी लोड करने, विभाजन करने और एक के पते को लोड करने और फिर परिणाम को संग्रहीत करने की आवश्यकता होगी। Dst, src सिंटैक्स:
mov r5,addr b
mov r5,[r5]
mov r6,addr c
mov r6,[r6]
div r7,r5,r6
mov r5,addr a
mov [r5],r7
यहाँ आमतौर पर कोई शेष नहीं रहेगा।
यदि किसी भी चर को बिंदुओं के माध्यम से लोड किया जाना है, तो दोनों अनुक्रम लंबे हो सकते हैं, हालांकि यह आरआईएससी के लिए एक संभावना से कम है क्योंकि इसमें एक या एक से अधिक पॉइंटर्स पहले से ही किसी अन्य रजिस्टर में लोड हो सकते हैं। x86 में कम रजिस्टर होता है इसलिए पॉइंटर के किसी एक में होने की संभावना कम होती है।
फायदा और नुकसान:
RISC निर्देशों को निर्देश निर्धारण में सुधार करने के लिए आसपास के कोड के साथ मिलाया जा सकता है, यह x86 के साथ एक संभावना कम है जो इसके बजाय सीपीयू के अंदर ही यह काम करता है (अनुक्रम के आधार पर अधिक या कम अच्छी तरह से)। ऊपर दिया गया RISC अनुक्रम आमतौर पर एक 32-बिट आर्किटेक्चर पर 28 बाइट्स (प्रत्येक 32-बिट / 4 बाइट चौड़ाई के 7 निर्देश) होगा। यह निर्देश (सात भ्रूण) लाने पर ऑफ-चिप मेमोरी को अधिक काम करने का कारण होगा। सघन x86 अनुक्रम में कम निर्देश होते हैं और यद्यपि उनकी चौड़ाई भिन्न होती है, आप शायद औसतन 4 बाइट्स / निर्देश भी देख रहे हैं। यहां तक कि अगर आपके पास सात फ़िशिंग को गति देने के लिए निर्देश कैश हैं, तो इसका मतलब है कि आपके पास x86 की तुलना में बनाने के लिए तीन अन्य जगहों की कमी होगी।
बचाने के लिए / बहाल करने के लिए कम रजिस्टरों वाले x86 आर्किटेक्चर का मतलब है कि यह संभवतः थ्रेड स्विच करेगा और आरआईएससी की तुलना में तेजी से बाधित होता है। सहेजने और पुनर्स्थापित करने के लिए अधिक रजिस्टरों के लिए अधिक अस्थायी रैम स्टैक स्पेस की आवश्यकता होती है जो थ्रेड स्टेट्स को स्टोर करने के लिए इंटरप्ट और अधिक स्थायी स्टैक स्पेस की आवश्यकता होती है। इन पहलुओं को शुद्ध आरटीओएस चलाने के लिए x86 को एक बेहतर उम्मीदवार बनाना चाहिए।
अधिक व्यक्तिगत नोट पर मुझे x86 की तुलना में RISC असेंबली लिखना अधिक कठिन लगता है। मैं इसे C कोड में RISC दिनचर्या लिखकर, उत्पन्न कोड को संकलित और संशोधित करके हल करता हूं। यह एक कोड उत्पादन दृष्टिकोण से अधिक कुशल है और शायद एक निष्पादन दृष्टिकोण से कम कुशल है। उन सभी 32 रजिस्टरों का ट्रैक रखने के लिए। X86 के साथ यह दूसरा तरीका है: "वास्तविक" नामों के साथ 6-8 रजिस्टर समस्या को अधिक प्रबंधनीय बनाता है और अधिक विश्वास पैदा करता है कि उत्पादित कोड अपेक्षा के अनुरूप काम करेगा।
बदसूरत? वह देखने वाले की नजर में है। मैं "अलग" पसंद करता हूं।