xor

xor

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

يغطي lyszt.net xor وتعليمات 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

الوصف

xor هي تعليمة على مستوى البتات. مثل and وor، تعمل على المواضع الـ 32 للسجل (تغطي صفحة and العمليات على مستوى البتات). الاسم يرمز إلى exclusive OR. في كل موضع، تكون النتيجة 1 عندما تختلف بتتا الإدخال، إحداهما 0 والأخرى 1، وتكون 0 عندما تتطابقان. يطبّق النموذج أدناه ذلك على rs1 وrs2 ويكتب النتيجة في rd.

xor rd, rs1, rs2

هناك خاصيتان تجعلان XOR مفيدة. القيمة عند إجراء XOR مع نفسها تعطي 0، لأن كل بت يطابق نفسه، لذا يعيّن السطر التالي سجلاً إلى الصفر.

xor t0, t0, t0

XOR مع قناع يقلب البتات حيث يكون القناع 1 ويترك الباقي دون تغيير. القلب مرتين يعيد القيمة الأصلية. يعتمد التشفير البسيط وفحوص الأخطاء على ذلك.

كذلك يختبر XOR التساوي. بعد السطر أدناه، يكون t2 صفراً عندما يكون الإدخالان متطابقين وغير صفري عندما يختلفان، ويمكن لتفريعة اختبار النتيجة.

xor t2, t0, t1

يسرد دليل RISC-V الأمر xor ضمن عمليات سجل-سجل، التي تقرأ rs1 وrs2 وتكتب النتيجة في rd. وهو ينفذ OR منطقياً حصرياً على مستوى البتات.

يمسح المثال t0 إلى 0 أياً كان ما يحمله سابقاً. وتفعل التعليمة li (load immediate) مع الثابت صفر الشيء نفسه.

مثال

xor t0, t0, t0   # t0 = 0