nop
زائفيغطي lyszt.net nop وتعليمات RISC-V الأخرى بمزيد من التفصيل.
الوصف
لا يفعل nop شيئًا. الاسم اختصار لـ "no operation". عندما يصل المعالج إلى nop، لا تتغير أي سجلات، ولا تُلمس الذاكرة، ويستمر التنفيذ بالتعليمة التالية. يشغل خانة واحدة في البرنامج وتمر نبضة زمنية واحدة.
nop هو تعليمة شبه حقيقية للسطر أدناه.
addi zero, zero, 0
يتضمن RISC-V سجلًا يسمى zero يحمل دائمًا القيمة 0. القراءة تُرجع 0، والكتابة تُهمل. تعليمة addi تلك تجمع 0 و0 وتهمل النتيجة، لذا تكتمل التعليمة ولا يتغير شيء. لا يحتاج RISC-V إلى nop مخصص لأن سجل zero يوفر واحدًا.
تستخدم المعالجات الحقيقية تعليمات nop كحشو، بحيث تبدأ تعليمة لاحقة عند حد ذاكرة تتعامل معه العتاد بسرعة أكبر، وكعناصر نائبة تستبدلها الأدوات لاحقًا بتعليمات حقيقية. يُدرجها المترجمون كأمر طبيعي، ولهذا تحتوي الشيفرة المفككة على تعليمات nop حتى لو لم يكتبها أي مبرمج.
ينص دليل RISC-V على أن nop لا يغير أي حالة مرئية معماريًا، أي لا شيء يمكن للبرنامج ملاحظته، باستثناء تقديم pc وزيادة أي عدادات أداء. ويذكر استخدامين: محاذاة مقاطع الشيفرة إلى حدود عناوين تناسب العتاد، وترك مجال لتغييرات لاحقة في الشيفرة. يشرح الدليل أن الترميز يستخدم addi لأن تلك التعليمة تستهلك أقل الموارد على معظم الأنظمة، إذ تقرأ سجلًا واحدًا فقط.
في هذا المحاكي يعمل nop كفاصل أو علامة أثناء التجارب. يؤدي تجاوزه بخطوة واحدة إلى تقديم pc بمقدار 4 دون تغيير أي سجل أو موقع في الذاكرة.
يوسّع إلى
addi zero, zero, 0
يستبدل المُجمِّع هذه التعليمة الزائفة بالتعليمة الحقيقية أو التعليمات المذكورة أعلاه.
مثال
li t0, 1 nop # advances one instruction, changes nothing addi t0, t0, 1 # t0 = 2
