ori

ori

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

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

الوصف

يُنفّذ ori عملية OR على مستوى البتات مع ثابت. علاقته بـ or تطابق علاقة andi بـ and. الحرف i يعني immediate، أي قيمة ثابتة مُضمَّنة في التعليمة. يُجري ori عملية OR بين سجل وهذا الثابت بدلاً من إجراء OR بين سجلين. قاعدة OR لا تتغير. تكون أي بتة في النتيجة مساوية لـ 1 عندما تكون أي من البتتين في ذلك الموضع مساوية لـ 1، لذا يضبط الثابت البتات التي تختارها. تغطي صفحة or هذه العملية.

يظهر شكل ori أدناه. يُجري عملية OR بين القيمة الموجودة في rs1 والثابت imm ويكتب النتيجة في rd.

ori rd, rs1, imm

تضبط عملية OR بتات معينة وتترك الباقي كما كان، لذا يُشغّل ori أعلاماً محددة عندما تعرف أيها تريد. يُشغّل السطر التالي البتة الثالثة من اليمين في t0 ويترك جميع البتات الأخرى دون تغيير. تشير البادئة 0b إلى ثابت ثنائي.

ori t0, t0, 0b100

تحتوي سجلات التهيئة وأعلام الأذونات وكلمات الحالة على بتات تشغيل وإيقاف مستقلة، ويُشغّل ori البتات المختارة منها في تعليمة واحدة دون سجل قناع.

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

يقتصر الثابت على 12 بتة، كما هو الحال مع andi وaddi. لضبط بتات خارج هذا النطاق، حمّل القناع الأوسع في سجل باستخدام li ثم استخدم or.

مثال

li t0, 0
ori t1, t0, 0xf   # t1 = 0xf