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 على أن addi مع الثابت 0 ينفذ التعليمة الزائفة للمجمّع mv.

لأن mv تنسخ القيمة، فإن تغيير الوجهة لاحقًا يترك المصدر دون تغيير. وهذا يجعل mv مفيدة للاحتفاظ بنسخة من قيمة قبل أن تغيّر حلقة الأصل. يُظهر تتبع المحاكي تعليمة addi التي تُنفَّذ بدلاً من mv.

يوسّع إلى

addi rd, rs, 0

يستبدل المُجمِّع هذه التعليمة الزائفة بالتعليمة الحقيقية أو التعليمات المذكورة أعلاه.

مثال

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