Chapter_03 (1110555), страница 4
Текст из файла (страница 4)
язык, правильные слова в котором являются записями алгоритмов для некоторого исполнителя.1000: { ПЕР }begin R1 := Mem[A3]; Mem[A1] := R1 end;01: { СЛВ }beginR1 := Mem[A2]; R2 := Mem[A3]; S.f := R1.f + R2.f;if S.f = 0.0 then OM := 0 elseif S.f < 0.0 then OM := 1 else OM := 2;Mem[A1] := S; { Err := ? }end;09: { БЕЗ }RA := A2;15: { МОД }beginR1 := Mem[A2]; R2 := Mem[A3];if R2.i = 0 then Err := True else beginS.i := R1.i mod R2.i; Mem[A1] := S;if S.i = 0 then OM := 0 elseif S.i < 0 then OM := 1 else OM := 2;endend;31: { СТОП } ;{ Реализация остальных кодов операций }elseErr := True;end; { case }until Err or (KOP = 31)end.Прокомментируем эту программу, описывающую работу учебной машины. Отметим сначала,что некоторая трудность возникает при моделировании начального ввода программы в память учебной машины при нажатии кнопки ПУСК.
В нашей модели для задания такого начального ввода мыиспользовали вызов процедуры с именем Input_Program, описание этой процедуры не приводится.1Для хранения машинных слов учебной машины мы описали тип данных Slovo, который является записью с вариантами языка Турбо-Паскаль. В такой записи на одном и том же месте памятимогут располагаться команды, длинные (32-битные) целые числа или же 32-битные вещественныечисла стандартного типа Single.2 Таким образом, этот тип данных позволяет нам реализовать впрограмме на Паскале неразличимость представления команд, целых и вещественных чисел учебноймашины.Наша программа ведёт себя почти так же, как учебная машина. Одно из немногих мест, где этоповедение расходится, показано в тексте программы комментариями с вопросительным знаком, например, при реализации команды сложения вещественных чисел.
Программа на Паскале при переполнении (когда результат сложения не помещается в переменную S) просто производит аварийноезавершение программы, а учебная машина сначала присваивает регистру Err значение 1, а затем(неаварийно) останавливает выполнение программы.Заметим, что наше формальное описание отвечает и на вопрос о том, как в учебной машинепредставляются целые и вещественные числа: точно так же, как в переменных соответствующих типов программы на Турбо-Паскале. Это представление мы подробно изучим в нашем курсе несколькопозже.В нашей модели мы привели реализацию выполнение только некоторых типичных команд изязыка учебной машины.
Реализацию остальных команд Вы легко можете выполнить сами.1В архитектуре ЭВМ принято выделять центральную часть, куда входит основная (оперативная) память ицентральный процессор. Вся остальная аппаратура ЭВМ относится к так называемой периферии (периферийным устройствам). Таким образом, наша модель на Паскале формально описывает только центральную частьучебной машины.2Более привычный для программистов тип real Турбо-Паскаля здесь не подходит, потому что имеетдлину 48 бит, а не 32 бита, как нам нужно.11Обратите также внимание, как в нашей модели вычисляется адрес следующей выполняемой команды: RA: = (RA+1) mod (N+1) . Такое правило перехода к следующей по порядку командепрограммы позволяет считать, что память учебной машины как бы замкнута в кольцо: после выполнения команды из ячейки с адресом 511 (если это не команда перехода) следующая команда будетвыполняться из ячейки с адресом ноль.
Такая организация памяти типична для многих современныхЭВМ.Вопросы и упражнения1.2.3.4.5.6.7.8.9.10.Что такое код операции?Для чего необходим регистр признака результата?Объясните, как в нашей учебной машине должна выполняться такая команда ввода массивавещественных чисел ВВВ 100 500 000 . Напишите соответствующую ветвь в формальномописании УМ-3 для реализации команды ввода вещественных чисел.Реализуйте в модели на Паскале выполнение команд ввода/вывода учебной машины.Почему при программировании на языке машины не существуют константы, как, например, вязыке Паскаль?Что такое переменная с начальным значением и как такую переменную разместить в памятиучебной ЭВМ?Что такое псевдокод?Объясните, почему для машины УМ-3 при решении некоторой задачи нельзя сделать такоераспределение памяти: "Пусть массив X располагается в ячейках с адресами от 100 до 199, аконстанта n=100 – в ячейке с адресом 200" ?Что такое самомодифицирующаяся программа?Почему в учебной машине УМ-3 обработка больших массивов возможна только при помощисамомодифицирующейся программы?.