Ранее, для того чтобы не маскировать сигналы, отвечающие за изменение
архитектурного состояния процессора, инструкция исполнялась до конца, а
уже после происходил перехват инструкции с записью в mepc следующего
значения PC.
Однако по спецификации, в mepc должен попадать адрес перехватываемой
инструкции (важно для проверки обработки исключений).
Таким образом, логика перехвата была изменена: маскируются все
управляющие сигналы, а в mepc записывается адрес текущей инструкции.
Поскольку в методичке в явном виде сказано назначить illegal_instr
значение 1 при инструкциях ecall/ebreak, данное поведение было
отраежено и в таблице с описанием инструкций.
Предыдущая реализация не выполняла требование спецификации по обнулению
младшего бита суммы, используемой в качестве нового значения
программного счетчика.
Подробнее см. RISC-V Unprivileged ISA V20191213 стр. 21
Closes#12
В программе осуществлялся невыровненный доступ в память, использовался
непонятный лейбл, инструкция ветвления прыгала на следующую инструкцию,
что затруднит проверку результата ветвления.
В микроархитектуре была ошибка с генерацией разрешения записи в
регистровый файл.