ЛР 6 для ИВТ. Проблемы с регистром mie и инструкцией mret в RARS #28
-
При использовании RARS - инструмента, который умеет работать с инструкциями для CSR, обнаружила проблему, что он воспринимает сами инструкции, но не воспринимает регистры mie, mtvec и тд. Если в данной программе справа открыть список регистров(Control and Status), то можно увидеть utvec, uim и тд(User). Заходила в HELP->exception там тоже не нашла решение(тоже примеры в user режиме). В лабораторной было сказано про переключение между режимами с помощью специальной инструкции ecall. Код: li t0, 0x00000028 Error: "mie": operand is of incorrect type |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 7 replies
-
Что касается ответа на вопрос, то попробуй использовать не названия регистров, а их адреса. csrw 0x304, t0 Вроде бы сначала идет адрес CSR, а потом адрес регистра в регистровом файле. Напиши, пожалуйста, получалось ли |
Beta Was this translation helpful? Give feedback.
-
Также сохраняются проблемы с использованием инструкции mret, которую ассемблер не воспринимает как инструкцию |
Beta Was this translation helpful? Give feedback.
-
Простите, заметила, что команда assemble в RARS действительно выполняется, но при "компиляции" всё равно возникает ошибка и дальше первой инструкции, которая работает с машинными csr не компилирует дальше. В окне messages: |
Beta Was this translation helpful? Give feedback.
ecall
нужен для вызовы исключения (exception - синхронного события), которое переведет процессор в режим работы операционной системы (у нас такое не поддерживается). Проecall
в качестве справки дано.Что касается ответа на вопрос, то попробуй использовать не названия регистров, а их адреса.
Вроде бы сначала идет адрес CSR, а потом адрес регистра в регистровом файле.
Напиши, пожалуйста, получалось ли