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