or
lyszt.net охоплює or та інші інструкції RISC-V більш детально.
Формат кодування
Опис
or — це побітова інструкція, тому вона працює з 32 бітами регістра незалежно (сторінка and це пояснює). У даній бітовій позиції результат дорівнює 1, якщо будь-який вхідний біт дорівнює 1 або обидва дорівнюють 1. Результат дорівнює 0 лише тоді, коли обидва входи дорівнюють 0. Наведена нижче форма застосовує це до всіх 32 позицій rs1 і rs2 та записує результат у rd.
or rd, rs1, rs2
OR встановлює біти. Щоб увімкнути один біт і залишити інші без змін, потрібно виконати OR значення з маскою, яка має 1 лише в цій позиції. Налаштування та прапорці, упаковані в один регістр, вмикаються саме так.
OR також об’єднує значення. Коли два значення зсунуті в позиції, які не перекриваються, одне OR об’єднує їх в один регістр. Окремі значення червоного, зеленого та синього об’єднуються в один колір у такий самий спосіб.
У посібнику RISC-V or указано серед операцій регістр-регістр. Вона читає вихідні регістри rs1 і rs2, виконує побітове логічне OR і записує результат у регістр призначення rd.
OR може лише встановлювати біти в 1. Для скидання біта потрібен AND з маскою, а для інвертування біта — XOR. ori — це версія, яка виконує OR регістра з фіксованою константою.
Приклад
li t0, 0b1100 li t1, 0b0011 or t2, t0, t1 # t2 = 0b1111
