mvछद्म

mv

छद्म
RISC-V असेंबली संदर्भ

lyszt.net mv और अन्य RISC-V निर्देशों को अधिक विस्तार से कवर करता है।

विवरण

mv एक रजिस्टर के मान को दूसरे में कॉपी करता है। यह नाम move का संक्षिप्त रूप है। नीचे दी गई पंक्ति के बाद, दोनों रजिस्टर समान मान रखते हैं और स्रोत, t0, अपरिवर्तित रहता है।

mv a0, t0

mv एक स्यूडो-इंस्ट्रक्शन है। असेंबलर इस पठनीय नाम को एक वास्तविक इंस्ट्रक्शन में फिर से लिखता है, जो नीचे दिखाया गया है।

addi rd, rs, 0

किसी मान में शून्य जोड़कर उसे कहीं और संग्रहीत करना एक प्रति बनाता है। RISC-V में कोई समर्पित move इंस्ट्रक्शन नहीं है और इसके बजाय जोड़ का पुनः उपयोग करता है।

विभिन्न रजिस्टरों के अलग-अलग कार्य होते हैं, जो आमतौर पर mv का उपयोग करने का कारण है। परंपरा के अनुसार, गणनाएँ अस्थायी रजिस्टरों (t0, t1 इत्यादि) में होती हैं। जब किसी फ़ंक्शन को कॉल किया जाता है, तो उसके आर्गुमेंट विशिष्ट रजिस्टरों (a0, a1 इत्यादि) में जाते हैं, और परिणाम a0 में वापस आते हैं। इसलिए एक प्रोग्राम कॉल से पहले एक mv रखता है, जो एक परिकलित मान को उस रजिस्टर में डालता है जिसे कॉल किया गया कोड पढ़ता है, और कॉल के बाद एक mv रखता है, जो लौटाए गए परिणाम को सुरक्षित स्थान पर सहेजता है।

mv a0, t0
call square
mv s0, a0

सही समय पर सही रजिस्टरों में मान रखना असेंबली का एक बड़ा हिस्सा है, और mv यह करता है।

RISC-V मैनुअल कहता है कि स्थिरांक 0 के साथ addi mv असेंबलर स्यूडो-इंस्ट्रक्शन को लागू करता है।

चूँकि mv मान को कॉपी करता है, बाद में गंतव्य को बदलने से स्रोत अपरिवर्तित रहता है। यह mv को लूप द्वारा मूल को बदलने से पहले किसी मान की प्रति रखने के लिए उपयोगी बनाता है। सिम्युलेटर का ट्रेस mv के स्थान पर चलने वाले addi को दिखाता है।

विस्तृत होता है

addi rd, rs, 0

असेंबलर इस छद्म-निर्देश को ऊपर सूचीबद्ध वास्तविक निर्देश या निर्देशों से बदल देता है।

उदाहरण

li t0, 42
mv t1, t0         # t1 = 42