rmachine це симулятор регістр машина (складність теорія версія), програмуються в Python, в комплекті з модулем для використання в ваших програмах та (PyQt4) GUI.
Машина ("ОЗУ") дорівнює машин Тьюринга в computional влади. Він має теоретично необмежену пам'ять (але обмежений у практиці пам'яті комп'ютера).
Це тренажер для регістрів машин (складність теорія версія). Ось короткий вступ.
Машина ("ОЗУ") дорівнює машинах Тьюрінга в computional влади. Він має теоретично необмежену пам'яті (на практиці обмежується вашого комп'ютера пам'яті). Осередки пам'яті ("регістри") може зберігати цілі числа> = 0 будь-якої довжини. Скажіть 5 реєстр містить ряд 42. Ви написали б його як С (5) = 42. с (0) називається також "асемблер" і відіграє важливу роль, як ви побачите пізніше.
Оперативна пам'ять також має лічильник програма, б Initally значення 1, а в основному, представляє наступний рядок, яка буде виконана.
Структура типової програми виглядає наступним чином:
# Коментарі йти тут
# Більше коментарів
ВХІД 4 червня 9 серпня
(Інструкція йти сюди)
КІНЕЦЬ
Лінія "ВХІД" має бути знайдено відразу після коментарів. Вхідний сигнал буде поміщений в C (1), C (2) і т.д. У цьому прикладі, з (1) = 4, C (2) = 6, C (3) = 8, C (4) = 9.
Тепер, з усім, що, от набір інструкцій. Перший рядок сама інструкція, 2-а лінія, пояснює, що він робить.
-
НАВАНТАЖЕННЯ я
C (0): = C (I), B: = B + 1
-
Cload я
C (0): = I, B: = B + 1
-
INDLOAD я
C (0): = С (С (I)), B: = B + 1
-
МАГАЗИН я
C (I): = C (0), B: = B + 1
-
INDSTORE я
С (С (I)): = C (0), B: = B + 1
-
ДОДАТИ I
C (0): = C (0) + C (I), B: = B + 1
-
САПР я
C (0): = C (0) + я, б: = Ь + 1
-
INDADD я
C (0): = C (0) + C (C (I)), B: = B + 1
-
SUB я
C (0): = макс (C (0) - C (I), 0), B: = B + 1
-
Csub я
C (0): = макс (C (0) - I, 0), B: = B + 1
-
INDSUB я
C (0): = макс (C (0) - C (C (I)), 0), B: = B + 1
-
MUL я
с (0): = C (0) * C (я), б: = Ь + 1
-
CMUL я
с (0): = C (0) * я, б: = Ь + 1
-
INDMUL я
C (0): = C (0) * С (С (I)), B: = B + 1
-
DIV я
C (0): = C (0) / C (I), B: = B + 1
Примітка: десяткові будуть відрізані
-
CDIV я
C (0): = C (0) / I, B: = B + 1
Примітка: десяткові будуть відрізані
-
INDDIV я
C (0): = C (0) / С (С (I)), B: = B + 1
Примітка: десяткові будуть відрізані
-
GOTO я
B: = я
-
Якщо X л GOTO я
Х може бути одним з тих:
B: = я, якщо (з (0) X л) справедливо
(Докладніше неофіційно, "ЯКЩО <5 GOTO 10" буде встановлений б = 10, якщо з (0)
Вимоги
- Python
- PyQt4
Коментар не знайдено