Да, в этой практике вы будете делать простой интерпретатор ассемблера, так как польский калькулятор и геометрические фигуры - заезженные и унылые задания (хотя мем про Квадрат и Прямоугольник неиллюзорно доставляет преподавателям и студентам).
Чтобы ответить на этот вопрос нам нужно понять из чего состоит код программы на ассемблере:
; Программа считает значение факториала числа из регистра 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
- интерфейс любой операции.