xor
lyszt.net охватывает xor и другие инструкции RISC-V более подробно.
Формат кодирования
Описание
xor — это побитовая инструкция. Как и and и or, она работает с 32 позициями регистра (страница and описывает побитовые операции). Название означает исключающее ИЛИ. В каждой позиции результат равен 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. Она выполняет побитовое логическое исключающее ИЛИ.
Пример обнуляет t0 до 0 независимо от того, что в нём было раньше. Инструкция li (load immediate) с константой ноль делает то же самое.
Пример
xor t0, t0, t0 # t0 = 0
