Я застрял и не уверен в следующей ситуации.
У меня есть следующий цикл данных:
и я знаю, что в 0x3000 у меня есть следующая команда: beq $t1,$t2,home
- где home
- 0x30AC, $ t1 = $ t2 = 0x2000.
Почему-то я не могу перевести его в гекса с помощью онлайн-конвертеров. Команда, которую я попробовал: beq 0x2000, 0x2000, 0x30AC
. Поскольку синтаксис команды beq, насколько я знаю, таков: BEQ rs, rt, offset [I-type]
, то я не понимаю, почему она не работает.
В любом случае, моя главная проблема в следующих случаях:
- Если линия управления ALUSrc закреплена на 1, что будет делать команда?
- Если MemWrite зависает на 1, что будет делать команда?
- Если ALUOp застрянет на значении 10 (двоичное), что будет делать команда?
Что я думаю:
- Если alusrc равен единице, то младшие 16 бит будут взяты (с расширением знака) из команды и добавлены в $ rs (0x2000).
- Если Memwrite равен единице, то память данных будет записана неожиданно.
- Я действительно не знаю, что произойдет, если ALUop застрянет на 10. Буду очень признателен за объяснения этой ситуации.
Я старался как можно больше уточнить, чтобы сделать его понятным, а также изложить свои попытки и идеи (если они верны, надеюсь, что некоторые из них лол).