Я пишу свой собственный компилятор (пишу в python, вывод - псевдосборка), и я столкнулся с проблемой, которую не могу решить.
Я хочу создать структуру таблицы, используя только ячейки памяти и без регистров. Я могу выделить достаточно места, учитывая объявление, но я не знаю, как сослаться на tab(x)
place.
У меня есть команда STOREN n
, которая хранит основную память (которая y_{0}
для y_{y_{n}}
) и LOADN n
, что делает обратное, так: y_{0}
<- <code>y_{y_{n}}.
Кроме этого, у меня есть
- "STORE n"
y_{n} <- y_{0}
- "LOAD n"
y_{0} <- y_{n}
- IN C
y_{0} += 1
- DE C
y_{0} -= 1
- "ADD n "
y_{0} += y_{n}
- " SUB n "
y_{0} -= y_{n}
- " JUMP k "(переход на другую строку, записаны все условия <,>, =,! =, =>, <= ) </li>
- ^ выше условных переходов работают +
JPOS k
JZERO k
JNEG k
, который переходит на k
, если число поз / ноль / отрицание в y_{0}
Я уже Создана функция для настройки пользовательского значения в ячейке памяти и для управления циклами. Допустим, я храню итератор для y_1, fromVal для y_2 и toVal для y_3, и выделил ячейки памяти от 4 до 104 для вкладки таблицы (1: 100). А теперь с учетом этого ввода ...
let tab(1:100)
let x = 1
for i = 1 to 100:
tab(i) = x
... как я могу написать python код, который выводит правильные инструкции для выполнения sh кода выше в этом псевдо-ассемблерном коде? Я действительно больше не надеюсь и не знаю, как написать правильную функцию управления таблицами, которая могла бы выполнить задачу, как в приведенном выше примере кода.