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
