
Да, в этой практике вы будете делать простой интерпретатор ассемблера, так как польский калькулятор и геометрические фигуры - заезженные и унылые задания (хотя мем про Квадрат и Прямоугольник неиллюзорно доставляет преподавателям и студентам).
Чтобы ответить на этот вопрос нам нужно понять из чего состоит код программы на ассемблере:
; Программа считает значение факториала числа из регистра r0.
; Результат вычисления будет в регистре r1
mov r0 5 ; положили в регистр r0 число 5
mov r1 1 ; положили в регистр r1 число 1
mul r1 r0 ; умножили cодержимое регистра r1 на r0, а результат положили в r1
add r0 -1 ; сложили содержимое r0 и числа -1, а результат положили в r0
cmp r0 0 ; сравнили содержимое r0 с числом 0, результат сравнения лежит в специальном регистре f0
jgr -4 ; если в регистре f0 лежит 1, тогда прыгаем на 4 строчки назад иначе просто выполняем код дальше
; EOF. В r1 лежит факториал r0.
Как мы видим, есть следующие сущности:
r0, r1, f0и другие) (список регистров настоящего ARM для справки https://azeria-labs.com/arm-data-types-and-registers-part-2/)mov, mul, add, cmp, jgr и другие)42)Я бы выделил следующие сущности в терминах языка программирования:
IValue - интерфейс иммутабельной сущности. Например, литерал.IMutableValue - интерфейс мутабельной сущности. Например, регистр.IOperation - интерфейс любой операции.