Я изучаю ассемблер и выполняю ассемблерные вычисления, особенно инструкции MIPS для вычисления измененных регистров и адресов памяти.
Исходные состояния адреса здесь:
$ t0 = 0x0000000B, $ t1 = 0xFFFFFFFF, $ t2 = 0xABABABAC
Это код, который мы должны использовать для вычисления:addi $ t4, $ t0, -3.sub $ t4, $ t4, $ t1
Я рассчитал первое здесь:
добавить промежуточное значение $ t0 + (- 3) в $ t4 $ t4 = 0x0000000B - 0x00000003 (B = 11 в шестнадцатеричном)(11-3) 0x00000008 хранится в регистре $ t4.(8)
Для этого я вычислил его и вычел $ t4 - $ t1 в $ t4 $ t4 = 0x00000008 - 0xFFFFFFFF = -0x00000007
, но я не уверен, что этоправильно, потому что это отрицательный адрес памяти, так что он будет только положительным?Переключение (0xFFFFFFFF - 0x00000008 дает 0x00000007, но это неправильный порядок операций в коде, если я не ошибаюсь)
Кто-нибудь может объяснить, какой из них правильный?
Спасибо.