seqz
زائفيغطي lyszt.net seqz وتعليمات RISC-V الأخرى بمزيد من التفصيل.
الوصف
يختبر seqz ما إذا كان السجل يحمل صفرًا. يعني الاسم "set if equal to zero" (اضبط إذا كان يساوي صفرًا). عندما يكون سجل المصدر rs صفرًا، يكتب النموذج أدناه 1 في سجل الوجهة rd، ويكتب 0 عندما يحمل rs أي قيمة أخرى.
seqz rd, rs
الناتج هو 1 أو 0، ويجيب عما إذا كانت القيمة صفرًا.
seqz هو تعليمة زائفة: اسم مقروء يعيد المُجمِّع كتابته إلى تعليمة حقيقية. النتيجة هي التعليمة أدناه، التي تسأل عما إذا كانت القيمة أقل من 1.
sltiu rd, rs, 1
بين الأعداد غير المؤشرة، 0 هو القيمة الوحيدة الأقل من 1. تكتب seqz، ويقوم المُجمِّع بالترجمة.
لا توجد تعليمة RISC-V تسأل عما إذا كانت قيمتان متساويتان، لذلك يُستخدم seqz لبناء اختبارات التساوي. طبّق XOR على القيمتين، وهو يعطي صفرًا عندما تتطابقان ونتيجة غير صفرية عندما تختلفان، ثم طبّق seqz على تلك النتيجة. تعني 1 أن القيمتين الأصليتين كانتا متساويتين. تشرح صفحة xor لماذا يكشف XOR التماثل.
يعرّف دليل RISC-V التعليمة seqz على أنها تعليمة زائفة للمُجمِّع تقابل sltiu مع الثابت 1، وهي تضبط rd على 1 إذا كان rs1 يساوي صفرًا وعلى 0 خلاف ذلك.
يعكس seqz أيضًا معنى قيمة صواب أو خطأ. يصبح السجل الذي يحمل 0 مساويًا 1، وتصبح أي قيمة غير صفرية مساوية 0. الإجابة عدد عادي، لذا يمكن أن تغذي مزيدًا من الحساب، على سبيل المثال الضرب به لتصفير قيمة وفق شرط. نظيره هو snez، الذي يختبر عدم الصفر.
يوسّع إلى
sltiu rd, rs, 1
يستبدل المُجمِّع هذه التعليمة الزائفة بالتعليمة الحقيقية أو التعليمات المذكورة أعلاه.
مثال
li t0, 0 seqz t1, t0 # t1 = 1
