Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Формальное описание учебной машины





При описании архитектуры учебной ЭВМ на естественном языке многие вопросы остались нераскрытыми. Что, например, будет после выполнения команды из ячейки с адресом 511? Какое значение после нажатия кнопки ПУСК имеют ячейки, расположенные вне введённой программы? Как представляются целые и вещественные числа? Для ответа на почти все такие вопросы мы приведём формальное описание нашей учебной машины. В качестве метаязыка мы будем использовать Турбо-Паскаль, на котором Вы работаете. Другими словами, мы напишем программу, выполнение которой моделирует работу нашей учебной машины, т.е. наша машина, по определению, работает ²почти так же², как и написанная нами программа на Паскале.

Ниже приведена реализация учебной машины на языке Турбо-Паскаль:

 

program УМ_3(input, output);

Const

N = 511;

Type

Address = 0..N;

Tag = (kom, int, fl); {В машинном слове может хранится команда, целое

или вещественное число}

Komanda = packed record

KOP: 0..31;

A1, A2, A3: Address;

end;

Slovo = packed record

case Tag of

kom: (k: Komanda);

int: (i: LongInt)

fl: (f: Single);

End

Memory = array [0..N] of Slovo;

Var

Mem: Memory;

S, R1, R2: Slovo; {Регистры АЛУ}

RK: Komanda; {Регистр команд}

RA: Address; {Счётчик адреса}

Om: 0..2; {Регистр w}

Err: Boolean;

Begin

Input_Program; {Эта процедура должна вводить текст программы с устройства

ввода в память по кнопке ПУСК}

Om:= 0; Err:= False; RA:= 1; {Начальная установка регистров}

with RK do

repeat {Основной цикл выполнения команд}

RK:= Mem[RA].k;

RA:= (RA+1) mod (N+1);

case KOP of {Анализ кода операции}

00: { ПЕР }

begin R1:= Mem[A3]; Mem[A1]:= R1 end;

01: { СЛВ }

Begin

R1:= Mem[A2]; R2:= Mem[A3]; S.f:= R1.f + R2.f;

if S.f = 0.0 then OM:= 0 else

if S.f < 0.0 then OM:= 1 else OM:= 2;

Mem[A1]:= S; { Err:=? }

end;

09: { БЕЗ }

RA:= A2;

24: { МОД }

Begin

R1:= Mem[A2]; R2:= Mem[A3];

if R2.i = 0 then Err:= True else begin

S.i:= R1.i mod R2.i; Mem[A1]:= S;

if S.i = 0 then OM:= 0 else

if S.i < 0 then OM:= 1 else OM:= 2;

End

end;

13: { СТОП };

{ Реализация остальных кодов операций }

Else

Err:= True;

end; { case }

until Err or (KOP = 31)

end.

 

Для хранения машинных слов мы описали тип Slovo, который является записью с вариантами языка Турбо-Паскаль. В такой записи на одном и том же месте памяти могут располагаться команды, длинные (32-битные) целые числа или же 32-битные вещественные числа типа Single. [4]

Наша программа ведёт себя почти так же, как учебная машина. Одно из немногих мест, где это поведение расходится, показано в тексте программы, например, при реализации команды сложения вещественных чисел. Программа на Паскале при переполнении (когда результат сложения не помещается в переменную S) производит аварийное завершение программы, а учебная машина просто присваивает регистру Err значение 1. Наше формальное описание отвечает и на вопрос о том, как в учебной машине представляются целые и вещественные числа: точно так же, как в переменных на Паскале. Это представление мы изучим в нашем курсе несколько позже.

Заметим также, что память учебной машины как бы замкнута в кольцо: после выполнения команды из ячейки с адресом 511 (если это не команда перехода) следующая команда будет выполняться из ячейки с адресом ноль. Такая организация памяти типична для многих современных ЭВМ.







Date: 2015-10-18; view: 440; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию