ЛР10. Обновление обновление комментариев в листинге программы

This commit is contained in:
Andrei Solodovnikov
2023-11-14 19:45:46 +03:00
parent f5dce97e58
commit 12ed407140

View File

@@ -246,27 +246,30 @@ _Рисунок 4. Структурная схема контроллера пр
```asm
_start:
# Инициализируем начальные значения регистров
li sp, 0x00003FFC # устанавливаем указатель на верхушку стека
li gp, 0x00000000 # устанавливаем указатель на глобальные данные
li sp, 0x00003FFC # устанавливаем указатель на верхушку стека
# данная псевдоинструкция будет разбита на две
# инструкции: lui и addi
li t0, 0x00000001 # подготавливаем маску прерывания единственного
# (нулевого) входа
csrw mie, t0 # загружаем маску в регистр маски
li gp, 0x00000000 # устанавливаем указатель на глобальные данные
la t0, interrupt # псевдоинструкция la аналогично li загружает число,
# только в случае la — это число является адресом
# указанного места (адреса обработчика перехвата)
li t0, 0x00000001 # подготавливаем маску прерывания единственного
# (нулевого) входа
csrw mie, t0 # загружаем маску в регистр маски
csrw mtvec, t0 # устанавливаем вектор прерывания
la t0, interrupt # псевдоинструкция la аналогично li загружает число,
# только в случае la — это число является адресом
# указанного места (адреса обработчика перехвата)
li t0, 0x00001FFC # готовим адрес верхушки стека прерывания
csrw mscratch, t0 # загружаем в указатель на верхушку стека прерывания
csrw mtvec, t0 # устанавливаем вектор прерывания
li t0, 1 # начальное значение глобальной переменной
sw t0, 0(gp) # загружаем переменную в память
li t0, 0x00001FFC # готовим адрес верхушки стека прерывания
csrw mscratch, t0 # загружаем в указатель на верхушку стека прерывания
li t1, 0 # начальное значение, чтобы в симуляции не было xxx
li t2, 0 # начальное значение, чтобы в симуляции не было xxx
li t0, 1 # начальное значение глобальной переменной
sw t0, 0(gp) # загружаем переменную в память
li t1, 0 # начальное значение, чтобы в симуляции не было xxx
li t2, 0 # начальное значение, чтобы в симуляции не было xxx
# Вызов ecall исключительно из хулиганских соображений,
# поскольку в данной микроархитектурной реализации это
@@ -275,7 +278,7 @@ li t2, 0 # начальное значение, чтобы в
ecall
# Вызов функции main
main:
beq x0, x0, main # бесконечный цикл, аналогичный while (1);
beq x0, x0, main # бесконечный цикл, аналогичный while (1);
# ОБРАБОТЧИК ПРЕРЫВАНИЯ
# Без стороннего вмешательства процессор никогда не перейдет