xori

xori

تجميع RISC-V مرجع

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

تنسيق الترميز

R
31–25funct7
24–20rs2
19–15rs1
14–12funct3
11–7rd
6–0opcode
I
31–20imm[11:0]
19–15rs1
14–12funct3
11–7rd
6–0opcode
S
31–25imm[11:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:0]
6–0opcode
B
31–25imm[12,10:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:1,11]
6–0opcode
U
31–12imm[31:12]
11–7rd
6–0opcode
J
31–12imm[20,10:1,11,19:12]
11–7rd
6–0opcode

الوصف

xori ينفذ عملية XOR على مستوى البت مع ثابت. جنبًا إلى جنب مع andi و ori، فإنه يكمل تعليمات المنطق الفورية. الحرف i يعني فوري (immediate): قيمة ثابتة مُشفَّرة في التعليمة، لذا لا حاجة إلى سجل ثانٍ. يُنتج XOR القيمة 1 عند موضع بت عندما يختلف البتان (انظر صفحة xor). عند إعطاء قناع ثابت، فإن 1 في القناع يقلب البت المقابل و 0 يترك ذلك البت دون تغيير.

تظهر صيغة xori أدناه. إنه ينفذ XOR على القيمة في rs1 مع الثابت imm ويكتب النتيجة في rd.

xori rd, rs1, imm

andi يمسح البتات المحددة، و ori يضبطها، و xori يعكسها. عكس القيمة مرتين يعيد القيمة الأصلية.

يوفر xori أيضًا التعليمة not. قلب جميع بتات قيمة يعني XOR مع قناع من كل الآحاد، و not هو اختصار للسطر أدناه، لأن -1 في البتات هو كل الآحاد. لا تمتلك RISC-V تعليمة مخصصة تعكس كل بت.

xori rd, rs, -1

يذكر دليل RISC-V أن القيمة الفورية ذات 12 بت تُوسَّع إشارتها إلى 32 بت قبل العملية، لذا يصبح الثابت -1 قناعًا من كل الآحاد. وهو يدرج xori مع الثابت -1 كعكس منطقي على مستوى البت لسجل، وهو التعليمة الزائفة not.

من الاستخدامات الصغيرة الشائعة تبديل قيمة نعم أو لا محفوظة كـ 0 أو 1. السطر التالي يبدّلها إلى الحالة الأخرى كلما تم تشغيله.

xori t0, t0, 1

الثابت محدود بـ 12 بت. للأنماط الأوسع، حمّل القناع في سجل واستخدم xor.

مثال

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