Giter Site home page Giter Site logo

um_3's Introduction

UM-3

Реализация учебной машины трёхадресной

Исходная программа на языке УМ3 записывается на перфокарту (punched_card.txt).
Программа состоит из команд (одна на одну строку), написанных в мнемоническом коде:

<address> <command> <op1> <op2> <op3> [; <комментарий>]

Где:

<address> - целое число от 0 до 511, номер ячейки памяти, в который будет записана команда.

<op1>, <op2>, <op3> (по 9 бит) - целые числа от 0 до 511, чаще всего определяют адреса операндов,
но также по принципу неразличимости команд и данных могут представлять число в 512-чной системе счисления
(если <command> = 0, то из 3 цифр, иначе с 4-ой цифрой <= 31).

<command>(5 бит) - целое число от 0 до 31 или название команды, определяет выполняемую команду.

Список доступных команд:
0 или "MOV": отправляет содержимое ячейки с адресом op3 в ячейку с адресом op1

Считается, что в ячейках вещественные числа
1 или "ADDREAL": <op1> := <op2> + <op3>
2 или "SUBREAL": <op1> := <op2> - <op3>
3 или "MULREAL": <op1> := <op2> * <op3>
4 или "DIVREAL": <op1> := <op2> / <op3>
6 или "INREAL" : вводит из консоли op2 чисел в ячейки с адресами <op1>, <op1 + 1>, ... , <op1 + op2 - 1>
7 или "OUTREAL": выводит числа в консоль, из тех же адресов, что и в "INREAL"

9 или "JUMP": безусловный переход на команду по адресу op2, RA := op2

10 или "RTOI": преобразование типа из вещесвтенного в целый, <op1> := longint(<op3>)

Считается, что в ячейках целые знаковые числа
11 или "ADDINT": <op1> := <op2> + <op3>
12 или "SUBINT": <op1> := <op2> - <op3>
13 или "MULINT": <op1> := <op2> * <op3>
14 или "DIVINT": <op1> := <op2> div <op3>
15 или "MOD" : <op1> := <op2> mod <op3>
16 или "ININT" : ввод и вывод аналогичны вещественным числам
17 или "OUTINT"

19 или "IF" : команда условного перехода, зависит от значения omega: 0, RA := op1; 1, RA := op2; 2, RA := op3
20 или "PR" : if omega = 0 RA := op2 Переход Равно
21 или "PNR": if omega != 0 RA := op2 Переход Не Равно
22 или "PB" : if omega = 2 RA := op2 Переход Больше
23 или "PM" : if omega = 1 RA := op2 Переход Меньше
24 или "PBR": if omega != 1 RA := op2 Переход Больше Равно
25 или "PMR": if omega != 2 RA := op2 Переход Меньше Равно

30 или "ITOR": преобразование целого в вещественный, <op1> := real(<op3>)

31 или "END": выход из программы

Некоторые дополнения к УМ3

После выполнения программы в файл log.txt записывается список всех выполненых команд и небольшое описание,
а в файл memory.txt ячейки памяти, которые были задействованы во время программы.

При загрузке перфокарты в память будет выполнена проверка на корректность, которая с точностью до строки
и операнда сообщит тип синтаксической ошибки.

Во время выполнения программа будет сообщать о некоторых ошибках счета, таких как деление на ноль,
переполнение типа или менее фатальный некорректный ввод числа, который будет предложено исправить.

um_3's People

Contributors

leoqay avatar

Stargazers

Alexander avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.