Написать обработчик handler: прерывания по таймеру RARS Timer Tool, который по заданному интервалу переключает управление между N «параллельными» заданиями, а по прошествии определённого времени запускает ещё одно задание — финальное. Параллельные задания оформлены как вечные циклы, финальное вызывает ecall 10. Дополнительно написать подпрограмму boot:, которая принимает пять параметров:
- Адрес таблицы заданий
- Количество заданий (N)
- Адрес финального задания
- Время окончания работы (в милисекундах)
- Интервал переключения между заданиями (в милисекундах)
Подпрограмма boot: должна настраивать обработчик, включать прерывания и запускать первое задание.
- Таблица заданий — это массив из N адресов, с которых начинается выполнение
Задания пользуются только регистрами a*
Допустимо использовать в обработчике регистры t* без сохранения
К концу программы будет приписан footer. Пример footer для первого теста
Footer содержит глобальную метку main:; остальные имена в нём начинаются на символ «_»
Количество тактов в секунду у RARS дичайше плавает, так что сравнение происходит с точностью до целой части.
1000 3
Подсказка: контекст процесса, который надо сохранять и восстанавливать при переключении, — это uepc и регистры a*
1.0261073