mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
ЛР10. Обновление обновление комментариев в листинге программы
This commit is contained in:
@@ -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);
|
||||
|
||||
# ОБРАБОТЧИК ПРЕРЫВАНИЯ
|
||||
# Без стороннего вмешательства процессор никогда не перейдет
|
||||
|
Reference in New Issue
Block a user