Использование MIPS «ни» в коде

В моем учебнике есть такие строки кода:

addu $t0, $t1, $t2
nor $t3, $t1, $zero
sltu $t3, $t3, $t2
bne $t3, $zero, Overflow

Я понимаю функцию addu, но когда я добираюсь до функции nor и всего остального после этого, я не понимаю, что она делает. В учебнике просто сказано, что t3 = дополнение 2 к t1 - 1 для второй строки, но я не понимаю, как это работает в двоичном формате. Будет ли он просто переключать все 0 на 1 и наоборот, а затем интерпретировать это как дополнение до 2, что приведет к отрицательному числу? Объяснение книги не имеет смысла для меня.


person saturdy    schedule 30.03.2015    source источник


Ответы (1)


Да, nor значение с $zero просто инвертирует все биты. Например, бинарное 101011 nor-ed с 0 приводит к двоичному 010100. Это также способ реализации псевдооператора ассемблера not.

person markgz    schedule 30.03.2015