Ну это нормальный известный вариант – хранить представление кода в тетрадах. В основном, правда, так делают в компиляторах на промежуточном этапе, а не в виртуальных машинах, так как трёхадресная структура команды приводит к лишним издержкам на декодирование и обращение к оперативной памяти. Но для демонстрации технологии потянет. Вы же не собираетесь, наверное, ставить рекорды производительности.
с одной особенностью ввиде того что можно создать несколько одинаковых по номеру переменных но с разным значение,но чтение/изменение видит только первую из них
Это размещение в памяти типа controlled, практиковалось в качестве возможного варианта в языке PL/I.