OPDLab4/Pass

This commit is contained in:
LeterZP
2026-04-24 01:10:46 +03:00
parent ad863a274a
commit ac3927c31a
3 changed files with 50 additions and 4 deletions
+5 -4
View File
@@ -76,7 +76,7 @@
- Также можно передавать аргументы для подпрограммы и используя регистры общего назначения (к сожалению, в БЭВМ он только один, и это AC).
- Третьим способом будет использование косвенной адресации. Для этого сразу под командой CALL можно указать заранее определённое подпрограммой количество аргументов. При этом в самой подпрограмме можно выгрузить вершину стека (которая в тот момент времени будет являться адресом первого аргумента), а после косвенной адресацией (а точнее, косвенной постинкрементацией) загрузить и использовать эти аргументы в подпрограмме. Далле остаётся только обратно загрузить уже увеличенное значение возврата подпрограммы, и программа начнет выполнение команд, которые идут уже после аргументов.
- Третьим способом будет использование косвенной адресации. Для этого сразу под командой CALL можно указать заранее определённое подпрограммой количество аргументов. При этом в самой подпрограмме можно выгрузить вершину стека (которая в тот момент времени будет являться адресом первого аргумента), а после косвенной адресацией (а точнее, косвенной постинкрементацией) загрузить и использовать эти аргументы в подпрограмме. Далее остаётся только обратно загрузить уже увеличенное значение возврата подпрограммы, и программа начнет выполнение команд, которые идут уже после аргументов.
## Команды
@@ -176,10 +176,11 @@
- По спаду запишет это значение в регистр состояния.
- 4 такт: **MEM(AR) -> DR**
- 4 такт: **SP + 1 -> SP**
- По фронту находит по адресу ячейку.
- По спаду записывает значение этой ячейки в регистр данных.
- По фронту пустит значение указателя стека в АЛУ и прибавит 1.
- По спаду запишет полученное значение в указатель стека.
*Флаги, соответственно, возьмутся из регистра состояния.*