notزائف

not

زائف
تجميع RISC-V مرجع

يغطي lyszt.net not وتعليمات RISC-V الأخرى بمزيد من التفصيل.

الوصف

not يعكس جميع بتات السجل. يصبح 0 واحدًا، ويصبح 1 صفرًا. يقرأ النموذج أدناه سجل المصدر rs، ويقلب جميع البتات الـ 32، ويكتب النتيجة إلى سجل الوجهة rd. هذه العملية هي المتمم على مستوى البتات.

not rd, rs

not هو تعليمة زائفة: اسم مقروء يعيد المُجمِّع كتابته إلى تعليمة حقيقية. يصبح التعليمة أدناه، وهي XOR مع قناع من كل الآحاد.

xori rd, rs, -1

يقلب XOR البتة حيث يحمل القناع 1، لذا فإن قناعًا من كل الآحاد يقلب جميع البتات. القيمة -1 هي كل الآحاد في البتات، ولهذا تعمل كقناع. لا تملك RISC-V تعليمة عكس مخصصة لأن إعادة الكتابة هذه تتعامل معها.

ينتج not عكس القناع. إذا اختار نمط بتات معينة، فإن not ينتج النمط الذي يختار الباقي. اتباع not بـ and يمسح البتات التي حددها القناع الأصلي، مما يطفئ مجموعة من الأعلام.

يعرّف دليل RISC-V ‏not كتعليمة زائفة للمُجمِّع لـ xori مع الثابت -1، ويصف أن xori هو عكس منطقي على مستوى البتات للسجل rs1.

يعطي not وneg نتائج مختلفة. يقلب not البتات، ويقلب neg الإشارة. not للعدد 5 هو -6، وneg للعدد 5 هو -5. يُظهر تتبع المحاكي تعليمة xori التي تُنفَّذ بدلًا من not.

يوسّع إلى

xori rd, rs, -1

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

مثال

li t0, 0
not t1, t0       # t1 = -1 (every bit flipped)