mirror of
https://github.com/MPSU/APS.git
synced 2025-09-16 09:40:10 +00:00
ЛР10. Обновление обновление комментариев в листинге программы
This commit is contained in:
@@ -246,27 +246,30 @@ _Рисунок 4. Структурная схема контроллера пр
|
|||||||
```asm
|
```asm
|
||||||
_start:
|
_start:
|
||||||
# Инициализируем начальные значения регистров
|
# Инициализируем начальные значения регистров
|
||||||
li sp, 0x00003FFC # устанавливаем указатель на верхушку стека
|
li sp, 0x00003FFC # устанавливаем указатель на верхушку стека
|
||||||
li gp, 0x00000000 # устанавливаем указатель на глобальные данные
|
# данная псевдоинструкция будет разбита на две
|
||||||
|
# инструкции: lui и addi
|
||||||
|
|
||||||
li t0, 0x00000001 # подготавливаем маску прерывания единственного
|
li gp, 0x00000000 # устанавливаем указатель на глобальные данные
|
||||||
# (нулевого) входа
|
|
||||||
csrw mie, t0 # загружаем маску в регистр маски
|
|
||||||
|
|
||||||
la t0, interrupt # псевдоинструкция la аналогично li загружает число,
|
li t0, 0x00000001 # подготавливаем маску прерывания единственного
|
||||||
# только в случае la — это число является адресом
|
# (нулевого) входа
|
||||||
# указанного места (адреса обработчика перехвата)
|
csrw mie, t0 # загружаем маску в регистр маски
|
||||||
|
|
||||||
csrw mtvec, t0 # устанавливаем вектор прерывания
|
la t0, interrupt # псевдоинструкция la аналогично li загружает число,
|
||||||
|
# только в случае la — это число является адресом
|
||||||
|
# указанного места (адреса обработчика перехвата)
|
||||||
|
|
||||||
li t0, 0x00001FFC # готовим адрес верхушки стека прерывания
|
csrw mtvec, t0 # устанавливаем вектор прерывания
|
||||||
csrw mscratch, t0 # загружаем в указатель на верхушку стека прерывания
|
|
||||||
|
|
||||||
li t0, 1 # начальное значение глобальной переменной
|
li t0, 0x00001FFC # готовим адрес верхушки стека прерывания
|
||||||
sw t0, 0(gp) # загружаем переменную в память
|
csrw mscratch, t0 # загружаем в указатель на верхушку стека прерывания
|
||||||
|
|
||||||
li t1, 0 # начальное значение, чтобы в симуляции не было xxx
|
li t0, 1 # начальное значение глобальной переменной
|
||||||
li t2, 0 # начальное значение, чтобы в симуляции не было xxx
|
sw t0, 0(gp) # загружаем переменную в память
|
||||||
|
|
||||||
|
li t1, 0 # начальное значение, чтобы в симуляции не было xxx
|
||||||
|
li t2, 0 # начальное значение, чтобы в симуляции не было xxx
|
||||||
|
|
||||||
# Вызов ecall исключительно из хулиганских соображений,
|
# Вызов ecall исключительно из хулиганских соображений,
|
||||||
# поскольку в данной микроархитектурной реализации это
|
# поскольку в данной микроархитектурной реализации это
|
||||||
@@ -275,7 +278,7 @@ li t2, 0 # начальное значение, чтобы в
|
|||||||
ecall
|
ecall
|
||||||
# Вызов функции main
|
# Вызов функции main
|
||||||
main:
|
main:
|
||||||
beq x0, x0, main # бесконечный цикл, аналогичный while (1);
|
beq x0, x0, main # бесконечный цикл, аналогичный while (1);
|
||||||
|
|
||||||
# ОБРАБОТЧИК ПРЕРЫВАНИЯ
|
# ОБРАБОТЧИК ПРЕРЫВАНИЯ
|
||||||
# Без стороннего вмешательства процессор никогда не перейдет
|
# Без стороннего вмешательства процессор никогда не перейдет
|
||||||
|
Reference in New Issue
Block a user